【问题标题】:How to call a Powershell file from a batch file如何从批处理文件中调用 Powershell 文件
【发布时间】:2013-10-24 06:51:09
【问题描述】:

我想调用一个简单的 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' 即使 pinging 失败,它仍会使用我的代码执行 doSomething。我的代码有什么问题。

提前致谢。

【问题讨论】:

  • 这是一个重复的问题。检查那个:stackoverflow.com/questions/6180572/…
  • 我认为这不是重复的。他说ps1文件确实存在。他只是试图执行一个powershell语句。
  • 道歉,我不清楚是否可以更改调用 SET x = powershell C:\Users\saravind\Desktop\pingping.ps1 以返回某些内容。我总是得到 as "" 的价值。感谢您的耐心等待
  • 你为什么不试试类似的东西:powershell -ExecutionPolicy RemoteSigned -File "C:\Users\saravid\Desktop\pingping.ps1"

标签: windows powershell batch-file


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 非常感谢@C.B,但在这两种情况下(对于 1 和 o),doSomething 都会被执行。
    • @user2234700 哎呀.. 删除 if 语句后的 then.. 已在我的答案中修复它.. 立即尝试。
    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多