Powershell TRIM()正在消除额外的角色

时间:2017-02-07 21:05:36

标签: powershell trim

我正在尝试从我的SQL Server实例“WSFCSQLN1 \ MOSS2013”​​中删除“\ MOSS2013”​​实例名称

这有效:

$primaryReplicaGEN = $wsfcsqln2.AvailabilityGroups.PrimaryReplicaServerName
$primaryReplica = $PrimaryReplicaGEN.TRIM("\GEN")

$ primaryReplica显示WSFCSQLN1

$ primaryReplicaGEN显示WSFCSQLN1 \ GEN

这不起作用:

$primaryReplicaMOSS2013 = $wsfcsqln1MOSS2013.AvailabilityGroups.PrimaryReplicaServerName
$primaryReplica = $PrimaryReplicaMOSS2013.TRIM("\MOSS2013")

$ primaryReplica显示WSFCSQLN

$ primaryReplicaMOSS2013显示了WSFCSQLN1 \ MOSS2013

请注意,即使我没有选择修剪它,副本名称也会在结尾处缺少1。为什么要为这个特定的字符串对象修剪1?如何强制它修剪正确的字符。

4 个答案:

答案 0 :(得分:2)

好吧,那就是修剪如何运作,它将删除你要修剪的所有角色的所有出现位置。

"agababga".Trim("ag")

会返回bab而不是ababga,请注意a内部bab没有修剪b因为它无法修剪"agababga".Trim("agb") ,如果你这样做:

if (str == null) {
  return new String[0];
}

你没有得到任何东西(空字符串)作为回应

答案 1 :(得分:2)

Trim()将字符串参数转换为[char[]],并从字符串的两端删除任何字符。

如果您只想获取服务器名称,请使用-split运算符,然后丢弃实例名称:

$ServerName = 'WSFCSQLN1\MOSS2013' -split '\\' |Select-Object -First 1

$ServerName,$null = 'WSFCSQLN1\MOSS2013' -split '\\'

答案 2 :(得分:2)

你可以像这样使用convertfrom-string

$SplitedVar='WSFCSQLN1\MOSS2013' | ConvertFrom-String -Delimiter "\\" -PropertyNames "Domain", "ServerName"
$SplitedVar.Domain
$SplitedVar.ServerName

答案 3 :(得分:1)

我会使用拆分电话:

$primaryReplica = $PrimaryReplicaGEN.split('\')[0];