2012-05-21 69 views
2

我正在嘗試獲取當前用戶並將其添加到管理員組。到目前爲止,我可以獲取當前用戶並將它們傳遞給管理員添加,但我不確定如何使用管理員憑據調用它以實際添加它們。將當前用戶添加到管理員組

$user = [Environment]::Username 
$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group") 
$group.add("WinNT://$env:USERDOMAIN/$User,user") 

任何幫助,將不勝感激。

回答

3

這裏是工作的解決方案:

$Cred = Get-Credential ("$env:COMPUTERNAME\Administrator") 
$User = $env:USERNAME 
$Domain = $env:USERDOMAIN 
Invoke-Command -Computername localhost -Cred $Cred -ScriptBlock { 
    param ($User, $Domain, $ComputerName) 
    $Group = [ADSI]("WinNT://$ComputerName/Administrators,Group") 
    $Group.add("WinNT://$Domain/$User,user") 
} -ArgumentList $User, $Domain, $ENV:COMPUTERNAME 
+0

一個人如何實現這個? – ihaveitnow

0

我不知道這是做到這一點的最好方式,因爲用其他的creds使用ADSI - 你需要向他們發送純文本:

$Local = New-Object -TypeName ADSI -ArgumentList @(
    "WinNT://$env:COMPUTERNAME/Administrators,group", 
    $AdminUser, 
    $AdminPass       
) 

$Local.Add("WinNT://$env:USERDOMAIN/$env:USERNAME") 

用戶名通常需要域\用戶的形式(或$ env:ComputerName \ User)。

這樣做會更好嗎?從登錄的用戶帳戶中檢查並添加此帳戶?有幾種方法可以實現(包括像檢查explorer.exe進程的所有者這樣的技巧)。

HTH 鮑爾泰克

0

這可能不適合當前用戶的工作,但對於一般用戶或組,您可以使用PowerShell遠程處理(WinRM的)和Invoke-Command和NET.EXE程序作爲管理員用戶添加到多臺計算機:

icm -ScriptBlock {& "$env:SystemRoot\system32\net.exe" localgroup Administrators /add AccountName} -ComputerName server1,server2,server3 

其中AccountName是一個AD用戶或組,並且Server1,Server2,Server3是您希望運行腳本塊的計算機的列表。這對當前用戶不起作用,因爲您必須是管理員才能使用WinRM,但是當您需要將另一個用戶或組添加爲服務器時,這有助於管理員。

如果您沒有啓用WinRM的,則可以使用PSEXEC,使其能夠遠程

PSEXEC -s ​​\ Server1的CMD/C 「WinRM的quickconfig -quiet」

相關問題