以 PowerShell 方式获取本地用户帐户
我似乎总是看到有关使用 PowerShell 获取本地用户帐户的请求和问题。然而,即使我们已经使用了 PowerShell 5.0,Microsoft 也从未发布过一组用于管理本地用户帐户的 cmdlet。我们中的许多人都求助于创建自己的工具。我现在有了最新版本的函数,可以从远程计算机获取本地用户帐户信息。
该功能通过使用 ADSI 类型加速器连接到远程计算机来采取某种快捷方式。这与我们在 VBScript 时代使用的技术相同。然而,这种技术不利于替代凭证,并且需要 RPC 和 DCOM 等遗留协议。但这不一定是问题,几分钟后我将向您展示。
该函数连接到远程计算机,然后使用一些 COM 对象 voodoo 来枚举本地帐户信息。默认情况下,该命令将列出所有用户帐户。
或者您可以指定单个用户帐户名。
该函数接受管道输入,可以轻松地同时检查多个服务器。
import-csv s:\computers.csv | get-localuser Administrator | Select Computername,User,Enabled,PasswordAgeDays重要提示:如果您查询域控制器,您将获得域帐户。
请记住我提到过此命令使用旧协议。一种替代方法是使用 PowerShell 远程处理和 Invoke-Command。首先,创建必要的 PSSession,如有必要,请使用备用凭据。
$s = new-pssession -computer chi-core01,chi-web02,chi-fp02然后获取函数的脚本块。
$sb = ${function:Get-localuser}现在您可以将其与 Invoke-Command 一起使用:
invoke-command -scriptblock $sb -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title "Local"
或者查询指定账户:
invoke-command -scriptblock $sb -session $s -hidecomputername -ArgumentList Administrator
您可以在 Github 上找到完整的脚本,其中包括别名。
:
我希望您能让我知道您的想法,并希望您发现这是对您的 PowerShell 工具箱的有用补充。如果您遇到问题,请将其发布在要点页面上。