2017-10-11 154 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'(结尾S)运行你的命令,你是否愿意这么做? –

+0

我的错误问题更新了,一直在尝试很多变化 – Anthony

回答

2

更换

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

通过

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

添加选择对象意味着将ADUser“对象”转换为“Psob” JECT”。通过后果,后续的命令remove-ADuser不能识别这种类型的对象。

也替换:

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

通过

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

改变$删除由$删除(你不能指定-Identity参数的集合)

+0

用@替换为$在delete.Samaccountname工作谢谢 – Anthony

+0

我尝试更新帖子。谢谢 ;-) –

相关问题