首页 > 解决方案 > 将 PowerShell cmdlet 的错误级别传递给批处理文件

问题描述

我正在修改现有批处理文件以测试服务器上的端口。我能看到的唯一方法是使用 PowerShell。我需要执行一个 cmdlet 并将错误级别传回批处理文件。所以我执行这样的事情:

PowerShell -Command "Test-NetConnection -ComputerName www.google.com -Port 80"

标签: powershellerror-handling

解决方案


与 不同Test-ConnectionTest-NetConnection不要直接抛出错误,只有在连接失败时发出警告(但您不能使用第一个端口测试端口)。确切地说,使用 ErrorVariable 找不到错误,但这不会使用 ErrorAction 抛出。

我认为最好的应该是:

@echo off
PowerShell -Command "try { Test-NetConnection -ComputerName localhost -Port 80 -WarningAction Stop } catch { exit 1 }"
if ERRORLEVEL 1 GOTO error
echo Continue
exit
:error
echo Error

ERRORLEVEL如果连接被验证,则为 0,如果连接失败,则为 1(您当然可以设置所需的退出代码)。


推荐阅读