此腳本旨在幫助從一個域遷移到另一個域。我正在尋找所有AD安全組,然後我拉出每個組的成員,並創建一個文本文件,其中包含該組的名稱和該組的成員。PowerShell中的最後一個foreach循環失敗,但之前的循環正常工作
然後我想要創建一組新的文本文件,以包含每個組的用戶MailNickName
字段中的信息,這稱爲它們的NID
(新ID)。我使用這個MailNickName
來存儲它們的NID
作爲新域名,所以我可以將NID
推送到新域中的適當組中。
在下面的腳本中,除了最後一個foreach循環外,其他所有的東西都可以工作,不知道爲什麼;它看起來是正確的,我已經在互聯網上搜索答案,但沒有理由爲什麼這不應該工作。
我沒有收到任何錯誤,但$b
變量最終與$iGroup
變量的值相同。此外,NID
的新文本文件從不創建。
$iScript = "GetADGroups"
$StrPath = "C:\Temp\$iScript"
$StrFile = "$StrPath\$iScript.txt"
if(!(Test-Path $StrPath)){New-Item -ItemType directory -Path $StrPath}
$OU1 = "OU=Users,OU=OC,DC=domain,DC=com"
$OU2 = "OU=Users,OU=AMC,DC=domain,DC=com"
$OU3 = "OU=Users,OU=FI,DC=domain,DC=com"
Get-ADGroup -Filter 'GroupCategory -eq "Security"' -SearchBase $OU1 | ft name -HideTableHeaders | Out-File "$strFile"
Get-ADGroup -Filter 'GroupCategory -eq "Security"' -SearchBase $OU2 | ft name -HideTableHeaders | Out-File "$StrFile" -Append
Get-ADGroup -Filter 'GroupCategory -eq "Security"' -SearchBase $OU3 | ft name -HideTableHeaders | Out-File "$StrFile" -Append
(GC $StrFile) | ? {$_.trim() -ne ""} | Set-Content $StrFile
$Groups = (GC $StrFile)
$Groups | foreach{$_.TrimEnd()} | Set-Content $StrFile
$Groups = (GC $StrFile)
foreach($Member in $Groups){
foreach($a in $Member){
if(Test-Path "$StrPath\$a.Members.txt"){Remove-Item -Path "$StrPath\$a.Members.txt" -Force}
Write-Host $iMember
$iMember = Get-ADGroupMember "$a" | Select-Object sAMAccountName
$iMember | ft -HideTableHeaders | Out-File "$StrPath\$a.Members.txt" -Append
(GC "$StrPath\$a.Members.txt") | ? {$_.trim() -ne ""} | set-content "$StrPath\$a.Members.txt"
(GC "$StrPath\$a.Members.txt") | foreach{$_.TrimEnd()} | Set-Content "$StrPath\$a.Members.txt"
GCI "$StrPath\$a.Members.txt" | where {$_.Length -lt 1} | Remove-Item
}
}
$GroupName = (GCI "$StrPath\*.Members.txt" -Name)
foreach($iGroup in $GroupName){
foreach($b in $iGroup){
if(Test-Path "$StrPath\$b.NID.txt"){Remove-Item -Path "$StrPath\$b.NID.txt" -Force}
Write-Host $b
Get-ADUser -filter {sAMAccountName -eq "$b"} -Properties MailNickName | Select-Object MailNickName | Set-Content "$StrPath\$b.NID.txt"
}
}
我想我會寫出來的源變量(或至少$ iGroup)到文本文件,以直觀地檢查您開始的內容。在我的經驗中,像這樣的文字怪異通常是由於一些意想不到的價值。如果不是,你能提供什麼輸入到最後一組循環是? –