Bir makinedeki yerel yönetici grubuna belirli bir kullanıcı eklemek için PowerShell kullanmak istiyorum. Yerel makinede Yönetim haklarına sahip bir kullanıcı bağlamında PowerShell betiğini çalıştırıyordum.
Bir makinedeki yerel yönetici grubuna belirli bir kullanıcı eklemek için PowerShell kullanmak istiyorum. Yerel makinede Yönetim haklarına sahip bir kullanıcı bağlamında PowerShell betiğini çalıştırıyordum.
Yanıtlar:
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
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.LocalAccounts
Eğer sadece bir içine dosyaları kopyalamak eğer modül 2012 R2 üzerinde ceza işleri $env:PsModulePath
konumda.
İş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/
İş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 .
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 administrators
Yukarıdaki if ifadesinde kullandığınız için kredi bu blog gönderisine gider .