【问题标题】:Powershell Background if Ping scriptPing 脚本时的 Powershell 背景
【发布时间】:2016-11-01 09:21:35
【问题描述】:

我有一个旧的 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 <. google>

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

问候

【问题讨论】:

    标签: powershell if-statement ping


    【解决方案1】:

    我会试试这个:

    Ping-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
    

    【讨论】:

    • 首先谢谢,还有一个问题,如何让 Powershell 脚本在后台运行?
    • 什么意思?什么都不显示?
    • 是的,不打开 Powershell 窗口。
    • 没有启动命令就不能运行隐藏的脚本吗?该脚本应该作为组策略运行,我认为我不能在那里使用启动命令。
    • 对不起,这是我知道的唯一方法。
    【解决方案2】:
    This is a post by IAMGr00t on community.spiceworks.com
    

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

    1. 制作一个 .bat 文件,启动时将打开 powershell 并运行命令。这里需要注意的是,正确使用开关非常重要。如果这些需要特定于运行脚本的用户,请不要使用 -noprofile。如果您希望它在后台静默运行,您的批处理文件将如下所示。

    powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "name_of_script.ps1"

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 2013-11-25
      相关资源
      最近更新 更多