powershell - 如何使用任务计划程序运行Cisco AnyConnect

标签 powershell batch-file scheduled-tasks

我想每晚运行一个脚本,该脚本将:

  • 启动VPN
  • 执行SQL查询
  • 断开VPN的

  • 目前,我有1-3的脚本,但是在将它们作为任务进行调度时遇到了问题。

    当我手动运行它们时,每个脚本都有效。

    它也可以在我安排任务并设置用户仅在上登录后运行并手动运行时运行

    但是,当我选择运行时,无论用户是否登录,都不会发生任何事情。 VPN永不连接,因此sql无法运行,等等。

    我已经对任务管理器中引用每个脚本的方式进行了各种更改(使用“s”,使用Program / Script中的完整路径或使用Start In进行exp),但似乎没有任何效果。

    有人知道导致任务无法运行的原因吗?

    以下是一些屏幕截图和代码:

    enter image description here
    enter image description here

    enter image description here

    我开始认为,当我未登录时,VPN客户端会阻止其运行。

    我还编写了AutoIt脚本,该脚本在登录后将起作用,但在不登录时将不起作用。
           #include <Constants.au3>
    
    
       ;~close any existing vpn
       CloseVPN()
    
       ;~start cmd
       Run("C:\WINDOWS\system32\cmd.exe")
       WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    
       ;~start vpn
       send('"C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe"' & "{ENTER}")
       Sleep(5000)
    
       ;~disconnect vpn
       send("disconnect" & "{ENTER}")
    
       ;~send connect commands
       send("connect VPNADDRESS" & "{ENTER}")
       Sleep(2000)
       send("USERNAME" & "{ENTER}")
       Sleep(2000)
       send("PASSWORD" & "{ENTER}")
       Sleep(2000)
    
       ;~run and wait for sql command
       RunSQL();
    
       ;~disconnect vpn
       send("disconnect" & "{ENTER}")
    
       CloseVPN()
    
       ;~close all cmd processes
       Local $process4 = ProcessList("cmd.exe")
       For $i = 1 To $process4[0][0]
       ProcessClose($process4[$i][1])
       Next
    
       ;~close cmd window
       ProcessClose("C:\WINDOWS\system32\cmd.exe")
       WinClose("C:\WINDOWS\system32\cmd.exe")
    
       ;~-------------------------------------
       ;~close vpn function
       Func CloseVPN()
          Local $process1 = ProcessList("vpncli.exe")
          For $i = 1 To $process1[0][0]
          ProcessClose($process1[$i][1])
          Next
    
          Local $process2 = ProcessList("vpnui.exe")
          For $i = 1 To $process2[0][0]
          ProcessClose($process2[$i][1])
          Next
    
       ;~    Local $process3 = ProcessList("vpnagent.exe")
       ;~    For $i = 1 To $process3[0][0]
       ;~    ProcessClose($process3[$i][1])
       ;~    Next
       EndFunc
    
    
       ;~-------------------------------------
       ;~run SQL function
       Func RunSQL()
          ;~start cmd
          Local $iPID = Run("C:\WINDOWS\system32\cmd.exe")
          WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    
          Send('sqlcmd -Q "EXEC sp_Merge" -S MYSQLSERVER -d MYDATABASE -o "C:\MergeScripts\sql_log.txt"' & "{ENTER}")
    
          Send("exit" & "{ENTER}")
          ProcessWaitClose($iPID)
    
       EndFunc
    

    最佳答案

    http://www.cisco.com/c/en/us/td/docs/security/vpn_client/anyconnect/anyconnect30/release/notes/anyconnect30rn.html
    Ctrl + F并键入“版本3.0.5080中的打开警告”

    那个版本的AnyConnect似乎有很多问题,这些问题都取决于很多事情。我建议更新到最新版本。如果该版本有适合您的错误,请等待直到发布修复该版本的版本。在那之前,您无能为力。

    关于powershell - 如何使用任务计划程序运行Cisco AnyConnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502119/

    相关文章:

    variables - Powershell 空值表达式

    python - 当 $env :path? 中定义了多个时,windows 如何决定使用哪个 python 可执行文件

    batch-file - 自动化 FFMPEG

    powershell - PowerShell 中的无限时间?

    linux - 通过 shell 脚本实现自动化

    sharepoint - 创建定时器作业的问题

    powershell - 确定脚本中两点之间定义的函数

    arrays - 从 ArrayList 中删除嵌套数组或 PSCustomObject

    java - 如何使用 Jar 文件在 IntelliJ IDEA 中设置运行/调试配置?

    batch-file - 批处理文件计算器除法余数