최근 Microsoft는 Microsoft.PowerShell.LocalAccounts라는 Windows 로컬 사용자 및 그룹을 관리하기 위해 표준 PowerShell 모듈을 추가했습니다. . 이전에는 이 모듈을 수동으로 다운로드하여 PowerShell로 가져와야 했습니다. 이제 LocalAccounts 모듈은 PowerShell 5.1의 일부로 Windows Server 2016 및 Windows 10에서 기본적으로 사용할 수 있습니다. 이전 Windows 버전에서 사용하려면 Windows Management Framework 5.1을 설치해야 합니다.
LocalAccounts PowerShell 모듈
LocalAccounts 모듈에는 15개의 cmdlet이 있습니다. 다음과 같이 모듈 cmdlet의 전체 목록을 표시할 수 있습니다.
Get-Command -Module Microsoft.PowerShell.LocalAccounts
Add-LocalGroupMember
– 로컬 그룹에 사용자 추가Disable-LocalUser
– 로컬 사용자 계정 비활성화Enable-LocalUser
– 계정 활성화(잠금 해제),Get-LocalGroup
– 지역 그룹에 대한 정보를 얻습니다.Get-LocalGroupMember
– 로컬 그룹의 사용자 목록을 표시합니다.Get-LocalUser
– 로컬 사용자에 대한 정보 표시New-LocalGroup
– 새 로컬 그룹 만들기New-LocalUser
– 로컬 사용자 생성Remove-LocalGroup
– 로컬 그룹 삭제Remove-LocalGroupMember
– 로컬 그룹에서 구성원 제거Remove-LocalUser
– 로컬 사용자 삭제Rename-LocalGroup
– 로컬 그룹 이름 바꾸기,Rename-LocalUser
– 사용자 이름 변경,Set-LocalGroup
– 그룹 설정 수정,Set-LocalUser
– 사용자 설정을 수정합니다.
Windows 10을 실행하는 컴퓨터에서 LocalAccounts 모듈의 PowerShell cmdlet을 사용하여 로컬 사용자 또는 그룹을 관리하는 몇 가지 일반적인 작업을 살펴보겠습니다.
PowerShell을 사용하여 Windows 로컬 사용자를 관리하는 방법
Windows의 기존 로컬 사용자 목록 표시:
Get-LocalUser
보시다시피 컴퓨터에는 6개의 로컬 사용자 계정이 있으며 그 중 4개는 비활성화되어 있습니다(Enabled=False).
로컬 계정의 모든 속성을 표시하려면(AD 도메인 사용자에 대한 정보를 표시하는 데 사용되는 Get-ADUser cmdlet과 유사) 다음 명령을 실행합니다.
Get-LocalUser -Name root | Select-Object *
AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 3/12/2019 10:14:29 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 3/11/2019 10:14:29 PM
LastLogon : 3/11/2019 4:18:17 PM
Name : root
SID : S-1-5-21-2605456602-2293283241-3832290805-1001
PrincipalSource : Local
ObjectClass : User
마지막 비밀번호 변경 날짜와 같은 특정 사용자 속성을 얻으려면 다음 명령을 실행하십시오.
Get-LocalUser -Name root | Select-Object PasswordLastSet
New-LocalUser cmdlet을 사용하여 새 로컬 사용자를 만들어 보겠습니다. 이 cmdlet을 사용하면 다음 유형의 계정을 만들 수 있습니다.
- Windows 로컬 계정
- Microsoft 계정,
- Azure AD 계정.
New-LocalUser cmdlet을 사용하여 사용자 계정을 만들 때 일반 텍스트의 사용자 암호를 Password 인수로 지정할 수 없습니다. 암호를 대화식으로 요청하고 미리 보안 문자열로 변환해야 합니다.
$UserPassword = Read-Host –AsSecureString
또는 PoSh 콘솔에서 직접 비밀번호를 지정하십시오:
$UserPassword = ConvertTo-SecureString "H1PH0Ppa$$" -AsPlainText -Force
New-LocalUser John -Password $UserPassword -FullName "Johh Lennon" -Description "Local Account for Remote Access"
사용자의 암호를 변경하려면 LocalUser cmdlet을 사용하십시오(새 암호를 이미 SecureString으로 변환했다고 가정).
Set-LocalUser -Name john -Password $UserPassword –Verbose
"암호가 만료되지 않음" 플래그를 설정하려면 다음 명령을 실행하십시오.
Set-LocalUser -Name john –PasswordNeverExpires $False
보시다시피 AD 사용자 개체 속성을 관리할 때와 같이 UserAccountControl 값을 변환할 필요가 없습니다.
기억하시겠지만 Microsoft 계정을 사용하여 Windows 10에 로그인할 수 있습니다. Microsoft 계정에 대한 새 사용자 로그인을 생성해야 하는 경우 이 명령을 실행하십시오. (계정 암호는 Microsoft에 저장되어 있으므로 지정할 필요가 없습니다.)
New-LocalUser -Name "MicrosoftAccount\[email protected]" -Description "This is a Microsoft account"
Azure AD 계정과 관련된 로컬 계정을 만들려면(예:Office 365 사용) 다음 명령을 실행합니다.
New-LocalUser -Name "AzureAD\[email protected]" -Description " This is an Azure AD account"
로컬 사용자를 제거하려면:
Remove-LocalUser -Name john -Verbose
PowerShell을 사용하여 Windows 로컬 그룹을 관리하는 방법
이제 컴퓨터의 로컬 그룹 목록을 표시합니다.
Get-LocalGroup
새 그룹 만들기:
New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'
새 그룹에 일부 로컬 계정과 로컬 관리자 그룹을 추가합니다.
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose
컴퓨터가 AD 도메인에 가입되어 있으면 도메인 계정과 그룹을 로컬 그룹에 추가할 수 있습니다. 이를 수행하려면 DomainName\jonhl 또는 DomainName\'domain admins' 형식으로 지정합니다.
다음 파이프라인을 사용하여 그룹에 사용자를 추가할 수도 있습니다(로컬 관리자 그룹에 사용자를 추가합니다).
Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'
로컬 그룹의 사용자 목록 표시:
Get-LocalGroupMember -Group 'RemoteSupport'
보시다시피 로컬 계정(PrincipalSource – Local)만 사용하고 있습니다. 단, 도메인 계정(domain), Microsoft 계정(MicrosoftAccount), Azure 계정(AzureAD)도 사용 가능합니다.
특정 사용자가 속한 그룹 목록을 표시하려면 컴퓨터의 모든 로컬 그룹을 확인해야 합니다.
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member john –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}
그룹에서 사용자를 제거하려면 다음 명령을 실행하십시오.
Remove-LocalGroupMember -Group 'RemoteSupport' –Member john
원격 컴퓨터에서 로컬 사용자를 관리하려면 WinRM을 사용하여 연결하고 Invoke-Command 또는 Enter-PSSession cmdlet을 사용합니다.
예를 들어 원격 컴퓨터의 로컬 그룹에 계정 목록을 만들어야 합니다.
$winrm_ssn = new-pssession -computer Lon-Srv01,Lon-Srv02,Lon-Srv03
invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $winrm_ssn -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"