Добавление пользователя в локальную группу администраторов с помощью powershell

16

Я хотел бы использовать PowerShell для добавления определенного пользователя в группу локальных администраторов на компьютере. Я бы запустил скрипт PowerShell в контексте пользователя с правами администратора на локальном компьютере.

Рихан Мейдж
источник
См. Также [Локальная учетная запись Windows и обслуживание групп] [1]. [1]: serverfault.com/questions/31058/…
Натан Хартли,

Ответы:

4

Это расширенная функция, которую я использую для добавления пользователей в локальную группу администраторов с помощью Powershell на нескольких компьютерах.

Использование: Get-Content C: \ Computers.txt | Set-LocalAdminGroupMembership -Account 'YourAccount'


Function Global:Set-LocalAdminGroupMembership
{


    <#
    .Synopsis

    .Description

    .Parameter $ComputerName,

    .Example
     PS> Set-LocalAdminGroupMembership -ComputerName $ComputerName -Account 'YourAccount'

    .Link
     about_functions
     about_functions_advanced
     about_functions_advanced_methods
     about_functions_advanced_parameters

    .Notes
     NAME:      Set-LocalAdminGroupMembership
     AUTHOR:    Innotask.com\dmiller
     LASTEDIT:  2/4/2010 2:30:05 PM
     #Requires -Version 2.0
    #>



    [CmdletBinding()]
    param(
    [Parameter(Position=0, ValueFromPipeline=$true)]
    $ComputerName = '.',
    [Parameter(Position=1, Mandatory=$true)]
    $Account
    )


    Process
    {  

        if($ComputerName -eq '.'){$ComputerName = (get-WmiObject win32_computersystem).Name}    
        $ComputerName = $ComputerName.ToUpper()


        $Domain = $env:USERDNSDOMAIN

        if($Domain){
            $adsi = [ADSI]"WinNT://$ComputerName/administrators,group"
            $adsi.add("WinNT://$Domain/$Account,group")
            }else{
            Write-Host "Not connected to a domain." -foregroundcolor "red"
            }


    }# Process


}# Set-LocalAdminGroupMembership
user46713
источник
20

В Server 2016 и Windows 10 версии 1607 и более поздних версиях вы можете использовать новые командлеты локальных пользователей PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Это было добавлено в Windows Management Framework (WMF) 5.1.

Microsoft.PowerShell.LocalAccountsМодуль работает отлично на 2012 R2 , если вы просто скопировать файлы в $env:PsModulePathместо.

Питер Хандорф
источник
1
Будьте осторожны, группа «Администраторы» может называться по-разному в зависимости от вашей локали, в немецкой системе это «Administratoren».
Панки
16

Вот простой двухстрочный скрипт, который выполняет эту функцию

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

Для получения дополнительной информации см. Эй, автор сценариев! Как я могу использовать Windows PowerShell для добавления пользователя домена в локальную группу?

Итак, есть пара замечаний. В первой строке я использовал конкатенацию строк, мне не нужно было (см. Следующую строку), но мне нравится, потому что это помогает подчеркнуть переменные, которые я использую. Во-вторых, эти строки добавят пользователя домена, если вы хотите добавить локального пользователя, просто удалите$env:USERDOMAIN/

Джим Б
источник
Я хотел бы запустить этот сценарий на рабочих станциях таким образом, чтобы человек, выполняющий сценарий, мог ввести имя пользователя. Отсюда и Read-Host
Рихан Мей
1
поэтому в этом случае сделайте в первой строке $ userInput = Read-Host «Введите имя пользователя для добавления в локальную группу администраторов», затем используйте $ userinput, где указано usernameiwantoadd
Джим Б
0

Вот еще один способ сделать это. Это должно быть запущено в контексте администратора:

$ Домен = ""
$ computername = "$ env: computername"
$ Группы $ = computer.psbase.children.find ( "администраторы")

функция AddToGroup ($ число)
{
     $ group.add ("WinNT: //" + $ domain + "/" + $ number)
}

# Добавить этих пользователей / группы домена в группу локальных администраторов
 AddToGroup ""
 AddToGroup ""

# Добавьте эти учетные записи компьютеров домена в группу локальных администраторов. 
# Компьютерные аккаунты всегда заканчиваются на $.
AddToGroup "$"

Больше информации на моем сайте .

Даниэль Энгберг
источник
0

При добавлении учетной записи, которая уже существует в целевой группе безопасности, возникает ошибка, поэтому необходимо проверить, добавлена ​​ли учетная запись, однако мое требование заключалось в обратной совместимости с PowerShell v2.0.

Ниже приведен фрагмент, который я использую для добавления пользователя в группу локальных администраторов, которая работала в более старых версиях PowerShell для Windows Servers до 2016 года. В примере кода добавляется учетная запись службы, используемая для пользовательской идентификации IIS AppPool, в локальную группу администраторов.

$appPoolIdentity = "DOMAIN\svc-acc-name"
# check if user is already member of the local administrators group - using case insensitive string comparison
if(((invoke-command {net localgroup administrators}) -match ($appPoolIdentity -replace '\\','\\')).Count -eq 0){
    Write-Host "The app pool identity user '$appPoolIdentity' is not found in the local 'Administrators' group."
    # add user to the local administrators group
    $adminGroup = [ADSI]("WinNT://$env:COMPUTERNAME/administrators,group")
    $adminGroup.Add("WinNT://$appPoolIdentity,user")
    Write-Warning "Added '$appPoolIdentity' to the local 'Administrators' group."
}else{
    Write-Host "The app pool identity user '$appPoolIdentity' is already member of local 'Administrators' group."
}

Кредит для использования net localgroup administratorsв приведенном выше заявлении идет к этому сообщению в блоге .

Эмиль
источник