4
votes

When running a script, I have a line to verify that a "service account" (aka a local user account) for our app exists:

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

The server (Windows Server 2008 R2) is balking at the Get-LocalUser cmdlet, stating:

Get-LocalUser : The term 'Get-LocalUser' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Get-LocalUser 
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Get-LocalUser:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

So I tried to import the LocalAccounts module:

Import-Module Microsoft.Powershell.LocalAccounts

and I got this:

Import-Module : The specified module 'LocalAccounts' was not loaded because no
valid module file was found in any module directory.
At line:1 char:1
+ Import-Module
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (LocalAccounts:String)[Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

The server is running PSVersion 4.0 according to the $PSVersionTable variable.

Why isn't the LocalAccounts module loaded and the Get-LocalUser command running? How can I fix this?

4
Currently looking at a Win2012 R2 server here with PSVersion 4.0 as well and that module isn't present on it either.Booga Roo
@BenH please post your comment as an answer. In my opinion, it best answers the question.Scott Baker

4 Answers

1
votes

This cmdlet was made available with Server 2016 and Win10 1607+. On earlier OS's, you will either need to use net.exe, WMI, ADSI, or a module that uses one of those methods or install WMF 5.1.

Edit: The MS PFE Sean Kearney written made a module called localaccount. Which is built from the code of this GitHub repostiory which replicates the functionality of the new modules via ADSI. Which works with older versions of PowerShell. Note that this is not the same as the builtin in module.

3
votes

Beginning with Windows 10 including Server 2016 and 2019, the Windows Management Framework (which includes the local account management Powershell module) is now shipped "in-box". See https://docs.microsoft.com/en-us/powershell/wmf/overview#wmf-availability-across-windows-operating-systems for information about WMF for other versions of Windows.

This means that functions like Get-LocalUser and New-LocalUser are available without having to install or import any modules.

Note that parameter names have changed for many of these functions from WMF 5.1. Additionally, the password must now be supplied as a secure string which may be generated using the ConvertTo-SecureString function.

Here's an example to check for an existing user and create the user if they don't exit:

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

Microsoft.Powershell.LocalAccounts module comes as part of the Windows Management Framework (WMF) v5.1 that can be downloaded from : https://www.microsoft.com/en-us/download/details.aspx?id=54616

Once installed you'll be able to use those cmdlets in your script. Here you have also a reference of which modules are included with each version of Powershell: https://msdn.microsoft.com/powershell/reference/readme

Good luck! :)

0
votes

You need to first grab the .PSM1 file from another computer

#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"

If you add it to this location on Windows 2008 R2. It should install the module, but if not check out this link: https://msdn.microsoft.com/en-us/library/dd878350(v=vs.85).aspx

I am not sure why it is not on Windows 2008 R2, but the LocalAccounts Module came out in March 21, 2015. This predates Windows 2016 and Windows 10.

Install-Module -Name localaccount -RequiredVersion 1.1

You can always contact the guy who created it "Sean P. Kearney"

Hope this helps you. This is how I did it.