2017-10-11 7 views
0

powershellを使用してOU内のすべてのユーザーを削除しようとしていますが、SAMAccount名のときに次のように表示されます。PowershellがOU内のすべてのユーザーを削除します

私はここで間違っていますか?

$search="OU=Staff,OU=Users,DC=Testing, DC=Local" 

$deletes= Get-ADUser -SearchBase $search -filter * -properties SamAccountName | Select-Object SamAccountName 

$numusers=($deletes.count) 
echo "$numusers Users Found" 

foreach ($delete in $deletes) 
{ 
    echo "Deleting user account $delete . . . " 
    remove-aduser -identity $delete -confirm:$false 
} 

これは出力です。一見間違ってここに行く - "@ {SAMアカウント= bbonhomme}"

7ユーザーは

Deleting user account @{SamAccountName=bbonhomme} . . . 
Remove-ADUser : Cannot bind parameter 'Identity'. Cannot convert value "@{SamAccountName=bbonhomme}" to type 
"Microsoft.ActiveDirectory.Management.ADUser". Error: "Cannot convert the "@{SamAccountName=bbonhomme}" value of type 
"Selected.Microsoft.ActiveDirectory.Management.ADUser" to type "Microsoft.ActiveDirectory.Management.ADUser"." 
At C:\Users\Administrator\Desktop\import\getadusers.ps1:11 char:29 
+  remove-aduser -identity @delete -confirm:$false 
+        ~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Remove-ADUser], ParameterBindingException 
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.RemoveADUser 
+0

あなたはそれぞれのループを作る持っ 'によって削除変更$ delete'を実行しましたが、あなたは '$ deletes'でコマンドを実行しました。 –

+0

私の間違いの質問が更新されました。たくさんのバリエーションを試してみました – Anthony

答えて

2

$deletes= Get-ADUser -SearchBase $search -filter * -properties SamAccountName 

によって

$deletes= Get-ADUser -SearchBase $search -filter * -properties SamAccountName | Select-Object SamAccountName 

を交換見つかり変換できません。 Select-Objectの追加は、ADUserの "object"を "Psob ject "。その結果、その後のコマンドremove-ADuserはこのタイプのオブジェクトを認識しません。

も交換してください:

remove-aduser -identity $delete.SamAccountName -confirm:$false 

ことで

remove-aduser -identity $deletes -confirm:$false 

は$が$削除(あなたが-Identityパラメータでコレクションを指定することはできません)

+0

@で削除@ $で置き換えられました.Samaccountnameはありがとうございました – Anthony

+0

投稿を更新しようとしています。ありがとうございました ;-) –