การเพิ่มผู้ใช้ไปยังกลุ่มผู้ดูแลระบบท้องถิ่นโดยใช้ powershell


16

ฉันต้องการใช้ PowerShell เพื่อเพิ่มผู้ใช้เฉพาะในกลุ่มผู้ดูแลระบบในเครื่อง ฉันจะเรียกใช้สคริปต์ PowerShell ในบริบทของผู้ใช้ที่มีสิทธิ์การดูแลระบบในเครื่องท้องถิ่น


ดูเพิ่มเติม [บัญชี Windows Local และการบำรุงรักษากลุ่ม] [1] [1]: serverfault.com/questions/31058/…
Nathan Hartley

คำตอบ:


4

นี่คือฟังก์ชั่นขั้นสูงที่ฉันใช้เพื่อเพิ่มผู้ใช้ไปยังกลุ่มผู้ดูแลระบบท้องถิ่นโดยใช้ Powershell ในคอมพิวเตอร์หลายเครื่อง

การใช้งาน: รับเนื้อหา 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

20

บนเซิร์ฟเวอร์ 2016 และ Windows 10 เวอร์ชัน 1607 และใหม่กว่าคุณสามารถใช้ cmdlet ผู้ใช้ภายใน PowerShell ใหม่:

Add-LocalGroupMember -Group Administrators -Member username

สิ่งนี้ถูกเพิ่มเข้ามาใน Windows Management Framework (WMF) 5.1

Microsoft.PowerShell.LocalAccountsโมดูลทำงานได้ดีบน 2012 R2 ถ้าคุณเพียงแค่คัดลอกไฟล์ลงใน$env:PsModulePathสถานที่ตั้ง


1
ระวังกลุ่ม "ผู้ดูแลระบบ" อาจถูกเรียกแตกต่างกันไปตามสถานที่ตั้งของคุณในระบบเยอรมันซึ่งเป็น "ผู้ดูแลระบบ"
Panki

16

นี่คือสคริปต์ 2 บรรทัดแบบง่าย ๆ ที่ทำหน้าที่นี้

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

ดูข้อมูลเพิ่มเติมได้ที่Hey, Guy Scripting! ฉันจะใช้ Windows PowerShell เพื่อเพิ่มผู้ใช้โดเมนในกลุ่มท้องถิ่นได้อย่างไร

ดังนั้นจึงมีบันทึกสองสามข้อ ในบรรทัดแรกฉันใช้การเรียงสตริงแบบสตริงฉันไม่จำเป็นต้อง (ดูบรรทัดถัดไป) แต่ฉันชอบเพราะจะช่วยเน้นตัวแปรที่ฉันใช้ ประการที่สองบรรทัดเหล่านี้จะเพิ่มผู้ใช้โดเมนหากคุณต้องการเพิ่มผู้ใช้ภายในเพียงแค่ลบ$env:USERDOMAIN/


ฉันต้องการเรียกใช้สคริปต์นี้บนเวิร์กสเตชันในลักษณะที่ผู้ใช้สคริปต์สามารถพิมพ์ชื่อผู้ใช้ ดังนั้นโฮสต์
Rihan Meij

1
ดังนั้นในกรณีดังกล่าวให้บรรทัดแรก $ userInput = Read-Host "ป้อนชื่อผู้ใช้เพื่อเพิ่มกลุ่มผู้ดูแลระบบในพื้นที่" จากนั้นใช้ $ userinput ที่มีการบอกชื่อ usernameiwantoadd
Jim B

0

นี่เป็นอีกวิธีในการทำเช่นนี้ ต้องดำเนินการในบริบทผู้ดูแลระบบ:

$ โดเมน = ""
$ computername = "$ env: computername"
$ = $ กลุ่ม computer.psbase.children.find ( "ผู้ดูแลระบบ")

ฟังก์ชั่น AddToGroup (จำนวน $)
{
     $ group.add ("WinNT: //" + $ domain + "/" + $ number)
}

# เพิ่มผู้ใช้ / กลุ่มโดเมนเหล่านี้ไปยังกลุ่มผู้ดูแลระบบท้องถิ่น
 AddToGroup ""
 AddToGroup ""

# เพิ่มบัญชีคอมพิวเตอร์โดเมนเหล่านี้ไปยังกลุ่มผู้ดูแลระบบท้องถิ่น 
# คอมพิวเตอร์บัญชีลงท้ายด้วย $
AddToGroup "$"

ข้อมูลเพิ่มเติมเกี่ยวกับฉันเว็บไซต์


0

การเพิ่มบัญชีที่มีอยู่แล้วในยกกลุ่มรักษาความปลอดภัยและความผิดพลาดเป้าหมายเพื่อให้คุณต้องตรวจสอบว่ามีการเพิ่มบัญชีอยู่แล้ว แต่ความต้องการของฉันคือการจะลงเข้ากันได้ย้อนกลับไป PowerShell v2.0

ด้านล่างเป็นตัวอย่างข้อมูลที่ฉันใช้เพื่อเพิ่มผู้ใช้ไปยังกลุ่มผู้ดูแลระบบท้องถิ่นที่ทำงานบน PowerShell รุ่นเก่าสำหรับ Windows Servers รุ่นก่อนหน้า 2016 ตัวอย่างรหัสเพิ่มบัญชีบริการที่ใช้สำหรับข้อมูลประจำตัว IIS AppPool ที่กำหนดเองไปยังกลุ่มผู้ดูแลระบบท้องถิ่น

$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ในคำสั่ง if ด้านบนไปที่โพสต์บล็อกนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.