Додавання користувача до локальної групи адміністраторів за допомогою посібника


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

20

На серверах 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
Будьте уважні, група "Адміністратори" може називатися різною залежно від вашої мови, в німецькій системі це "Administtoren".
Панки

16

Ось простий дворядковий сценарій, який виконує цю функцію

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

Для отримання додаткової інформації див Ей, Сценарій Хлопець! Як я можу за допомогою Windows PowerShell додати користувача домену до локальної групи?

Отже, є пара нот. У першому рядку я використовував конкатенацію рядків, мені не довелося (див. Наступний рядок), але мені це подобається, тому що це допомагає підкреслити змінні, які я використовую. По-друге, ці рядки додадуть користувача домену, якщо ви хочете додати місцевого користувача, просто видаліть$env:USERDOMAIN/


Я хотів би запустити цей скрипт на робочих станціях таким чином, щоб людина, що управляє сценарієм, могла ввести ім'я користувача. Звідси
приймач

1
тому в такому випадку зробіть перший рядок $ userInput = Read-Host "Введіть ім'я користувача, щоб додати до локальної групи адміністратора", а потім використовуйте $ userinput, де написано usernameiwantoadd
Jim B

0

Ось ще один спосіб зробити це. Це потрібно запустити в контексті адміністратора:

$ domain = ""
$ computername = "$ env: ім'я комп'ютера"
$ group = $ computer.psbase.children.find ("адміністратори")

функція AddToGroup ($ номер)
{
     $ group.add ("WinNT: //" + $ домен + "/" + номер $)
}

#Додайте цих користувачів / груп домену до локальної групи адміністраторів
 AddToGroup ""
 AddToGroup ""

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

Більше інформації на моєму веб-сайті .


0

Додавання облікового запису, який вже існує у цільовій групі безпеки, збільшує та помиляє, тому вам потрібно перевірити, чи вже додано обліковий запис, проте моя вимога полягала в тому, щоб бути сумісним назад до PowerShell v2.0

Нижче наведено фрагмент, який я використовую, щоб додати користувача до групи місцевих адміністраторів, яка працює на старих версіях PowerShell для серверів Windows до 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у викладі if якщо йдеться про цю публікацію в блозі .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.