Tôi muốn sử dụng PowerShell để thêm một người dùng cụ thể vào nhóm quản trị viên cục bộ trên máy. Tôi sẽ chạy tập lệnh PowerShell trong bối cảnh người dùng có quyền Quản trị trên máy cục bộ.
Tôi muốn sử dụng PowerShell để thêm một người dùng cụ thể vào nhóm quản trị viên cục bộ trên máy. Tôi sẽ chạy tập lệnh PowerShell trong bối cảnh người dùng có quyền Quản trị trên máy cục bộ.
Câu trả lời:
Đây là Chức năng nâng cao mà tôi sử dụng để thêm người dùng vào nhóm Quản trị viên cục bộ bằng Powershell trên một số máy tính.
Cách sử dụng: Get-Content C: \ Computer.txt | Đặt-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
Trên Server 2016 và Windows 10 Phiên bản 1607 trở lên, bạn có thể sử dụng các lệnh ghép ngắn người dùng cục bộ PowerShell mới:
Add-LocalGroupMember -Group Administrators -Member username
Điều này đã được thêm vào Khung quản lý Windows (WMF) 5.1.
Các Microsoft.PowerShell.LocalAccounts
mô-đun hoạt động tốt trên 2012 R2 nếu bạn chỉ cần sao chép các tập tin vào một $env:PsModulePath
địa điểm.
Đây là một kịch bản 2 dòng đơn giản thực hiện chức năng này
$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group")
$group.add("WinNT://$env:USERDOMAIN/usernameiwantoadd,user")
Để biết thêm thông tin, xem Hey, Scripting Guy! Làm cách nào tôi có thể sử dụng Windows PowerShell để thêm người dùng tên miền vào nhóm cục bộ?
Vì vậy, có một vài lưu ý. Trong dòng đầu tiên tôi đã sử dụng nối chuỗi, tôi không phải (xem dòng tiếp theo) nhưng tôi thích vì nó giúp làm nổi bật các biến tôi đang sử dụng. Thứ hai, những dòng này sẽ thêm người dùng tên miền, nếu bạn muốn thêm người dùng cục bộ chỉ cần xóa$env:USERDOMAIN/
Đây là một cách khác để làm điều này. Điều này cần phải được chạy trong bối cảnh Quản trị viên:
$ domain = "" $ computername = "$ env: tên máy tính" $ nhóm = $ computer.psbase.children.find ("quản trị viên") chức năng AddTogroup ($ number) { $ group.add ("WinNT: //" + $ domain + "/" + $ số) } # Thêm những người dùng / nhóm tên miền này vào nhóm quản trị viên cục bộ Thêm vào nhóm "" Thêm vào nhóm "" # Thêm các tài khoản máy tính miền này vào nhóm quản trị viên cục bộ. Tài khoản #Computer luôn kết thúc bằng $. AddTogroup "$"
Thêm thông tin trên trang web của tôi .
Thêm tài khoản đã tồn tại trong nhóm bảo mật mục tiêu tăng và lỗi, do đó bạn cần kiểm tra xem tài khoản đã được thêm chưa, tuy nhiên yêu cầu của tôi là phải tương thích ngược với PowerShell v2.0
Dưới đây là đoạn mã tôi sử dụng để thêm người dùng vào nhóm quản trị viên cục bộ hoạt động trên các phiên bản cũ hơn của PowerShell cho Windows Servers trước năm 2016. Ví dụ mã thêm tài khoản dịch vụ được sử dụng cho nhận dạng IIS AppPool tùy chỉnh vào nhóm Quản trị viên cục bộ.
$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."
}
Tín dụng cho việc sử dụng net localgroup administrators
trong câu lệnh if ở trên đi đến bài đăng trên blog này .