2

我想调用一个简单的 Powershell 脚本文件,它应该在 ps 脚本失败时返回 0 或 1,或者分别从批处理文件中通过。并根据返回值,我想继续或退出。

以下说明了我尝试过的内容:

启动.bat:-

@ECHO OFF
SET x = powershell C:\Users\saravind\Desktop\pingping.ps1
if "%x%" == 1 then (
    doSomething1
    ECHO Ran project 1
)

pingping.ps1:-

$someIP = '192.168.173.299'
$result = $true
try { Test-Connection $someIP -Source localhost -ErrorAction Stop }
catch { $result = $false }

我想要实现的是,在执行 pingping.ps1 时,如果它可以成功 ping '192.168.173.299',它应该返回一些值,比如 1 到调用它的批处理文件。如果 ping 失败,它应该返回 0,这样批处理文件就不会继续执行 'doSomething' 即使 ping 失败,它也会使用我的代码继续执行 doSomething。我的代码有什么问题。

提前致谢。

4

2 回答 2

3

followign 对我有用,我使用 0 表示 powershell 脚本成功,1 表示发生错误。

启动.bat:

@echo off
powershell C:\Users\saravind\Desktop\pingping.ps1

if %errorlevel% equ 0 (
    doSomething1
    ECHO Ran project 1
)

pingping.ps1:

$someIP = '192.168.173.299'
try {
    Test-Connection $someIP -Source localhost -ErrorAction Stop
}
catch {
    exit 1
}
exit 0
于 2013-10-24T08:55:14.677 回答
1

为什么不测试“ping”是否成功?

你的 ps1 文件应该是:

$someIP = '192.168.173.299'
it ( Test-Connection $someIP )
{ 1 }
Else
{ 0 }

你的批处理文件应该是:

@echo off
FOR /f  %%i IN ('powershell -noprofile C:\Users\saravind\Desktop\pingping.ps1') DO set x=%%i
if "%x%" == 1 (
doSomething1
@echo  Ran project 1
)
于 2013-10-24T07:16:01.997 回答