下面的 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 的参数参数的验证会引发终止错误,因此整个表达式将终止。

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

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

关于Powershell splat破坏变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40747997/

10-09 02:50