在以 'n' 开头的数组中查找用户名
Find username in array beginning with 'n'
我有一个来自 AD 的散列 table,其中包含用户名和服务帐户。我正在尝试查找所有服务帐户。所有用户名都由首字母唯一标识,例如 'r' 和服务帐户 's'。例如:r398831 和 s882443。这是我拥有的数组的示例:
$null = $usrArr.Add([pscustomobject] @{
sName = $user.name
sGivenName = $user.GivenName
sSurname = $user.Surname
sEnabled = $user.Enabled
})
$lastSeen = $usrArr | select * | Where {$_.sEnabled -eq $true}
$lastSeen = $lastSeen | Sort-Object -Unique -Property sName
我试过使用 -contains 和 -match,但它似乎并没有拉回我所追求的:
$svcAcc = $lastSeen | where-object {$_.sName -like "s"}
我是否必须为每个执行一个,或者我只是弄乱了我的语法?
我在想也许我需要对对象进行排序,但必须有一种更简单的方法来完成如此基本的事情。感谢对此的任何建议。
提前致谢:)
最好的,
皮特
-like
运算符将 RHS 上的通配符模式与 整个 LHS 进行匹配,因此 -like "s"
只会匹配 [=31] 的值=]完整 等同于文字 s
.
要改为匹配 以 文字 s
开头的输入,请使用通配符模式 s*
:
$svcAcc = $lastSeen | where-object { $_.sName -like 's*' }
顺便说一句:您对 select *
的使用似乎是多余的;同样,-eq $true
也不是绝对必要的,因此分配给 $lastSeen
可以简化为:
$lastSeen = $usrArr | Where-Object sEnabled | Sort-Object -Unique -Property sName
注意Where-Object sEnabled
是Where-Object { $_.sEnabled }
的缩写,是语法的简化introduced in PSv3,叫做比较语句.
您可以像您尝试的那样使用 -match
,但只需使用插入符号定位字符将您的查询转换为正则表达式。
$usrArr | Where-Object { $_.sName -match "^s" }
我有一个来自 AD 的散列 table,其中包含用户名和服务帐户。我正在尝试查找所有服务帐户。所有用户名都由首字母唯一标识,例如 'r' 和服务帐户 's'。例如:r398831 和 s882443。这是我拥有的数组的示例:
$null = $usrArr.Add([pscustomobject] @{
sName = $user.name
sGivenName = $user.GivenName
sSurname = $user.Surname
sEnabled = $user.Enabled
})
$lastSeen = $usrArr | select * | Where {$_.sEnabled -eq $true}
$lastSeen = $lastSeen | Sort-Object -Unique -Property sName
我试过使用 -contains 和 -match,但它似乎并没有拉回我所追求的:
$svcAcc = $lastSeen | where-object {$_.sName -like "s"}
我是否必须为每个执行一个,或者我只是弄乱了我的语法? 我在想也许我需要对对象进行排序,但必须有一种更简单的方法来完成如此基本的事情。感谢对此的任何建议。
提前致谢:)
最好的, 皮特
-like
运算符将 RHS 上的通配符模式与 整个 LHS 进行匹配,因此 -like "s"
只会匹配 [=31] 的值=]完整 等同于文字 s
.
要改为匹配 以 文字 s
开头的输入,请使用通配符模式 s*
:
$svcAcc = $lastSeen | where-object { $_.sName -like 's*' }
顺便说一句:您对 select *
的使用似乎是多余的;同样,-eq $true
也不是绝对必要的,因此分配给 $lastSeen
可以简化为:
$lastSeen = $usrArr | Where-Object sEnabled | Sort-Object -Unique -Property sName
注意Where-Object sEnabled
是Where-Object { $_.sEnabled }
的缩写,是语法的简化introduced in PSv3,叫做比较语句.
您可以像您尝试的那样使用 -match
,但只需使用插入符号定位字符将您的查询转换为正则表达式。
$usrArr | Where-Object { $_.sName -match "^s" }