Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

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

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

主なコマンドレットとその役割は以下の通りです。

  1. Add-LocalGroupMember – ローカルグループにユーザーを追加する
  2. Disable-LocalUser – ローカルユーザーアカウントを無効化する
  3. Enable-LocalUser – アカウントを有効化(ロック解除)する
  4. Get-LocalGroup – ローカルグループの情報を取得する
  5. Get-LocalGroupMember – ローカルグループのメンバー一覧を表示する
  6. Get-LocalUser – ローカルユーザーの情報を表示する
  7. New-LocalGroup – 新しいローカルグループを作成する
  8. New-LocalUser – ローカルユーザーを作成する
  9. Remove-LocalGroup – ローカルグループを削除する
  10. Remove-LocalGroupMember – ローカルグループからメンバーを削除する
  11. Remove-LocalUser – ローカルユーザーを削除する
  12. Rename-LocalGroup – ローカルグループの名前を変更する
  13. Rename-LocalUser – ユーザーの名前を変更する
  14. Set-LocalGroup – グループの設定を変更する
  15. Set-LocalUser – ユーザーの設定を変更する

以下では、Windows 10が稼働するコンピューター上で、LocalAccountsモジュールのPowerShellコマンドレットを使ってローカルユーザーやグループを管理する典型的なタスクを紹介します。

PowerShellによるWindowsローカルユーザーの管理方法

既存のローカルユーザー一覧を表示する

Windowsに存在するローカルユーザーの一覧を表示するには、次のコマンドを実行します。

Get-LocalUser

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

この例では、コンピューター上に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

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

新しいローカルユーザーを作成する

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

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

「パスワードを無期限にする」フラグを設定する

「パスワードを無期限にする」フラグを設定するには、次のコマンドを実行します。

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

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

新しいグループを作成してメンバーを追加する

新しいグループを作成します。

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' の形式で指定します。

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

パイプラインを使ってユーザーをグループに追加することもできます。次の例では、ユーザーjohnをローカルのAdministratorsグループに追加しています。

Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'

グループのメンバー一覧を表示する

ローカルグループのメンバー一覧を表示します。

Get-LocalGroupMember -Group 'RemoteSupport'

この例ではローカルアカウントのみ使用しています(PrincipalSource – Local)。ただし、ドメインアカウント(Domain)、Microsoftアカウント(MicrosoftAccount)、Azure ADアカウント(AzureAD)も利用可能です。

PowerShellでWindowsのローカルユーザーとグループを管理する方法【LocalAccountsモジュール完全ガイド】

特定のユーザーが所属するグループを調べる

特定のユーザーがどのグループに所属しているかを確認するには、コンピューター上のすべてのローカルグループを順番にチェックする必要があります。

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を使わずにローカルユーザーとグループの管理作業をスクリプト化し、複数台のコンピューターに対して効率的に適用することができます。

  1. Windows PowerShellでローカルユーザーとグループを管理する方法

    Windows PowerShellは、ローカルユーザーとグループの管理にも活用できます。これは、Windows 10がマルチユーザー対応のオペレーティングシステムであることを裏付ける機能の一つです。ローカルユーザーとグループの管理にはGUIベースのツールもいくつかありますが、コマンドラインから操作したいと考えるシステム管理者も少なくありません。このガイドでは、その具体的な方法について詳しく解説します。 Windows PowerShellでローカルユーザーとグループを管理する このガイドは、以下の2つのパートに分けて説明します。 ローカルユーザーの管理 ユーザーグループの管理 作業を始

  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の両方でスクリプトを作成・実行できるようになり、作業効