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;
}
下面 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;
}