Saya ingin menggunakan PowerShell untuk menambahkan pengguna tertentu ke grup administrator lokal di mesin. Saya akan menjalankan skrip PowerShell dalam konteks pengguna yang memiliki hak Administrasi pada mesin lokal.
Saya ingin menggunakan PowerShell untuk menambahkan pengguna tertentu ke grup administrator lokal di mesin. Saya akan menjalankan skrip PowerShell dalam konteks pengguna yang memiliki hak Administrasi pada mesin lokal.
Jawaban:
Ini adalah Fungsi Tingkat Lanjut yang saya gunakan untuk menambahkan pengguna ke grup Administrator lokal menggunakan Powershell di beberapa komputer.
Penggunaan: Dapatkan Konten 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
Pada Server 2016 dan Windows 10 Versi 1607 dan yang lebih baru Anda dapat menggunakan cmdlet pengguna lokal PowerShell baru:
Add-LocalGroupMember -Group Administrators -Member username
Ini ditambahkan dalam Windows Management Framework (WMF) 5.1.
The Microsoft.PowerShell.LocalAccounts
Modul bekerja dengan baik pada 2012 R2 jika Anda hanya menyalin file ke $env:PsModulePath
lokasi.
Berikut ini adalah skrip 2 baris sederhana yang melakukan fungsi ini
$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group")
$group.add("WinNT://$env:USERDOMAIN/usernameiwantoadd,user")
Untuk informasi lebih lanjut, lihat Hey, Scripting Guy! Bagaimana Saya Dapat Menggunakan Windows PowerShell untuk Menambahkan Pengguna Domain ke Grup Lokal?
Jadi ada beberapa catatan. Pada baris pertama saya menggunakan string concatenation, saya tidak perlu (lihat baris berikutnya) tetapi saya suka karena ini membantu menonjolkan variabel yang saya gunakan. Kedua, baris ini akan menambahkan pengguna domain, jika Anda ingin menambahkan pengguna lokal, cukup hapus$env:USERDOMAIN/
Inilah cara lain untuk melakukan ini. Ini perlu dijalankan dalam konteks Administrator:
$ domain = "" $ computername = "$ env: computername" $ group = $ computer.psbase.children.find ("administrator") fungsi AddToGroup ($ number) { $ group.add ("WinNT: //" + $ domain + "/" + $ number) } # Tambahkan pengguna / grup domain ini ke grup administrator lokal AddToGroup "" AddToGroup "" # Tambahkan akun komputer domain ini ke grup administrator lokal. Akun #Computer selalu berakhir dengan $. AddToGroup "$"
Info lebih lanjut di situs web saya .
Menambahkan akun yang sudah ada di grup keamanan menimbulkan dan kesalahan sehingga Anda perlu memeriksa apakah akun sudah ditambahkan, namun persyaratan saya adalah kompatibel mundur ke PowerShell v2.0
Di bawah ini adalah cuplikan yang saya gunakan untuk menambahkan pengguna ke grup administrator lokal yang bekerja pada versi PowerShell untuk Windows Server yang lebih lama sebelum 2016. Contoh kode menambahkan akun layanan yang digunakan untuk identitas IIS AppPool kustom ke grup Administrator lokal.
$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."
}
Kredit untuk digunakan net localgroup administrators
dalam pernyataan if di atas berlaku untuk posting blog ini .