将前缀附加到 PowerShell/PowerCLI 中的字符串
Append a prefix to a string in PowerShell/PowerCLI
我正在尝试使用 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
你不必在这里使用正则表达式,只需使用格式字符串:
"{0}{1}" -f $prefix, $VMlist[0].Name
使用可扩展字符串:
$prefixedString = "$prefix$($VMlist[0].Name)"
或常规字符串连接:
$prefixedString = $prefix + $VMlist[0].Name
我正在尝试使用 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
你不必在这里使用正则表达式,只需使用格式字符串:
"{0}{1}" -f $prefix, $VMlist[0].Name
使用可扩展字符串:
$prefixedString = "$prefix$($VMlist[0].Name)"
或常规字符串连接:
$prefixedString = $prefix + $VMlist[0].Name