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

Posted

技术标签:

【中文标题】将当前用户添加到管理员组【英文标题】:Adding Current User To Administrators Group 【发布时间】:2012-06-13 20:10:45 【问题描述】:

我正在编写一个脚本,该脚本将检查用户是否是管理员,如果不是,它将当场添加,注销,然后我可以重新登录进行测试。这是我遇到问题的部分:

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

每次运行时都会出现以下错误:

You cannot call a method on a null-valued expression.

有什么想法可以解决这个问题吗?

工作解决方案:

$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】:

Invoke-Command 对 $Group 变量一无所知,这就是它不能那样工作的原因。您需要使用 -ArgumentList 参数将变量传递给脚本块。

另外:我宁愿在这个脚本块中定义诸如 $Group 之类的东西:

$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

HTH

巴特克

PS:只有一个问题:为什么不做简单的方法,用:

net localgroup administrators domain\user /add

【讨论】:

以上是关于将当前用户添加到管理员组的主要内容,如果未能解决你的问题,请参考以下文章

Linux用户管理 权限管理 内存管理 网络管理命令

Identity角色管理五(添加用户到角色组)

NET LOCALGROUP命令详解(将用户添加到管理员组等)

用户和组管理及权限设置

gitlab的日常使用

组管理