2016-05-18 10 views
0

PSスクリプトをまとめて、別のグループに属さないセキュリティグループにコンピュータを自動的に追加しようとしています。別のグループの一部ではないグループにコンピュータを追加するPowerShellスクリプト?

この場合、group_aに含まれていないすべてのコンピュータをgroup_bに追加します。

これは私が試したものです。..

#get list of computers from group_a 
$tpmobjects = Get-ADGroupMember -Identity "group_a" | Select name 
#add computers to group_b that are not in group_a 
Get-ADComputer -Filter {SamAccountName -notlike $tpmobjects} | Foreach-Object { Add-ADPrincipalGroupMembership -Identity $_.SamAccountName -MemberOf "group_b" } 

私が取得エラー...

Get-ADComputer : Type: 'System.Object[]' is not supported for extended attribute 'SamAccountName'. 
At line:2 char:1 
+ Get-ADComputer -Filter {SamAccountName -notlike $tpmobjects}... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Get-ADComputer], ArgumentException 
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADComputer 

誰もがこれを行う方法がありますか?

ありがとうございました。

答えて

0

Get-ADGroupMemberは複数のオブジェクトを返し、-Filterパラメータは複数のオブジェクトとのマッチングをサポートしていません。

あり、この周囲に複数の方法がありますが、最も簡単で、単にWhere-ObjectGet-ADGroupMemberからの出力をフィルタリングすることである。

$Computers = Get-ADGroupMember group_a |Where-Object {$_.objectClass -eq 'computer'} 

ます。またForEach-ObjectAdd-ADPrincipalGroupMembershipをラップする必要はありません、それはパイプライン入力を受け付け、 ADComputerオブジェクトは、問題なしで直接-Identityパラメータにバインドできます。

$Computers |Add-ADPrincipalGroupMembership -MemberOf group_a 
関連する問題