【问题标题】:Powershell TRIM() is removing extra characterPowershell TRIM() 正在删除多余的字符
【发布时间】:2017-02-07 21:05:36
【问题描述】:

我正在尝试从我的 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 ?如何强制它修剪正确的字符。

【问题讨论】:

    标签: powershell trim


    【解决方案1】:

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

    如果你只想获取服务器名,使用-split操作符,然后丢弃实例名:

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

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

    【讨论】:

      【解决方案2】:

      嗯,这就是修剪的工作原理,它将删除所有你要修剪的字符的所有出现。

      "agababga".Trim("ag")
      

      将返回bab 而不是ababga,请注意它没有在bab 内修剪a,因为它无法修剪b,如果这样做:

      "agababga".Trim("agb")
      

      你不会得到任何响应(空字符串)

      【讨论】:

        【解决方案3】:

        你也可以像这样使用convertfrom-string

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

        【讨论】:

          【解决方案4】:

          我会使用 split 调用:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-10
            • 1970-01-01
            • 1970-01-01
            • 2013-05-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多