Powershell splat 销毁变量

Powershell splat destroy variable

下面 Split-Path 的参数不正确,应该是 $delZipExe
这使得 $delZipCmd 散列被设置为空。
我希望 WorkingDirectory 值在 $delZipCmd 散列中设置为空。

为什么会这样?

Set-StrictMode -Version latest
$delZipExe = '\servername\ziptools\SP3DDeliverZips.exe'
$delZipDest = "D:\"
$delZipArgs = @( '/execute',
                 '/source', '/RAD ', '/debugpdb', '/wait'
               )
$delZipCmd = @{ FilePath = $delZipExe;
                ArgumentList = $delZipArgs;
                NoNewWindow = $true;
                WorkingDirectory = (Split-Path $delZipCmd);   # <== should be $delZipExe
                Wait = $true;
              }
$delZipCmd | ft

由于 Split-Path 的参数自变量验证抛出终止错误 哈希 table 的构建过程中,整个表达式被终止。

您可以在子表达式 ($()) 中隔离 Split-Path 语句以避免这种情况:

$delZipCmd = @{ 
    FilePath = $delZipExe;
    ArgumentList = $delZipArgs;
    NoNewWindow = $true;
    WorkingDirectory = $(Split-Path $delZipCmd);   # <== notice the $
    Wait = $true;
}