2014-01-10 22 views
0

我有以下代碼,可從給定的服務器列表中查找屬於服務器本地管理員組的所有用戶。有人可以建議修改這個最好的方法,以便我可以在服務器列表中搜索一個特定的用戶名嗎?Powershell - 查找並可選地刪除多個服務器上的本地管理員組中的用戶

除此之外,如果有人發現它在其中,那麼有人可以添加一些可選代碼來從本地管理員組中刪除指定的用戶?

在這些服務器上線之前,我們正在尋找方法在項目完成構建和配置生產服務器之後清除組。

$SERVERS = GC .\HOST.TXT 

FOREACH ($C in $Servers) { 
WRITE-HOST $c 
[string]$strComputer = $c 
$computer = [ADSI]("WinNT://" + $strComputer + ",computer") 
$Group = $computer.psbase.children.find("Administrators") 
$members= $Group.psbase.invoke("Members") | %{$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 

foreach($user in $members) 
{ 
$objUser = [ADSI]("WinNT://$strComputer/$user") 
[string]$output = $strComputer + "," + $user + "," + $objUser.SchemaClassName + "," + $ObjUser.Description 
write-host $output 
$output |out-file -append .\L_out.txt 
Remove-Variable objUser 
} 
} 

回答

0

添加一個if語句搜索你想要的字符串,然後把一些用戶的輸入就可以了,如果用戶輸入刪除「是」

if ($user -eq "****INSERT USER NAME HERE****") { 
    if (Read-Host -Prompt "Delete user? (Yes/No)" -like "yes") { 
     Remove-ADUser -Identity $user -Server $C    
    } 
} 

這應該是你的foreach($user in $members) {

+0

更簡單的可能是嘗試: $ name = read-host「user?」; $ members = $ Group.psbase.invoke(「Members」)| %{$ _。GetType()。InvokeMember(「Name」,'GetProperty',$ null,$ _,$ null)} | ?{$ _ -like $ name} |除去-ADUser便有 –

相關問題