PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】
Microsoftは、Windowsのローカルユーザーやローカルグループを管理するための標準PowerShellモジュールとしてMicrosoft.PowerShell.LocalAccountsを提供しています。かつてはこのモジュールを手動でダウンロードしてPowerShellにインポートする必要がありましたが、現在ではWindows Server 2016およびWindows 10において、PowerShell 5.1の一部として標準搭載されています。それより前のバージョンのWindowsで使用したい場合は、別途Windows Management Framework 5.1をインストールしてください。
LocalAccounts PowerShellモジュールの概要
LocalAccountsモジュールには合計15個のコマンドレットが含まれています。モジュール内のコマンドレットの一覧は、以下のコマンドで確認できます。
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コマンドレットを使ってローカルユーザーやグループを管理する典型的なタスクを紹介します。
PowerShellによるWindowsローカルユーザーの管理方法
既存のローカルユーザー一覧を表示する
Windowsに存在するローカルユーザーの一覧を表示するには、次のコマンドを実行します。
Get-LocalUser

この例では、コンピューター上に6つのローカルユーザーアカウントが存在し、そのうち4つが無効化されている(Enabled=False)ことがわかります。
ユーザーの全プロパティを確認する
ADドメインユーザーの情報を表示するGet-ADUserコマンドレットと同様に、ローカルアカウントのすべてのプロパティを表示するには、次のコマンドを実行します。
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コマンドレットを使うと、次の3種類のアカウントを作成できます。
- Windowsローカルアカウント
- Microsoftアカウント
- Azure ADアカウント
New-LocalUserコマンドレットでユーザーアカウントを作成する際、Password引数に平文のパスワードを直接指定することはできません。パスワードを対話形式で入力し、事前にセキュア文字列へ変換しておく必要があります。
$UserPassword = Read-Host –AsSecureString
または、PowerShellコンソール上で直接パスワードを指定することも可能です。
$UserPassword = ConvertTo-SecureString "H1PH0Ppa$$" -AsPlainText -Force
New-LocalUser John -Password $UserPassword -FullName "Johh Lennon" -Description "Local Account for Remote Access"
なお、ADドメインにユーザーを作成する場合は、New-ADUserコマンドレットを使用します。
ユーザーのパスワードを変更する
ユーザーのパスワードを変更するには、Set-LocalUserコマンドレットを使用します(新しいパスワードがすでにSecureStringに変換されているものとします)。
Set-LocalUser -Name john -Password $UserPassword –Verbose

「パスワードを無期限にする」フラグを設定する
「パスワードを無期限にする」フラグを設定するには、次のコマンドを実行します。
Set-LocalUser -Name john –PasswordNeverExpires $False
ご覧のとおり、ADユーザーオブジェクトのプロパティ管理時に必要だったUserAccountControl値の変換は不要です。直感的なパラメータ指定だけで設定できます。
Microsoftアカウント/Azure ADアカウントのローカルログインを作成する
Windows 10ではMicrosoftアカウントを使ってサインインできます。Microsoftアカウントでログインする新しいユーザーを作成する場合は、次のコマンドを実行します。アカウントのパスワードはMicrosoft側に保存されているため、指定する必要がない点に注意してください。
New-LocalUser -Name "MicrosoftAccount\woshub@outlook.com" -Description "This is a Microsoft account"
Azure ADアカウントに関連付けられたローカルアカウントを作成する場合(たとえばOffice 365を利用している環境など)は、次のコマンドを実行します。
New-LocalUser -Name "AzureAD\admin@woshub.com" -Description " This is an Azure AD account"
ローカルユーザーを削除する
ローカルユーザーを削除するには、次のコマンドを使用します。
Remove-LocalUser -Name john -Verbose
PowerShellによるWindowsローカルグループの管理方法
ローカルグループの一覧を表示する
コンピューター上のローカルグループの一覧を表示します。
Get-LocalGroup

新しいグループを作成してメンバーを追加する
新しいグループを作成します。
New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'
作成したグループに、いくつかのローカルアカウントとローカルAdministratorsグループを追加します。
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose
ヒント:ADドメイングループの作成・削除やユーザー追加の方法については、「PowerShellによるActive Directoryグループの管理」の記事も参考になります。
コンピューターがADドメインに参加している場合は、ドメインアカウントやドメイングループをローカルグループに追加することもできます。その場合は、DomainName\jonhl や DomainName\'domain admins' の形式で指定します。

パイプラインを使ってユーザーをグループに追加することもできます。次の例では、ユーザーjohnをローカルのAdministratorsグループに追加しています。
Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'
グループのメンバー一覧を表示する
ローカルグループのメンバー一覧を表示します。
Get-LocalGroupMember -Group 'RemoteSupport'
この例ではローカルアカウントのみ使用しています(PrincipalSource – Local)。ただし、ドメインアカウント(Domain)、Microsoftアカウント(MicrosoftAccount)、Azure ADアカウント(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コマンドレットを使用します。
たとえば、リモートコンピューター上のローカルグループに含まれるアカウントの一覧を作成する場合は、次のように実行します。
$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"
このように、LocalAccountsモジュールを活用すれば、GUIを使わずにローカルユーザーとグループの管理作業をスクリプト化し、複数台のコンピューターに対して効率的に適用することができます。
-
Windows PowerShellでローカルユーザーとグループを管理する方法
Windows PowerShellは、ローカルユーザーとグループの管理にも活用できます。これは、Windows 10がマルチユーザー対応のオペレーティングシステムであることを裏付ける機能の一つです。ローカルユーザーとグループの管理にはGUIベースのツールもいくつかありますが、コマンドラインから操作したいと考えるシステム管理者も少なくありません。このガイドでは、その具体的な方法について詳しく解説します。 Windows PowerShellでローカルユーザーとグループを管理する このガイドは、以下の2つのパートに分けて説明します。 ローカルユーザーの管理 ユーザーグループの管理 作業を始
-
Windows 10/11でVisual Studio Codeを使ってPowerShellスクリプトを作成・実行する方法
Windows 10やWindows 11でも、PowerShellスクリプトを作成できることをご存じでしょうか?WindowsにPowerShellをインストールしたら、次はPCで何ができるのか知りたくなるはずです。このガイドでは、Visual Studio Codeを使ってシンプルなスクリプトファイルを作成し、Windows 10およびWindows 11のPowerShellで実行する方法を解説します。 まずは基本的なPowerShellスクリプトの作り方を覚えましょう。これをマスターすれば、Windows 10とWindows 11の両方でスクリプトを作成・実行できるようになり、作業効