PowerShellを使用したローカルユーザーとグループの管理
最近、Microsoftは、 Microsoft.PowerShell.LocalAccountsと呼ばれるWindowsローカルユーザーおよびグループを管理するための標準のPowerShellモジュールを追加しました。 。以前は、このモジュールを手動でダウンロードしてPowerShellにインポートする必要がありました。現在、LocalAccountsモジュールは、PowerShell5.1の一部としてWindowsServer2016およびWindows10でデフォルトで使用できます。以前のバージョンのWindowsで使用するには、Windows ManagementFramework5.1をインストールする必要があります。
LocalAccountsPowerShellモジュール
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
–ユーザー設定を変更します。
Windows10を実行しているコンピューターで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コマンドレットを使用して新しいローカルユーザーを作成しましょう。このコマンドレットを使用すると、次の種類のアカウントを作成できます。
- Windowsローカルアカウント;
- Microsoftアカウント;
- AzureADアカウント。
New-LocalUserコマンドレットを使用してユーザーアカウントを作成する場合、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コマンドレットを使用します(新しいパスワードはすでにSecureStringに変換されていると想定しています):
Set-LocalUser -Name john -Password $UserPassword –Verbose
「パスワードは期限切れになりません」フラグを設定するには、次のコマンドを実行します。
Set-LocalUser -Name john –PasswordNeverExpires $False
ご覧のとおり、ADユーザーオブジェクトのプロパティを管理する場合のように、UserAccountControlの値を変換する必要はありません。
ご存知のとおり、Microsoftアカウントを使用してWindows10にログインできます。 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)のみを使用しています。ただし、ドメインアカウント(ドメイン)、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コマンドレットを使用します。
たとえば、リモートコンピュータのローカルグループにアカウントのリストを作成する必要があります。
$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"
-
WindowsPowerShellを使用してローカルユーザーとグループを管理する方法
Windows PowerShellは、ローカルユーザーとグループの管理にも使用できます。 。これは、Windows10がマルチユーザーオペレーティングシステムであるという原則を裏付けています。ローカルユーザーとグループを管理するための他のGUIベースのユーティリティがあります。ただし、一部のシステム管理者は、コマンドラインユーティリティを使用してこれらのユーザーとグループを管理したい場合があります。これについては、このガイドで詳しく説明します。 WindowsPowerShellを使用してローカルユーザーとグループを管理する このガイドについては、2つのパートで説明します。それらは次
-
Windows 10 および Windows 11 で Visual Studio Code を使用して PowerShell スクリプトを作成する方法
Windows 10 と Windows 11 で PowerShell スクリプトを作成できることをご存知ですか? Windows に PowerShell をインストールしたので、PC で PowerShell を使用して何ができるか知りたいと思うかもしれません。このガイドでは、Visual Studio Code を使用して簡単なスクリプト ファイルを作成し、そのスクリプト ファイルを Windows 10 の PowerShell で実行する方法について説明しますおよび Windows 11. まず、基本的な PowerShell スクリプトを作成する方法を学ぶ必要があります。それを