输入:
john.dow-g stephanie.adam-p paul.douglas-steve-svr-z jane.young-ac-a
输出:
-g -p -svr-z -ac-a
我的查询是固定的,但如何在' - '之前删除字符,如上面在PowerShell for Active Directory中的输出中提到的那样?
Get-ADUser -Identity john.dow-g -Server 'domaincontroller.com' -Properties * |
select {n="suffix";e={$_.SamAccountName.Substring(9)}}
答案 0 :(得分:0)
get-aduser -identity john.dow-g -server 'domaincontroller.com' -properties *|
Foreach-object{
$Array = ($_.split('-'))
'-' + (($Array[1..($Array.count-1)]) -join '-')
}
你将继续遇到问题。
答案 1 :(得分:0)
我认为你错过了关于这个问题的信息,你要么有一个模板要比较,也就是说。 @(' - ABC-A', - abc-a),或者你检查例如最后2' - '以及它们之间的内容。
我将扩展第二个:
管道:
'paul.douglas-steve-svr-z' | % {$_.Substring($_.Substring(0,$_.LastIndexOf('-')).lastIndexOf('-'),$_.Length-($_.Substring(0,$_.LastIndexOf('-')).lastIndexOf('-')))}
正如你所看到的那样,少数几个可以扩展到尽可能多的' - '。
更好的方式(IMO):
$text='paul.douglas-steve-svr-z'
if($text.Split('-').Count -ge 3){
$lastSymbolPosition = $text.LastIndexOf('-')
$secondLastSymbilPosition = $text.Substring(0,$lastSymbolPosition).LastIndexOf('-')
$prefix=$text.Substring($secondLastSymbilPosition,$text.Length-$secondLastSymbilPosition)
$prefix
}else{
'Out of the solution scope'
}
虽然我不能给你一个确定的答案,因为我不知道这个文本处理的目的。
希望这有帮助。