1

ここで get-adgroups は、スクリプトからクエリを実行すると false を返しますが、まったく同じ PowerShell ISE ウィンドウを使用して手動で実行すると true を返します。エラーを生成する次のコードを参照してください。グループ、OU、DN が存在します。おそらくタイプミスはありません。コマンドを手動で実行することで再現可能 (以下を参照)。正常に動作します。

Import-Module ActiveDirectory
$Group="ProductInternalInstallProductOnNextLogin"
$BaseDN="OU=Product,DC=int,DC=Domain,DC=de"
write-host "get-adgroup -Filter DistinguishedName -eq CN=$Group,$BaseDN"
$Result=get-adgroup -Filter {(DistinguishedName -eq "CN=$Group,$BaseDN")}
if($Result)
{
    write-host "Group $Group found"
}
else
{
    write-host "Group $Group not found, trying to create $Group"
    New-ADGroup -path "$BaseDN" -GroupScope Global -name $Group
    if (!$?)
    {
        write-host "ERROR creating new group $Group"
        exit
    }
}

これにより、エラーを確認できる次の出力が得られます。

____________________________________________________________________________________________________________________________________________________________________________________________________________________
PS C:\Users\MyName.INT> G:\DevPath\Tools\PowerShell-Scripte\Unbenannt2.ps1
get-adgroup -Filter DistinguishedName -eq CN=ProductInternalInstallProductOnNextLogin,OU=Product,DC=int,DC=Domain,DC=de
Group ProductInternalInstallProductOnNextLogin not found, trying to create ProductInternalInstallProductOnNextLogin
New-ADGroup : Die angegebene Gruppe ist bereits vorhanden
Bei G:\DevPath\Tools\PowerShell-Scripte\Unbenannt2.ps1:13 Zeichen:16
+     New-ADGroup <<<<  -path "$BaseDN" -GroupScope Global -name $Group
+ CategoryInfo          : NotSpecified: (CN=ProductInte...nt,DC=Domain,DC=de:String) [New-ADGroup], ADException
+ FullyQualifiedErrorId : Die angegebene Gruppe ist bereits vorhanden,Microsoft.ActiveDirectory.Management.Commands.NewADGroup

ERROR creating new group ProductInternalInstallProductOnNextLogin

____________________________________________________________________________________________________________________________________________________________________________________________________________________

グループが存在しない場合にのみ実行している場合、New-ADGroup はどのように失敗しますか? ここでは PowerShell がドイツ語で実行されているため、「New-ADGroup : Die angegebene Gruppe ist bereits vorhanden」というエラー メッセージは「このグループは既に存在します」という意味です。

これを確認するために、コンソールでこれを手動で実行したところ、問題なく動作しました。

PS C:\Users\MyName.INT> write-host "the following command was run manually from the commandline of the PowerShellISE"
$Result=get-adgroup -Filter {(DistinguishedName -eq "CN=ProductInternalInstallProductOnNextLogin,OU=Product,DC=int,DC=Domain,DC=de")}
write-host $Result

これにより、正しい出力が生成されます。

the following command was run manually from the commandline of the PowerShellISE
CN=ProductInternalInstallProductOnNextLogin,OU=Product,DC=int,DC=Domain,DC=de

私の苦労の中で私も試しました

try {get-adgroups [...]} catch {new-adgroup[...]} 

しかし、それもうまくいきませんでした。

4

1 に答える 1

2

Get-ADGroup コマンドの外部で、ターゲット グループの文字列連結を取得しようとしましたか? 実際に、PowerShell ISE セッションから問題を再現できました。「フィルター」を更新すると、問題が解決し、情報を正常に取得できました。

オリジナル:

$Group  = "ProductInternalInstallProductOnNextLogin"
$BaseDN = "OU=Product,DC=int,DC=Domain,DC=de"
$Result = get-adgroup -Filter {(DistinguishedName -eq "CN=$Group,$BaseDN")}

変更:

$Group  = "ProductInternalInstallProductOnNextLogin"
$BaseDN = "OU=Product,DC=int,DC=Domain,DC=de"
$Target = "CN=" + $Group + "," + $BaseDN
$Result = get-adgroup -Filter {DistinguishedName -eq $Target}
于 2012-12-13T22:32:43.510 に答える