PowerShellを使用してローカル管理者グループにユーザーを追加する


15

PowerShellを使用して、マシンのローカル管理者グループに特定のユーザーを追加したいと思います。ローカルマシンで管理権限を持つユーザーのコンテキストでPowerShellスクリプトを実行します。


[Windowsローカルアカウントとグループのメンテナンス] [1]も参照してください。[1]:serverfault.com/questions/31058/...
ネイサンハートレー

回答:


4

これは、複数のコンピューターでPowershellを使用してローカル管理者グループにユーザーを追加するために使用する高度な機能です。

使用法:Get-Content 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

19

Server 2016およびWindows 10バージョン1607以降では、新しいPowerShellローカルユーザーコマンドレットを使用できます。

Add-LocalGroupMember -Group Administrators -Member username

これは、Windows Management Framework(WMF)5.1で追加されました。

Microsoft.PowerShell.LocalAccountsあなただけにファイルをコピーする場合、モジュールは2012 R2上の罰金を働く$env:PsModulePath場所。


1
グループ「Administrators」は、ロケールによって異なる場合があります。ドイツのシステムでは「Administratoren」です。
パンキ

16

この機能を実行する簡単な2行のスクリプトを次に示します。

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

詳細については、Hey、Scripting Guy!をご覧ください。Windows PowerShellを使用してドメインユーザーをローカルグループに追加する方法はありますか

そのため、いくつかのメモがあります。最初の行で文字列連結を使用しましたが、必要はありませんでした(次の行を参照)が、使用している変数を強調するのに役立つので好きです。次に、これらの行はドメインユーザーを追加します。ローカルユーザーを追加する場合は削除するだけです$env:USERDOMAIN/


スクリプトを実行している人がユーザー名を入力できるように、このスクリプトをワークステーションで実行したいと思います。したがって、読み取りホスト
リハンメイ

1
その場合、最初の行を作成します$ userInput = Read-Host「ローカル管理グループに追加するユーザー名を入力してください」を使用して、usernameiwantoaddが言うところの$ userinputを使用してください
ジムB

0

これを行う別の方法を次に示します。これは管理者コンテキストで実行する必要があります。

$ domain = ""
$ computername = "$ env:computername"
$ group = $ computer.psbase.children.find( "administrators")

関数AddToGroup($ number)
{
     $ group.add( "WinNT://" + $ domain + "/" + $ number)
}

#これらのドメインユーザー/グループをローカル管理者グループに追加します
 AddToGroup ""
 AddToGroup ""

#これらのドメインコンピューターアカウントをローカル管理者グループに追加します。 
#コンピュータアカウントは常に$で終わります。
AddToGroup "$"

私のウェブサイトの詳細。


0

ターゲットセキュリティグループに既に存在するアカウントを追加するとエラーが発生し、アカウントが既に追加されているかどうかを確認する必要がありますが、PowerShell v2.0までの下位互換性が必要でした

以下は、2016年以前のWindows Serversの古いバージョンのPowerShellで動作するローカル管理者グループにユーザーを追加するために使用するスニペットです。コード例は、カスタムIIS AppPool IDに使用されるサービスアカウントをローカル管理者グループに追加します。

$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.