Reputation: 10453
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?
Upvotes: 6
Views: 65251
Reputation: 11
I was getting this problem because I was trying to use this command in PowerShell (x86). When I changed to 64 bits it solved.
Everything is on here: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/get-localuser?view=powershell-5.1
Upvotes: 1
Reputation: 10534
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://learn.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
}
Upvotes: 5
Reputation: 10044
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.
Upvotes: 1
Reputation: 81
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! :)
Upvotes: 2
Reputation: 557
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.
Upvotes: 0