PowerShell을 사용하여 특정 사용자를 컴퓨터의 로컬 관리자 그룹에 추가하고 싶습니다. 로컬 컴퓨터에 대한 관리 권한이있는 사용자의 컨텍스트에서 PowerShell 스크립트를 실행하고 있습니다.
답변
이것은 여러 컴퓨터에서 Powershell을 사용하여 로컬 관리자 그룹에 사용자를 추가하는 데 사용하는 고급 기능입니다.
사용법 : Get-Content C : \ Computers.txt | Set-LocalAdminGroupMembership-계정 ‘귀하의 계정’
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 로컬 사용자 cmdlet을 사용할 수 있습니다.
Add-LocalGroupMember -Group Administrators -Member username
이것은 WMF (Windows Management Framework) 5.1에서 추가되었습니다.
Microsoft.PowerShell.LocalAccounts
파일을 $env:PsModulePath
위치에 복사하면 2012 R2에서 모듈 이 제대로 작동합니다 .
답변
이 기능을 수행하는 간단한 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 : 컴퓨터 이름" $ group = $ computer.psbase.children.find ( "관리자") AddToGroup ($ number) 함수 { $ group.add ( "WinNT : //"+ $ domain + "/"+ $ number) } #이 도메인 사용자 / 그룹을 로컬 관리자 그룹에 추가 AddToGroup "" AddToGroup "" #이 도메인 컴퓨터 계정을 로컬 관리자 그룹에 추가하십시오. # 컴퓨터 계정은 항상 $로 끝납니다. AddToGroup "$"
내 웹 사이트 에 대한 추가 정보 .
답변
대상 보안 그룹에 이미 존재하는 계정을 추가하면 오류가 발생하여 계정이 이미 추가되어 있는지 확인해야하지만 요구 사항은 PowerShell v2.0 과 하위 호환성을 유지해야했습니다.
다음은 2016 년 이전 Windows Server 용 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 문에서 사용 에 대한 크레딧은 이 블로그 게시물로 이동 합니다.