回答:
これは、複数のコンピューターで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
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
場所。
この機能を実行する簡単な2行のスクリプトを次に示します。
$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group")
$group.add("WinNT://$env:USERDOMAIN/usernameiwantoadd,user")
詳細については、Hey、Scripting Guy!をご覧ください。Windows PowerShellを使用してドメインユーザーをローカルグループに追加する方法はありますか
そのため、いくつかのメモがあります。最初の行で文字列連結を使用しましたが、必要はありませんでした(次の行を参照)が、使用している変数を強調するのに役立つので好きです。次に、これらの行はドメインユーザーを追加します。ローカルユーザーを追加する場合は削除するだけです$env:USERDOMAIN/
これを行う別の方法を次に示します。これは管理者コンテキストで実行する必要があります。
$ domain = "" $ computername = "$ env:computername" $ group = $ computer.psbase.children.find( "administrators") 関数AddToGroup($ number) { $ group.add( "WinNT://" + $ domain + "/" + $ number) } #これらのドメインユーザー/グループをローカル管理者グループに追加します AddToGroup "" AddToGroup "" #これらのドメインコンピューターアカウントをローカル管理者グループに追加します。 #コンピュータアカウントは常に$で終わります。 AddToGroup "$"
私のウェブサイトの詳細。
ターゲットセキュリティグループに既に存在するアカウントを追加するとエラーが発生し、アカウントが既に追加されているかどうかを確認する必要がありますが、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ステートメントで使用した功績は、このブログ投稿にあります。