我有一个旧的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语句。
问候
答案 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.
或
powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file“name_of_script.ps1”
编辑:如果您的文件位于另一个UNC路径上,则该文件将如下所示。 -file“\ server \ folder \ script_name.ps1”
这些切换将允许用户通过双击批处理文件来执行PowerShell脚本。没有窗口,没有版权标识,也没有用户交互性。这个的好处是,用户没有看到背景噪音。我最近不得不这样做。它的工作原理不会影响所有用户的执行策略。
如果您可以使用-bypass标记运行脚本,那么您真的想知道您的环境是多么安全。还要记住需要管理写入权限的事情。但是,我上面所说的应该指向正确的方向。只需使用一行打开PowerShell创建一个.bat文件即可。它感觉笨重(它是),但它的确有效。“