在继续当前脚本的同时异步运行单独的 PowerShell 脚本

Ala*_*lan 0 powershell

PowerShell 脚本 #1 执行以下操作:

Performs FTP ops ending with saving updated remote directory data in a local file
Run Code Online (Sandbox Code Playgroud)

该脚本会快速运行,直到必须使用 FTP 获取远程目录数据。最好将远程目录数据检索删除到不同的 PowerShell 脚本 #2 中。

这篇 SO 文章解释了从脚本中启动脚本。但在这种情况下,第一个脚本似乎在第二个脚本执行时暂停。

我如何编写脚本 #1 以便脚本 #2 被启动并被遗忘,并且脚本 #1 继续并快速完成,让脚本 #2 在后台完成。

Rez*_*aei 6

您可以使用Start-Job来启动 PowerShell 后台作业。这样,作业在不与当前会话交互的情况下运行,并且会在作业异步运行时立即返回。如果您希望从作业Receive-Job中获得结果,则可以使用来获取结果。

例子

  • Start-Job -ScriptBlock {Get-Process}
  • Start-Job -Command "Get-Process"
  • Start-Job -FilePath "D:\script.ps1"

您也可以使用Start-Process来启动另一个进程。您可以指定程序可执行文件或脚本文件,或者可以使用计算机上的程序打开的文件。当您为不可执行的文件启动进程时,与该文件类型关联的程序将像您使用Invoke-Itemcmdlet时一样运行。

例子

  • Start-Process PowerShell -Argument "C:\MyScript.ps1"
  • Start-Process "C:\SomeFile.txt"