将当前用户添加到管理员组

时间:2012-05-21 13:26:17

标签: powershell powershell-v2.0

我正在尝试获取当前用户并将其添加到管理员组。到目前为止,我能够获取当前用户并将其传递给Admin添加,但我不确定如何使用管理员凭据调用它以实际添加它们。

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

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不确定这是否是最好的方法,因为将ADSI用于备用信用卡 - 您需要以纯文本形式发送它们:

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

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

用户名通常采用domain \ user(或$ env:ComputerName \ User)的形式。

以其他方式做到这样不是更好吗?从用户帐户检查谁登录并添加此帐户?有几种方法可以实现(包括检查explorer.exe进程的所有者等技巧)。

HTH 鲍尔泰克

答案 2 :(得分:0)

这可能对当前用户不起作用,但对于通用用户或组,您可以使用Powershell Remoting(WinRM)和Invoke-Command以及net.exe程序将用户作为管理员添加到多台计算机:< / p>

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”