【发布时间】:2021-02-12 10:15:01
【问题描述】:
我有理由使用单行复制/粘贴脚本来显示属于管理员组成员的本地帐户,但前提是这些帐户处于活动状态。
我不能用 DOS 命令 net user 来做这件事,主要是因为 net localgroup 的输出不适合解析和所有回显到屏幕上。 (不过,这是此方法的单行代码)
echo: & echo ^>^>^> LOCAL ADMINS (Active) ^<^<^< & echo: & for /f "delims=" %i in ('net localgroup administrators') do (for /f "delims=" %j in ('net user "%i" 2^>nul ^| find /i "Account active" ^| find /i "Yes"') do (echo *** %i))
我可以在 Powershell 中使用 Get-LocalGroupMember 和 Get-LocalUser 执行此操作。但是,这不适用于所有计算机(尤其是 Windows 7,或者由于未安装 cmdlet 而升级到 Windows 10 的计算机)。 (不过,这是这种方法的单线)
Write-Host "`r`n'>>> LOCAL ADMINS (Active) <<<'`r`n"; Get-LocalGroupMember Administrators ^|% { Get-LocalUser ($_.Name).split('\')[1] ^|? Enabled ^|% {Write-Host "'***'$($_.Name)"}}
我尝试使用 Get-WmiObject Win32_UserAccount 和 Win32_GroupUser 函数,无论 Windows 操作系统和年龄如何,它们似乎都可以工作,但这是我无法解决的问题。
我可以检索已启用用户的列表,但不知道如何测试管理员组的成员身份。这就是我目前所拥有的。
Get-WmiObject Win32_UserAccount ^|? {$_.Disabled -eq $false} ^|% { $_.Name }
【问题讨论】:
-
我确实找到了一种让它在 DOS 中工作的方法,但是你必须键入“echo on”才能再次使用该窗口。如果你在单行的末尾加上“& echo on”,它会忽略开头的“@echo off”命令。我将在下一条评论中发布代码。有没有办法让回声正常运行?
-
@echo off & echo: & echo ^>^>^> 本地管理员(活动) ^nul ^| find /i "Account active" ^| find /i "Yes"') do (echo *** %i))
标签: powershell