我想梳理一个 LDIF 文件以替换 28 个字符串。我有两个数组,一个用于查找,另一个用于替换项。
替换正在工作,但会在下一次迭代中被覆盖。我不知道如何保持现有文件完好无损,只更改需要替换字符串的行。
$find = @( "Code=2092",
"Code=3257",
"Code=3044",
"Code=3001"
)
$replace = @(
"|(Code=2092)(Code=9191)(Code=9192)(Code=9193)(Code=9194)",
"|(Code=3257)(Code=5581)(Code=5582)(Code=5583)(Code=5584)",
"|(Code=3044)(Code=5591)(Code=5592)(Code=5593)(Code=5594)",
"|(Code=3001)(Code=5601)(Code=5602)(Code=5603)(Code=5604)"
)
$filePath = 'C:\Users\tim\Codes\export.ldf'
$tempFilePath = 'C:\Users\tim\Codes\temp.ldf'
$i = $find.Length
Write-Output $i
for ($n = 0; $n -lt $i + 1; $n++)
{
(Get-Content -Path $filePath) | ForEach-Object {$_ -replace $find[$n], $replace[$n]} | Add-Content -Path $tempFilePath
Write-Output $n
Write-Output $i
}
Remove-Item -Path $filePath
Write-Output "Finished with Array"
Move-Item -Path $tempFilePath -Destination $filePath
样本输入是:
#This LDIF file
version: 1
dn:cn=DG-C-10292-718200,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=718200)(Code=10292)(!(State=Stale)))
dn:cn=DG-C-10325-764792,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Code=10325)(Reference=764792)(!(State=Stale)))
dn:cn=DG-C-10400-519400,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=519400)(Code=10400)(!(State=Stale)))
dn:cn=DG-C-10454-745581,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=745581)(Code=10454)(!(State=Stale)))
dn:cn=DG-C-10547-115900,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=115900)(Code=10547)(!(State=Stale)))
dn:cn=DG-C-10548-719708,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=719708)(Code=10548)(!(State=Stale)))
dn:cn=DG-C-10548-719715,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=719715)(Code=10548)(!(State=Stale)))
dn:cn=DG-C-10550-719700,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=719700)(Code=10550)(!(State=Stale)))
dn:cn=DG-C-10572-719714,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=719714)(Code=10572)(!(State=Stale)))
dn:cn=DG-C-10578-719700,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=719700)(Code=10578)(!(State=Stale)))
dn:cn=DG-C-10580-718600,OU=R,DC=ORG
changetype:add
QueryURL:ldap:///OU=Codes,DC=Org??one?(&(Reference=718600)(Code=10580)(!(State=Stale)))