2012-05-21 4 views
2

Я пытаюсь получить текущего пользователя и добавить его в группу администратора. Пока я могу получить текущего пользователя и передать их в Admin add, но я не уверен, как назвать его с учетными данными администратора, чтобы фактически добавить их.Добавить пользователя в группу администратора

$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

Я не уверен, что это лучший способ сделать это, так как использовать 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).

НТН Bartek

0

Это может не сработать для текущего пользователя, но для общего пользователя или группы, вы можете использовать Powershell Remoting (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 \ Сервер1 CMD/с "WinRM quickconfig -quiet"