Powershell kullanarak yerel Yönetici grubuna kullanıcı ekleme


Yanıtlar:


4

Bu, birkaç bilgisayarda Powershell kullanarak yerel Administrator grubuna kullanıcı eklemek için kullandığım Gelişmiş İşlevdir.

Kullanım: İçeriği Al C: \ Computers.txt | Set-LocalAdminGroupMembership -Hesap 'Hesabınız'


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

Server 2016 ve Windows 10 Sürüm 1607 ve sonraki sürümlerinde yeni PowerShell yerel kullanıcı cmdlet'lerini kullanabilirsiniz:

Add-LocalGroupMember -Group Administrators -Member username

Bu, Windows Yönetim Çerçevesi (WMF) 5.1'e eklendi.

Microsoft.PowerShell.LocalAccountsEğer sadece bir içine dosyaları kopyalamak eğer modül 2012 R2 üzerinde ceza işleri $env:PsModulePathkonumda.


1
Dikkat edin, "Administrators" grubu, bulunduğunuz bölgeye bağlı olarak farklı olarak adlandırılabilir, bir Alman sisteminde "Administratoren" dir.
Panki

16

İşte bu işlevi gerçekleştiren 2 satırlık basit bir komut dosyası

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

Daha fazla bilgi için bkz. Hey, Scripting Guy! Yerel Gruba Etki Alanı Kullanıcısı Eklemek için Windows PowerShell'i Nasıl Kullanabilirim?

Yani birkaç not var. İlk satırda dize birleştirmeyi kullandım, (bir sonraki satıra bakın) zorunda kalmadım ama kullandığım değişkenleri vurgulamaya yardımcı olduğu için seviyorum. İkinci olarak, bu satırlar bir etki alanı kullanıcısı ekleyecektir, yerel bir kullanıcı eklemek isterseniz$env:USERDOMAIN/


Bu komut dosyasını, iş istasyonlarında, komut dosyasını çalıştıran kişinin bir kullanıcı adı yazabileceği şekilde çalıştırmak istiyorum. Bu nedenle Read-Host
Rihan Meij

1
bu durumda ilk satırı $ userInput = Read-Host "Yerel yönetici grubuna eklemek için kullanıcı adını girin", sonra usernameiwantoadd
Jim B

0

İşte bunu yapmanın başka bir yolu. Bunun Yönetici bağlamında çalıştırılması gerekir:

$ Domain = ""
$ computername = "$ env: bilgisayaradı"
$ Grup = $ computer.psbase.children.find ( "yöneticiler")

işlev AddToGroup ($ sayı)
{
     $ group.add ("WinNT: //" + $ alan adı + "/" + $ sayı)
}

# Bu etki alanı kullanıcılarını / gruplarını yerel yönetici grubuna ekleyin
 Gruba ekle ""
 Gruba ekle ""

# Bu etki alanı bilgisayar hesaplarını yerel yönetici grubuna ekleyin. 
#Bilgisayar hesapları her zaman $ ile biter.
AddToGroup "$"

Web sitem hakkında daha fazla bilgi .


0

Hedef güvenlik grubunda zaten var olan hesap eklenir ve hata eklenir, böylece hesabın zaten eklenip eklenmediğini kontrol etmeniz gerekir, ancak gereksinimim PowerShell ile geriye dönük olarak uyumlu olmaktı v2.0 olmaktı

Aşağıda, 2016'dan önce Windows Sunucular için PowerShell'in eski sürümlerinde çalışan yerel yöneticiler grubuna kullanıcı eklemek için kullandığım snippet verilmiştir. Kod örneği, yerel Administrators grubuna özel IIS AppPool kimliği için kullanılan bir hizmet hesabı ekler.

$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 administratorsYukarıdaki if ifadesinde kullandığınız için kredi bu blog gönderisine gider .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.