【问题标题】:Append a prefix to a string in PowerShell/PowerCLI在 PowerShell/PowerCLI 中为字符串附加前缀
【发布时间】:2017-10-17 04:40:00
【问题描述】:

我正在尝试使用 PowerCLI 将特定后缀附加到 VM 列表中,问题是我无法匹配字符串的开头并仅替换它,而我得到的是附加我的名称的每个字母的前缀。

代码如下:

$vApp="some-vapp"
$prefix = "SA-"

$VMlist = Get-VApp -Name $vApp | Get-VM

for ($i=0; $i -lt $VMlist.length; $i++) {
    $destVMName = $VMlist[$i].Name -replace $^.Name, $prefix
    $VMlist[$i] | set-vm -Name $destVMName -Confirm:$false -RunAsync:$true
}

问题出在正则表达式中

$VMlist[$i].Name -replace $^.Name, $prefix

这是一个输出示例:

PS > $VMlist[0].Name
Shared_AD_W2012
PS > $VMlist[0].Name -replace $^.Name, $prefix
SA-SSA-hSA-aSA-rSA-eSA-dSA-_SA-ASA-DSA-_SA-WSA-2SA-0SA-1SA-2SA-

期望的结果是:SA-Shared_AD_W2012

【问题讨论】:

    标签: regex powershell powercli


    【解决方案1】:

    使用可扩展字符串:

    $prefixedString = "$prefix$($VMlist[0].Name)"
    

    或常规字符串连接:

    $prefixedString = $prefix + $VMlist[0].Name
    

    【讨论】:

    • 完美!我太专注于正则表达式,忘记了更简单的方法,tks!
    【解决方案2】:

    不必在这里使用正则表达式,只需使用格式字符串

    "{0}{1}" -f $prefix, $VMlist[0].Name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 2013-08-27
      • 2018-07-12
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多