下面的 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/