Powershell 在不同的对象上拆分

Powershell split on different objects

我正在尝试创建一个将拆分为各种对象的脚本。例如我有磁盘名称

vm01-disk1
vm01_disk2

我正在尝试拆分磁盘名称以便重命名磁盘 vm,但保留磁盘编号,我试过的是

 $snapshot = Get-AzSnapShot
 $vhdlong = ($snapshot.name).Split("_")[0]
 $vhdrename = $vhdlong.split("-")[1]

但这仍然保持 vm01_disk2 不变,如果我添加 $vhdrename = $vhdlong.split("_")[1] 它会使 vm01-disk1 保持不变。

希望这是有道理的。在此先感谢您提供任何提示或建议:)

  • 除非性能至上,否则我建议常规使用 PowerShell 的 regex-based -split operator, for the reasons discussed in

    • set 字符中按 any 拆分可以表示为将这些字符包含在正则表达式中的 [...] 中;在手头的案例中:[-_]
  • .ForEach() array method 启用了一种(相当)有效的方法来对内存中已存在的值集合的每个元素进行操作。

因此,我提出以下建议:

(Get-AzSnapShot).Name.ForEach({ ($_ -split '[-_]')[1] })