gwmi Win32_用户帐户冻结PowerShell
这就是我的“获取本地管理员帐户信息”脚本的核心: 运行此操作会冻结PS控制台和ISE,需要任务管理器杀死它们 根据stackoverflow上的其他问题,我理解查询Win32_UserAccount可能会导致大量数据通过网络传输。但我认为指定一台计算机和一个SID可以将数据量过滤到很小的程度。我当然不会在查询远程服务器上的其他WMI对象时遇到这个问题 我错过什么了吗 编辑:这也会冻结PS:gwmi Win32_用户帐户冻结PowerShell,powershell,Powershell,这就是我的“获取本地管理员帐户信息”脚本的核心: 运行此操作会冻结PS控制台和ISE,需要任务管理器杀死它们 根据stackoverflow上的其他问题,我理解查询Win32_UserAccount可能会导致大量数据通过网络传输。但我认为指定一台计算机和一个SID可以将数据量过滤到很小的程度。我当然不会在查询远程服务器上的其他WMI对象时遇到这个问题 我错过什么了吗 编辑:这也会冻结PS: gwmi win32_useraccount -computername $server "SID LIK
gwmi win32_useraccount -computername $server "SID LIKE '%500'"
需要将服务器名称指定为查询中的域。即“域='$server'和类似于'%500'的SID” 但这可能仍然表现不佳。看
也可以尝试对LocalAccount属性进行筛选,即“LocalAccount='$True'”如果可以执行
domain=
和name=
,则会很快,因为这些是索引
# fast
Get-WmiObject Win32_UserAccount -Filter "Domain='$env:USERDOMAIN' AND
name = 'js2010'"
奇怪的是,单独指定localaccount很快,但也不能使用名称或sid
# slow (AD joined)
Get-WmiObject Win32_UserAccount -Filter "localaccount = 'true' and
name = 'js2010'"
# fast
Get-WmiObject Win32_UserAccount -Filter "localaccount = 'true'" |
where name -eq js2010
# fast
get-wmiobject win32_useraccount -filter "localaccount = 'true'" |
where sid -like *500
# fast
get-wmiobject win32_useraccount -filter "domain = '$env:computername' and
sid like '%500'"
还有一个get localuser:
# fast
Get-Localuser | where sid -like *500
很可能您正在查询的计算机上的提供程序仍在返回所有域帐户。。。i、 不幸的是,指定一台特定的机器可能没有什么区别。必须有办法从一台服务器上获得一个本地帐户。我不需要查询广告或任何东西。如果您正在寻找本地管理员,为什么要指定域?不确定这有多有用,但Win32_Desktop只返回本地“帐户”的信息。。。你想得到什么信息?获取关联的实例也会挂起,所以看起来这并不比直接查询UserAccount更有效。@JamesBrown看起来应该很容易。如果您明确知道域名和用户名,可以使用“Get-CimInstance-Namespace root/cimv2-Query”从Win32_UserAccount中选择*,其中domain='your domain'和name='your username'…这在我的系统上运行得很好。这对@andyb有很大帮助。我的测试运行时间为2到10秒,这是一个巨大的改进。谢谢。
# fast
Get-Localuser | where sid -like *500