web-dev-qa-db-ja.com

Microsoft.Powershell.LocalAccountsモジュールが見つかりません(またはGet-LocalUserを実行します)

スクリプトを実行するときに、アプリの「サービスアカウント」(別名ローカルユーザーアカウント)が存在することを確認する行があります。

$svcAccountName = "TheAccountName"
$svcAccount = Get-LocalUser -Name $svcAccountName

サーバー(Windows Server 2008 R2)は、Get-LocalUserコマンドレットで次のように言っています。

 Get-LocalUser:「Get-LocalUser」という用語は、
コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。 
 nameのスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して再試行してください。 
 + ~~~~~~~~~~~~~ 
 + CategoryInfo:ObjectNotFound:(Get-LocalUser:String)[]、CommandNotFoundException 
 + FullyQualifiedErrorId:CommandNotFoundException 

そこで、LocalAccountsモジュールをインポートしようとしました。

Import-Module Microsoft.Powershell.LocalAccounts

そして私はこれを手に入れました:

 Import-Module:
有効なモジュールファイルがどのモジュールディレクトリにも見つからなかったため、指定されたモジュール 'LocalAccounts'は読み込まれませんでした。
行:1文字:1 
 + Import-Module 
 + ~~~~~~~~~~~~~ 
 + CategoryInfo:ResourceUnavailable:(LocalAccounts:String)[Import-Module]、FileNotFoundException 
 + FullyQualifiedErrorId:Modules_ModuleNotFound、Microsoft.PowerShell.Commands.ImportModuleCommand 

サーバーは、$PSVersionTable変数に従ってPSVersion4.0を実行しています。

LocalAccountsモジュールがロードされず、Get-LocalUserコマンドが実行されないのはなぜですか?どうすればこれを修正できますか?

3
Scott Baker

このコマンドレットは、Server2016およびWin101607 +で使用できるようになりました。以前のOSでは、net.exeWMIADSI、またはこれらの方法のいずれかを使用するモジュールを使用するか、WMF5.1をインストールする必要があります。

編集:書かれたMS PFE Sean Kearneyは、 localaccount というモジュールを作成しました。これは、このコードから構築されています GitHub repostiory これはADSIを介して新しいモジュールの機能を複製します。これは古いバージョンのPowerShellで動作します。これは組み込みモジュールと同じではないことに注意してください。

1
BenH

Microsoft.Powershell.LocalAccountsモジュールは、次の場所からダウンロードできるWindows管理フレームワーク(WMF)v5.1の一部として提供されます: https: //www.Microsoft.com/en-us/download/details.aspx?id=54616

インストールすると、スクリプトでこれらのコマンドレットを使用できるようになります。ここには、Powershellの各バージョンに含まれているモジュールのリファレンスもあります: https://msdn.Microsoft.com/powershell/reference/readme

幸運を! :)

1
hairowski

Server2016および2019を含むWindows10以降、Windows Management Framework(ローカルアカウント管理Powershellモジュールを含む)が「インボックス」で出荷されるようになりました。他のバージョンのWindowsのWMFについては、 https://docs.Microsoft.com/en-us/powershell/wmf/overview#wmf-availability-across-windows-operating-systems を参照してください。

つまり、Get-LocalUserNew-LocalUserのような関数は、モジュールをインストールまたはインポートしなくても使用できます。

これらの関数の多くでは、WMF5.1からパラメーター名が変更されていることに注意してください。さらに、パスワードは、ConvertTo-SecureString関数を使用して生成できる安全な文字列として提供する必要があります。

既存のユーザーを確認し、終了しない場合はユーザーを作成する例を次に示します。

$UserName = "AdaLovelace"
$SecurePassword = ConvertTo-SecureString "ThisIsAPassword!" –asplaintext –force
if (Get-LocalUser($UserName))
{
    Echo "User exists"
}
else
{
    New-LocalUser $UserName -Password $SecurePassword -UserMayNotChangePassword -AccountNeverExpires
}
1
defines

最初に別のコンピューターから.PSM1ファイルを取得する必要があります

#Install LocalAccount Module
Install-Module -Name localaccount

#Save Module to the PowerShell Modules folder
Save-Module -Name localaccount -Path "C:\Program Files (x86)\WindowsPowerShell\Modules"

Windows 2008R2のこの場所に追加した場合。モジュールをインストールする必要がありますが、そうでない場合は、次のリンクを確認してください: https://msdn.Microsoft.com/en-us/library/dd878350(v = vs.85).aspx

Windows 2008 R2にない理由はわかりませんが、LocalAccountsモジュールは2015年3月21日にリリースされました。これはWindows2016およびWindows10よりも前のものです。

Install-Module -Name localaccount -RequiredVersion 1.1

いつでも「ショーン・P・カーニー」を作った人に連絡できます

これがお役に立てば幸いです。これが私がやった方法です。

0
Zach Olinske