Thêm người dùng vào nhóm Quản trị viên cục bộ bằng powershell


Câu trả lời:


4

Đâ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

19

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.LocalAccountsmô-đ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.


1
Hãy cẩn thận, nhóm "Quản trị viên" có thể được gọi khác nhau tùy theo địa phương của bạn, trên hệ thống của Đức, đó là "Quản trị viên".
Panki

16

Đâ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/


Tôi muốn chạy tập lệnh này trên các máy trạm theo cách mà người chạy tập lệnh có thể nhập tên người dùng. Do đó, Máy chủ lưu trữ
Rihan Meij

1
vì vậy, trong trường hợp đó, hãy tạo dòng đầu tiên $ userInput = Read-Host "Nhập tên người dùng để thêm vào nhóm quản trị viên cục bộ", sau đó sử dụng $ userinput trong đó có tên usernameiwantoadd
Jim B

0

Đâ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 .


0

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 administratorstrong câu lệnh if ở trên đi đến bài đăng trên blog này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.