我正在制作一个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'}
但是什么也不会返回。
有人在这里对我能做什么有任何输入吗?
答案 0 :(得分:0)
它不会返回任何内容,所以我认为我不能像这样发表
if
声明。
您可以大致像这样制作if
语句,但不能使用:
'some words test' -contains 'words'
作为测试。这是因为-contains
用于此用途:
@('collection', 'of', 'words', 'here') -contains 'words' # if a collection contains X.
对于字符串中的文本,您需要以下之一:
'some words test' -like '*words*' # this is a wildcard match, case insensitive.
#or
'some words test' -match 'words' # this is a regex match, case insensitive.
#or
'some words test'.Contains('words') # this is a .Net method on strings, case sensitive.