这可能是一个新问题,但我现在花了几个小时。 我正在创建一个powershell脚本,试图确定一个条目是否已经存在。 (这是一个Exchange多租户解决方案) 这工作:带连字符的Powershell-like语法
Get-GlobalAddressList | Where{$_.Identity -Like "\MyCompany_com*"}
但这种失败:
Get-GlobalAddressList | Where{$_.Identity -Like "\MyCompany_com - GAL"}
出于某种原因,我无法捉摸,条目中的空格不匹配。
是的,我确定条目\MyCompany_com - GAL
存在。 我已经尝试过我可以使用的所有组合--match,-eq,-contains 任何帮助表示赞赏!
----编辑----------------------
尝试了新的机智,仍然失败草草收场:
$NewVal = "\MyCompany_com - GAL"
$Prop = Get-GlobalAddressList | Select Name
foreach($PropVal in $Prop.Name){
write-output "comparing: $NewVal to $PropVal"
if($NewVal -like $PropVal){write-output "MATCH"} else {write-output "no-match"}
}
写输出'显示'字符的匹配字符。
我已经用了很多语言编写了30多年的脚本,但是这个PowerShell废话让我感到莫名其妙。 #沮丧#
----编辑#2(示出输出)----------------------
comparing: MyCompany_com - GAL to MyCustomer_com - GAL
no-match
comparing: MyCompany_com - GAL to MyCompany_com - GAL
no-match
comparing: MyCompany_com - GAL to Default Global Address List
no-match
任何方式强制字符串比较?
空间人物还在搞我吗?
----编辑#3(仍在尝试)----------------------
我创建了一个新的GlobalAddressList:"MCC-GAL"
故意用没有空间。
这仍然不起作用:
Get-GlobalAddressList | Where{$_.Name -Like "MCC-GAL"}
然而,这并不匹配:
Get-GlobalAddressList | Where{$_.Name -Like "MCC?GAL"}
因此,除了空格字符,连字符( - )也造成匹配问题。我确实试图摆脱连字符:“ - - ”,但仍然没有匹配。
是否有任何方式强制一个简单字符串比较? 我用来构建比较字符串的方法将是我需要匹配的。
输出字符序号?您可能有一个嵌入式制表符,在显示时变成空格或可能是连字符而不是常规连字符/短划线字符。像'foreach($ PropVal $ Prop.Name){Write-Output [int] $ PropVal}'应该有希望工作。将该输出与相同代码的输出进行比较,用'$ NewVal'代替'$ Prop.Name'。我会使用-match与正则表达式,允许任何间距字符如果 - 样失败,但我也是PS新手,所以也许这是一个天真的解决方案。至少,它会确认空间是否是问题。 –
我希望我能得到[int]语法的工作,这将是很好的验证,但多次尝试没有返回字符代码希望。碰巧,我在文本文件中复制/粘贴了创建该条目的原始命令,并且将完全相同的文本复制/粘贴到我的PS脚本中。所以除非AD在做某种类型的覆盖,这应该是完全相同的文字。谢谢你的建议! –
'Where {[string] :: Compare($ _。Name,“MCC-GAL”,$ True)}'via [Microsoft](http://technet.microsoft.com/zh-cn/library/ee692804。 ASPX)?但是,我不会在其中存储太多的股票,但是,看看“CompareTo”方法如何被描述为不区分大小写的比较,但两个样本字符串尽管除了大小写相同,仍然没有相同的比较。我希望有所帮助。这真的不应该是这样的困难........ -_- –