2012-05-21 72 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”

相关问题