首页 > 解决方案 > Powershell在不同的对象上拆分

问题描述

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

vm01-disk1
vm01_disk2

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

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

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

希望这是有道理的。提前感谢任何提示或建议:)

标签: powershellazure-powershell

解决方案


  • 除非性能是最重要的,否则我建议定期使用 PowerShell 的基于正则表达式-split的运算符,原因在此答案中讨论。

    • 从一组字符中任意分割可以表示为将这些字符包含在一个正则表达式中;在手头的情况下:[...][-_]
  • .ForEach()数组方法可以(相当)有效地对内存中已经存在的值集合的每个元素进行操作。

因此,我建议如下:

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

推荐阅读