このスクリプトは、あるドメインから別のドメインへの移行を支援するためのものです。私はすべてのADセキュリティグループを探しています。そして、各グループのメンバーを引っ張り、グループの名前とそのグループのメンバーでテキストファイルを作成します。PowerShellの最後のforeachループは失敗しますが、前のループは正常に動作します
次に、各グループのユーザーMailNickName
フィールドに情報を含めるための新しいテキストファイルを作成する場合は、これをNID
(新しいID)といいます。私はこのMailNickName
を使って新しいドメインにNID
を保存するので、を新しいドメインの適切なグループにプッシュできます。
以下のスクリプトでは、最後のforeachループを除いてすべてが機能しますが、その理由はわかりません。それは正しいと私は答えをインターネットで検索したが、これは動作しない理由はない。
私はエラーは発生しませんが、$b
変数は$iGroup
変数と同じ値になります。 NID
の新しいテキストファイルも作成されません。 foreach($b in $iGroup)
は、単一の項目をループあなたの
$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)をテキストファイルに追加して、あなたが始めているものを視覚的に調べます。私の経験では、このようなテキストの奇妙さは、通常、予期せぬ値によるものです。そうでない場合は、この最後のループセットへの入力は何ですか? –