Powershell背景如果Ping脚本

时间:2016-06-29 15:05:51

标签: powershell if-statement ping

我有一个旧的CMD脚本,我想将其转换为在后台运行的Powershell脚本,即CMD脚本:

@echo off
timeout /t 300 /nobreak
ping -n 1 -i 135 -w 130 192.168.1.250
if errorlevel 1 goto Ende
goto Program
:Program
start "" "C:\Program Files (x86)\XXX\XXX.exe"
Exit

:Ende
Exit

脚本检查路由器是否可ping,如果是,则启动程序。 我对使用CMD或Powershell完全没有经验(参见Goto&lt;。&lt;),我尝试用谷歌做这个并找到一些解决方案在后台运行它但它们并没有真正为我做好准备。< / p>

Sleep选项应该与start-sleep -s 300一起使用,Ping检查使用if(test-connection -computername Server01 -quiet),但我不能完全确定如何在ping周围执行if语句。

问候

2 个答案:

答案 0 :(得分:1)

我试试这个:

平AndLaunch.ps1:

Start-Sleep -Seconds 300

if(Test-Connection "192.168.1.250" -Count 1 -TimeToLive 135) {
    & "C:\Program Files (x86)\XXX\XXX.exe"
}

启动命令(隐藏PowerShell窗口):

powershell -File .\Ping-AndLaunch.ps1 -WindowStyle Hidden

答案 1 :(得分:0)

This is a post by IAMGr00t on community.spiceworks.com

“1。部署将执行策略设置为远程签名的策略,您必须签署脚本。Have a look here on how to do that.

  1. 制作一个.bat文件,启动后会打开PowerShell并运行命令。需要注意的是,正确使用开关非常重要。如果这些需要特定于运行脚本的用户,请不要使用-noprofile。如果您希望它在后台静默运行,您的批处理文件将如下所示。
  2. powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file“name_of_script.ps1”

    编辑:如果您的文件位于另一个UNC路径上,则该文件将如下所示。 -file“\ server \ folder \ script_name.ps1”

    这些切换将允许用户通过双击批处理文件来执行PowerShell脚本。没有窗口,没有版权标识,也没有用户交互性。这个的好处是,用户没有看到背景噪音。我最近不得不这样做。它的工作原理不会影响所有用户的执行策略。

    如果您可以使用-bypass标记运行脚本,那么您真的想知道您的环境是多么安全。还要记住需要管理写入权限的事情。但是,我上面所说的应该指向正确的方向。只需使用一行打开PowerShell创建一个.bat文件即可。它感觉笨重(它是),但它的确有效。“

相关问题