use*_*814 2 sorting powershell powershell-5.0
我有一个AD的哈希表,包含用户名和服务帐户.我正在尝试查找所有服务帐户.所有用户名都由其首字母(如"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
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用-contains和-match但它似乎没有拉回我追求的东西:
$svcAcc = $lastSeen | where-object {$_.sName -like "s"}
Run Code Online (Sandbox Code Playgroud)
我是否必须为每个执行一个或者我刚搞砸了我的语法?我想也许我需要排序 - 对象,但必须有一个更简单的方法来拉出一些基本的东西.感谢任何有关它的建议.
提前致谢 :)
最好,皮特
在-like操作上对RHS上的通配符模式匹配整个 LHS,所以-like "s"永远只能匹配是价值观完全一致的文字s.
要改为匹配以 literal 开头的输入s,请使用通配符模式s*:
$svcAcc = $lastSeen | where-object { $_.sName -like 's*' }
Run Code Online (Sandbox Code Playgroud)
除此之外:你的使用select *似乎是多余的; 同样,-eq $true并非严格必要,因此分配$lastSeen可以简化为:
$lastSeen = $usrArr | Where-Object sEnabled | Sort-Object -Unique -Property sName
Run Code Online (Sandbox Code Playgroud)
请注意,Where-Object sEnabled是短期的Where-Object { $_.sEnabled },这是一个简化的语法在PSv3推出,称为比较报表.
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |