【问题标题】:Powershell - Stop if there is more than one matchPowershell - 如果有多个匹配项则停止
【发布时间】:2022-11-29 08:38:07
【问题描述】:

这是我创建的代码的一部分:

$NameBackup = "Backup"
$DestinationDrive = ""
Get-CimInstance win32_logicaldisk |
     ForEach-Object{
         if ($_.VolumeName -match "$NameBackup"){
             $DestinationDrive = "{0}{1}" -f $_.DeviceId,'\'
         }
     }

基本上它会检查卷标中是否有任何带有“备份”字样的驱动器,并获取该驱动器的盘符。

鉴于此,我想创建一个代码来停止脚本并在有多个 - 与 $NameBackup 变量匹配时显示一条错误消息。

我怎样才能做到这一点?

【问题讨论】:

    标签: windows powershell


    【解决方案1】:

    在这种情况下,您可以使用 -Filter,然后检查返回查询的 .Count 属性是否大于 1,如果是,则使用 throw 停止您的脚本。如果 $cim 被填充,可能还值得添加一个新的条件检查。

    $NameBackup = "Backup"
    $cim = Get-CimInstance Win32_LogicalDisk -Filter "VolumeName LIKE '%$NameBackup%'"
    if($cim.Count -gt 1) {
        throw "More than one Volume Detected"
    }
    $DestinationDrive = $cim.DeviceID + ''
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多