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

Powershell 将当前用户添加到管理组,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在尝试获取当前用户并将其添加到管理员组。到目前为止,我能够获取当前用户并将其传递给管理员添加,但我不确定如何使用管理员凭据调用它以实际添加它们 $user = [Environment]::Username $group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group") $group.add("WinNT://$env:USERDOMAIN/$User,user") 任何帮助都将不胜感激。我不确定这是否是最好的方法

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

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

任何帮助都将不胜感激。

我不确定这是否是最好的方法,因为要将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进程的所有者之类的技巧)


Bartek

以下是有效的解决方案:

$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

这可能不适用于当前用户,但对于一般用户或组,您可以使用Powershell远程处理(WinRM)和和net.exe程序将用户作为管理员添加到多台计算机:

icm -ScriptBlock {& "$env:SystemRoot\system32\net.exe" localgroup Administrators /add AccountName} -ComputerName server1,server2,server3
其中,AccountName是广告用户或组,Server1、Server2、Server3是要在其上运行脚本块的计算机列表。这对当前用户不起作用,因为您必须是管理员才能使用WinRM,但当您需要将另一个用户或组作为管理员添加到服务器时,它会有所帮助

如果未启用WinRM,则可以使用远程启用它

psexec-s\Server1 cmd/c“winrm quickconfig-quiet”


如何实现这一点?