我有PowerShell代码
$target_dir = "\\server\share\"
$DelTmpStatus = "init value"
if ( Test-Path ( $target_dir + "receivals.tmp") )
{
del ( $target_dir + "receivals.tmp")
$DelTmpStatus = "Present and delete status $?"
} else {
$DelTmpStatus = "NA"
}
Run Code Online (Sandbox Code Playgroud)
有时它会通过$ DelTmpStatus设置为“初始值”而通过本节。
if-else结构如何不遵循任何一条路径?当给if函数一个错误而不是true或false时,powershell中的if-else结构不执行任何操作吗?
$ PSVersionTable.psversion为3.0
编辑:我自己运行时,无论是完全运行还是分步运行,我都没有任何错误或问题。但是有时计划的作业将运行,而$ DelTmpStatus仍将是“初始值”,我想当\\server\share\路径由于服务器处于低功耗模式而在一夜之间花费的时间太长而无法响应并且测试路径功能超时时,就会发生这种情况。虽然我不确定这是否是原因。
编辑:做测试的结果
$target_dir使其遵循else路径并设置$DelTmpStatus为“ NA”$target_dir = "C:\..\..\invalid\"在测试路径中使用无效的路径(例如结果),将错误写入stderr并返回true(不理想,但无论如何),使程序顺着尝试删除文件的操作(再次出现错误),然后将其设置$DelTmpStatus为“存在并删除状态为False”。这并不是特别有帮助的事情,但是至少执行了if-else语句中的代码。