繁体   English   中英

如何从批处理文件调用Powershell文件

[英]How to call a Powershell file from a batch file

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

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

的startup.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操作。 我的代码有什么问题。

提前致谢。

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

的startup.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

为什么不测试“ 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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM