regex - 在 PowerShell/PowerCLI 中将前缀附加到字符串

标签 regex powershell powercli

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

代码如下:

$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

最佳答案

使用可扩展字符串:

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

或常规字符串连接:

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

关于regex - 在 PowerShell/PowerCLI 中将前缀附加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029567/

相关文章:

.net - 替换整行会产生重复出现的替换文本

powershell - 如何使用 VMware Java vSphere SDK 获取虚拟机引用?

python - 有效的域名正则表达式

java - Java 中匹配和替换 "${foo}"但不匹配 "<c:if test="${foo }"/>"的正则表达式

regex - 使用 GREP 和 AWK 从文件中提取子字符串的值

powershell - 如何使用框字符在 Powershell 中创建框

xml - 使用 "InsertBefore"参数 : "2" 调用 "The reference node is not a child of this node."时出现异常

javascript - 使用 JavaScript 替换功能,所有字符仅出现一次

powershell - 如何从PS输出中过滤出特定值

java - 从 Java 调用时 powershell/powerCLI 性能缓慢