Powershellでローカルユーザーを管理する(Microsoft.PowerShell.LocalAccounts)

昨日の「Hey, Scripting Guy」!*1を読んでいて知ったのだが、最新のPowershell*2ではローカルユーザーを管理できる。

実行環境

Microsoft Windows 10 Pro (10.0.14393)

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  576

実際のコマンド

まずはどんなコマンドがあるか、手元の環境で確認してみる。

PS D:\SandBox> # とりあえずコマンドを引く

PS D:\SandBox> Get-Command Get-LocalUser

CommandType     Name                                               Version    Source                                                                                           
-----------     ----                                               -------    ------                                                                                           
Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               



PS D:\SandBox> # 同じSourceに似たようなコマンドがないか調べる

PS D:\SandBox> get-command -Module  Microsoft.PowerShell.LocalAccounts

CommandType     Name                                               Version    Source                                                                                           
-----------     ----                                               -------    ------                                                                                           
Cmdlet          Add-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Disable-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Enable-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          New-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          New-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalGroupMember                            1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Rename-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Rename-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Set-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Set-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                                

続けていくつか使ってみる。

PS D:\SandBox>  #ローカルユーザーの一覧から最初3つを取得
PS D:\SandBox> (Get-LocalUser)[1..3]

Name           Enabled Description
----           ------- -----------
DefaultAccount False   システムで管理されるユーザー アカウントです。
Guest          False   コンピューター/ドメインへのゲスト アクセス用 (ビルトイン アカウント)
HomeGroupUser$ True    コンピューターへのホームグループ アクセス用のビルトイン アカウント


PS D:\SandBox>  #ローカルグループの一覧から最初3つを取得
PS D:\SandBox> (Get-LocalGroup)[1..3]

Name                                Description
----                                -----------
WinRMRemoteWMIUsers__               Members of this group can access WMI resources over management protocols (such a...
__vmware__                          VMware User Group
Access Control Assistance Operators このグループのメンバーは、このコンピューター上のリソースの認証属性およびアクセス...

PS D:\SandBox>  #Administratorsグループのメンバーを取得
PS D:\SandBox> Get-LocalGroupMember Administrators

ObjectClass Name                   PrincipalSource
----------- ----                   ---------------
ユーザー    examplePC\Administrator Local

もっと詳しい使い方は公式のリファレンスを読めばよい。 Microsoft.PowerShell.LocalAccounts

参考

PowerTip: Get a list of local Users in Windows 10 / Windows Server 2016 – Hey, Scripting Guy! Blog ⇒元ネタ

Tech TIPS:Windowsのnet userコマンドでユーザーアカウントを管理する - @IT ⇒該当コマンドレットが利用できない場合、昔ながらのnet user コマンドを使う。

余談

bashならどうするの?というメモ

ユーザーの情報を取得したいだけならgetentコマンドを利用する。/etc/groupだけではわからないようなLDAP連携の値も持ってこれる。

変更を加えたいなら

  • user(add|del|mod)
  • group(add|del|mod)