Sco*_*ker 6 powershell module windows-server-2008-r2
运行脚本时,我有一行代码来验证我们的应用程序是否存在“服务帐户”(也称为本地用户帐户):
$svcAccountName = "TheAccountName"
$svcAccount = Get-LocalUser -Name $svcAccountName
Run Code Online (Sandbox Code Playgroud)
服务器 (Windows Server 2008 R2) 对 cmdlet 犹豫不决Get-LocalUser,指出:
Get-LocalUser:术语“Get-LocalUser”未被识别为某个名称
cmdlet、函数、脚本文件或可操作程序。检查拼写
名称,或者如果包含路径,请验证路径是否正确,然后重试。
行:1 字符:1
+ 获取本地用户
+ ~~~~~~~~~~~~~
+ 类别信息:ObjectNotFound:(获取本地用户:字符串)[],CommandNotFoundException
+ FullQualifiedErrorId:CommandNotFoundException
所以我尝试导入该LocalAccounts模块:
Import-Module Microsoft.Powershell.LocalAccounts
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
导入模块:未加载指定的模块“LocalAccounts”,因为没有
在任何模块目录中找到有效的模块文件。
行:1 字符:1
+ 导入模块
+ ~~~~~~~~~~~~~
+ 类别信息:资源不可用:(本地帐户:字符串)[导入模块],FileNotFoundException
+FullyQualifiedErrorId:Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
根据$PSVersionTable变量,服务器正在运行 PSVersion 4.0。
为什么模块没有LocalAccounts加载并且Get-LocalUser命令没有运行?我怎样才能解决这个问题?
从 Windows 10(包括 Server 2016 和 2019)开始,Windows 管理框架(包括本地帐户管理 Powershell 模块)现已“内置”提供。有关适用于其他 Windows 版本的 WMF 的信息,请参阅https://learn.microsoft.com/en-us/powershell/wmf/overview#wmf-availability-across-windows-operating-systems 。
\n\n这意味着无需安装或导入任何模块即可使用Get-LocalUser和等功能。New-LocalUser
请注意,从 WMF 5.1 开始,其中许多函数的参数名称已发生更改。此外,现在必须以安全字符串的形式提供密码,该字符串可以使用该ConvertTo-SecureString函数生成。
以下是检查现有用户并在用户不退出时创建该用户的示例:
\n\n$UserName = "AdaLovelace"\n$SecurePassword = ConvertTo-SecureString "ThisIsAPassword!" \xe2\x80\x93asplaintext \xe2\x80\x93force\nif (Get-LocalUser($UserName))\n{\n Echo "User exists"\n}\nelse\n{\n New-LocalUser $UserName -Password $SecurePassword -UserMayNotChangePassword -AccountNeverExpires\n}\nRun Code Online (Sandbox Code Playgroud)\n
此 cmdlet 在 Server 2016 和 Win10 1607+ 中可用。在早期操作系统上,您需要使用net.exe、WMI、ADSI或使用这些方法之一的模块,或者安装 WMF 5.1。
编辑: MS PFE Sean Kearney 编写了一个名为localaccount的模块。它是根据GitHub 存储库的代码构建的,它通过ADSI. 它适用于旧版本的 PowerShell。请注意,这与内置模块不同。
| 归档时间: |
|
| 查看次数: |
59349 次 |
| 最近记录: |