【发布时间】:2018-08-04 01:58:59
【问题描述】:
我正在制作一个 PowerShell 脚本,它将列出当前登录到系统的用户数。
我要做的是:
$users = query user /server:localhost
$number = $users.Count
if ( $number -le 1 ) {
Write-Host 0 Users online"|" Users=0
} else {
$number = $users.Count-1
Write-Host $number Users online"|" Users=$number
}
exit
但是我需要能够排除用户,例如管理员。
我以为我可以发表if 声明,但我真的不知道如何正确地做到这一点。
假设我这样做:
$users = query user /server:localhost
if ($users -contains '*Administrator*') {
$number = $users.Count-2
Write-Host $number
}
exit
我添加.Count-2是因为第一行是“用户名、ID、会话”等信息。
它没有返回任何东西,所以我认为我不能做出这样的if 声明。
是否可以从$users 变量中“grep”某些内容并删除该行?
例如,如果我运行:
$users[1]
它将返回第二行等。但是我该如何操作这些行?
我也试过了:
$users | Where-Object {$_ -match 'administrator'}
但这什么也没有返回。
这里有人对我能做什么有意见吗?
【问题讨论】:
-
试试
$users | Where-Object {$_ -notlike "*Administrator*"} -
太快了。那确实奏效了。非常感谢!
-
没问题 :) 需要更详细的解释或自己解决?
-
我想我可以从这里弄清楚。那是我缺少的那部分。谢谢!
-
您可能会认为它过大了,但this function 应该将该输出转换为客户的 powershell 对象。我用它来转换基于文本的输出,就像你所拥有的一样。
标签: powershell