スクリプトを実行するときに、アプリの「サービスアカウント」(別名ローカルユーザーアカウント)が存在することを確認する行があります。
$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
コマンドが実行されないのはなぜですか?どうすればこれを修正できますか?
このコマンドレットは、Server2016およびWin101607 +で使用できるようになりました。以前のOSでは、net.exe
、WMI
、ADSI
、またはこれらの方法のいずれかを使用するモジュールを使用するか、WMF5.1をインストールする必要があります。
編集:書かれたMS PFE Sean Kearneyは、 localaccount というモジュールを作成しました。これは、このコードから構築されています GitHub repostiory これはADSI
を介して新しいモジュールの機能を複製します。これは古いバージョンのPowerShellで動作します。これは組み込みモジュールと同じではないことに注意してください。
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
幸運を! :)
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-LocalUser
やNew-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
}
最初に別のコンピューターから.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・カーニー」を作った人に連絡できます
これがお役に立てば幸いです。これが私がやった方法です。