PowerShellでローカルユーザー(アカウント)やグループの追加・変更・削除を行う方法
本エントリーの目次
PowerShellを使って、ローカルユーザー(アカウント)やグループの追加・変更・削除を実行したい!
このブログでは以前に、コマンドプロンプトでのコマンド操作により、ローカルユーザー(ローカルアカウント)やローカルグループを追加する方法をご紹介しています。
参考:Windows コマンドでアカウントや共有を設定する方法
ですがコマンドプロンプトでのコマンド操作ではなく、PowerShellのコマンドレット操作により、ローカルユーザーやローカルグループを追加したいケースもあるでしょう。
本エントリー執筆時点の最新のサーバーOSであるWindows Server 2019や、クライアント向けOSのWindows 10 1909では、ローカルユーザーやグループを操作するための専用のPowerShellコマンドレットが用意されています。※
そこで今回は、PowerShellを使ってローカルユーザー(アカウント)やグループの追加・変更・削除を実行する方法をご紹介します!
※厳密には、それらOSにあらかじめ搭載されている比較的新しいバージョンのPowerShellに用意されています。
PowerShellを使って、ローカルユーザー(アカウント)の追加・変更・削除を行う方法
PowerShellを使って、ローカルユーザーの追加・変更・削除を行う場合は、以下のような方法を使用します。
ローカルユーザーの追加を行う方法
ローカルユーザーの追加は、『New-LocalUser』コマンドレットに各種パラメーターを付与して実行します。
たとえば、パスワードなしの新規ユーザー『test』を追加する場合は、パスワードを設定しないことを明示的に示す『-NoPassword』パラメーターを使い、以下のようなコマンドを実行してください。
1 | New-LocalUser -Name test -NoPassword |
尚、上記コマンドを使って作成した直後のユーザーは、どのローカルグループにも属していないため、ローカルログオンができません。
ローカルログオンができるようにしたい場合には、『Administrators』や『Users』グループなど、ローカルログオンが許可されているローカルグループのメンバーに追加する必要があります。
また先のコマンドで作成したユーザーは、ユーザーのプロパティ画面の『ユーザーは次回ログオン時にパスワードの変更が必要』が有効(チェックあり)の状態となっています。
したがって初めてのログオン(パスワード入力なし)の後、パスワードの変更を求められます。
『ユーザーは次回ログオン時にパスワードの変更が必要』が無効(チェックなし)の状態で、かつパスワードなしの新規ユーザー『test』を追加したいときは、以下のようなコマンドを実行します。
1 | New-LocalUser -Name test -Password ([securestring]::new()) -PasswordNeverExpires |
パスワード付きのローカルユーザーを追加する方法
『password』というパスワード文字列を設定した新規ユーザー『test』を追加する場合は、以下コマンドを実行します。
1 | New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) |
上記コマンドでは、コマンド文字列にパスワード文字列をあらかじめ組み込んでいます。
ですが以下のようなコマンドを実行することで、対話的にパスワード文字列を入力、指定することも可能です。
1 | New-LocalUser -Name test -Password (Read-Host -AsSecureString "パスワード") |
ただしPowerShellのコマンドレット操作により、新規ユーザーを追加するケースでは、パスワードを対話的に入力したいことは稀でしょうから、あまり使う機会はないかもしれませんね。
その他、『New-LocalUser』コマンドレットと併用できる設定パラメーターの使用例
『New-LocalUser』コマンドレットでは、『-Password』や『-NoPassword』パラメーター以外にも複数のパラメーターを使用できます。
代表的なパターンをいくつかご紹介しますので、参考になさってください。(各パターンではすべて『password』というパスワード文字列も併せて指定しています。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #『パスワードを無期限にする』を有効状態(チェックあり)とした新規ユーザー『test』を追加する New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -PasswordNeverExpires #『説明』に『テストユーザーです。』と設定した新規ユーザー『test』を追加する New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -Description "テストユーザーです。" #『フルネーム』に『フルネーム』と設定した新規ユーザー『test』を追加する New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -FullName "フルネーム" #『ユーザーはパスワードを変更できない』を有効状態(チェックあり)とした新規ユーザー『test』を追加する New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -UserMayNotChangePassword #『アカウントを無効にする』を有効状態(チェックあり)とした新規ユーザー『test』を追加する New-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -Disabled |
ローカルユーザーの設定変更を行う方法
すでにコンピューターに追加されており、存在するローカルユーザーの設定を変更したいときは、以下のように『Set-LocalUser』コマンドレットと各種パラメーターを組み合わせて使用します。(以下の例では、共通してローカルユーザー『test』を対象としています。)
1 2 3 4 5 6 7 8 | #パスワードなしの設定に変更する Set-LocalUser -Name test -Password ([securestring]::new()) #パスワードを、『password』というパスワード文字列に変更する Set-LocalUser -Name test -Password (ConvertTo-SecureString "password" -AsPlainText -Force) #『パスワードを無期限にする』を有効状態(チェックあり)に変更する Set-LocalUser -Name test -PasswordNeverExpires $true #『ユーザーはパスワードを変更できない』を有効状態(チェックあり)に変更する Set-LocalUser -Name test -UserMayChangePassword $false |
ローカルユーザーの状態(有効または無効)の変更を行う方法
ローカルユーザーの状態(有効または無効)の変更を行いたいときは、以下のように『Disable-LocalUser』や『Enable-LocalUser』コマンドレットを使用します。(以下の例では、共通してローカルユーザー『test』を対象としています。)
1 2 3 4 | #『アカウントを無効にする』を有効状態(チェックあり)に変更する Disable-LocalUser -Name test #『アカウントを無効にする』を無効状態(チェックなし)に変更する Enable-LocalUser -Name test |
ローカルユーザーをリネーム(名前変更)したり、削除する方法
コンピューターに存在するローカルユーザーをリネーム(名前変更)したり、削除したいときは、以下のようなコマンドレットを実行してください。
1 2 3 4 | #ユーザー『test』のアカウント名を、『test10』に変更する Rename-LocalUser -Name test -NewName test10 #ユーザー『test』を削除する Remove-LocalUser -Name test |
尚、上記例を参考に『Remove-LocalUser』コマンドを実行した場合、削除確認などはなく、ただちにアカウントが削除されます。
もし削除確認を表示させたいということであれば、併せて『-Confirm』パラメーターを指定してください。
1 | Remove-LocalUser -Name test -Confirm |
ローカルユーザーの各種情報を取得する方法
ローカルユーザーに関する各種情報を取得したいときは、『Get-LocalUser』コマンドレットを使用します。
特定のアカウントの情報を取得したいときは、以下のように『-Name』パラメーターに対象のアカウント名を指定してください。
1 2 3 4 5 6 7 8 | PS C:\> Get-LocalUser -Name administrator Name Enabled Description ---- ------- ----------- Administrator False コンピューター/ドメインの管理用 (ビルトイン アカウント) PS C:\> |
また『Get-LocalUser』コマンドレットを実行すると、ローカルユーザーに関する情報の一部のみが表示される仕様となっています。
より詳細な情報を取得したいときは、『Format-List』コマンドレットを併用し、『Get-LocalUser -Name アカウント名 | Format-List -Property *』という形式のコマンドを実行すると良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | PS C:\> Get-LocalUser -Name administrator | Format-List -Property * AccountExpires : Description : コンピューター/ドメインの管理用 (ビルトイン アカウント) Enabled : True FullName : PasswordChangeableDate : 2019/11/07 10:00:21 PasswordExpires : UserMayChangePassword : True PasswordRequired : True 中略 PrincipalSource : Local ObjectClass : ユーザー PS C:\> |
コンピューターに存在するローカルアカウントの情報を取得したいときは、『-Name』パラメーターを使わずにコマンドを実行してください。
すると以下のように、ローカルアカウントの情報を一覧表示できます。
1 2 3 4 5 6 7 8 9 10 | PS C:\> Get-LocalUser Name Enabled Description ---- ------- ----------- Administrator True コンピューター/ドメインの管理用 (ビルトイン アカウント) DefaultAccount False システムで管理されるユーザー アカウントです。 中略 PS C:\> |
こちらも各アカウントの詳細な情報を取得したいときは、以下のように『Format-List』コマンドレットを併用します。
1 | Get-LocalUser | Format-List -Property * |
PowerShellを使って、ローカルグループの追加・変更・削除を行う方法
PowerShellを使って、ローカルグループの追加・変更・削除を行う場合は、以下のような方法を使用します。
ローカルグループの追加を行う方法
『test-group』というローカルグループを追加したいときは、『New-LocalGroup』コマンドレットを使用して以下コマンドを実行します。
1 | New-LocalGroup -Name "test-group" |
グループを追加する際、同時に『説明』を設定することも可能です。
1 2 | #『説明』に『テストグループです。』という設定を行った新規グループ『test-group』を追加する New-LocalGroup -Name "test-group" -Description "テストグループです。" |
ローカルグループの設定変更、リネーム(名前変更)、削除の方法
ローカルグループの設定変更やリネーム(名前変更)、削除を実行したい場合は、以下例を参考にコマンド操作を行ってください。
1 2 3 4 5 6 7 8 | #コンピューターに存在する『test-group』グループの『説明』を、『テストグループです!』に変更する Set-LocalGroup -Name "test-group" -Description "テストグループです!" #コンピューターに存在する『test-group』グループの名前を、『new-test-group』に変更する Rename-LocalGroup -Name "test-group" -NewName "new-test-group" #コンピューターに存在する『test-group』グループを削除する Remove-LocalGroup -Name "test-group" #コンピューターに存在する『test-group』グループを削除する(削除確認あり) Remove-LocalGroup -Name "test-group" -Confirm |
ローカルグループの各種情報を取得する方法
ローカルグループの情報を取得したいときは『Get-LocalGroup』コマンドレットを使用し、先にご紹介したローカルユーザーの各種情報を取得する方法と同様の方法で、各種情報を取得できます。
1 2 3 4 5 6 7 8 | #『test-group』グループの情報を取得する Get-LocalGroup -Name "test-group" #『test-group』グループの詳細な情報を取得する Get-LocalGroup -Name "test-group" | Format-List -Property * #コンピューターに存在するローカルグループの情報を取得する Get-LocalGroup #コンピューターに存在するローカルグループの詳細な情報を取得する Get-LocalGroup | Format-List -Property * |
ローカルグループのメンバー(ユーザーアカウント)の追加・確認・削除の方法
ローカルグループのメンバー(ユーザーアカウント)の追加や確認、削除は、それぞれ『Add-LocalGroupMember』、『Get-LocalGroupMember』、『Remove-LocalGroupMember』コマンドレットを使用し、以下のように実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #『test-group』グループに、『test』ユーザーを追加する Add-LocalGroupMember -Group test-group -Member test #『test-group』グループに、『test』ユーザーと『test2』ユーザーを追加する Add-LocalGroupMember -Group test-group -Member "test","test2" #または $users = @("test","test2") Add-LocalGroupMember -Group test-group -Member $users #『test-group』グループに属する(グループのメンバーの)ユーザーアカウントの一覧を取得する Get-LocalGroupMember -Group test-group #『test-group』グループから、『test』ユーザーを削除する Remove-LocalGroupMember -Group test-group -Member test #『test-group』グループから、『test』ユーザーと『test2』ユーザーを削除する Remove-LocalGroupMember -Group test-group -Member "test","test2" #または $users = @("test","test2") Remove-LocalGroupMember -Group test-group -Member $users |
以上、参考になさってくださーい!