PowerShell脚本#1执行以下操作:
Performs FTP ops ending with saving updated remote directory data in a local file
脚本快速运行,直到必须使用FTP获取远程目录数据。最好将远程目录数据检索删除到不同的PowerShell脚本#2中。
This SO post解释了从脚本中启动脚本。但在这种情况下似乎第一个脚本在第二个脚本执行时被暂停。
如何编写脚本#1以便脚本#2启动并被遗忘,脚本#1继续并快速完成,让脚本#2在后台完成。
答案 0 :(得分:3)
您可以使用Start-Job
启动PowerShell后台作业。这样,作业在不与当前会话交互的情况下运行,并在作业异步运行时立即返回。如果您希望从作业中收到结果,可以使用Receive-Job
来获得结果。
示例
Start-Job -ScriptBlock {Get-Process}
Start-Job -Command "Get-Process"
Start-Job -FilePath "D:\script.ps1"
您还可以使用Start-Process
启动其他流程。您可以指定程序可执行文件或脚本文件,也可以使用计算机上的程序打开该文件。当您开始处理非可执行文件时,与该文件类型关联的程序将像使用Invoke-Item
cmdlet时一样运行。
示例强>
Start-Process PowerShell -Argument "C:\MyScript.ps1"
Start-Process "C:\SomeFile.txt"
答案 1 :(得分:0)
您将拥有一个包含多个功能的脚本。该脚本是标准的ps1脚本。这里的用例是您正在执行有效执行单个任务的代码块,您可以决定在脚本执行的哪个阶段执行哪些块:
Function Get-RemoteDirectory {
<Insert shorter running operation here>
}
Function Pull-RemoteDirectory {
Get-RemoteDirectory -Path <Path>
<Insert longer running operation here>
}
Pull-RemoteDirectory -SourcePath <Path> -DestinationPath <Path>
这里我调用第二个函数中的第一个函数。您可以在此处插入脚本逻辑。关注variable scopes。一旦你的脚本准备就绪,只需保存文件并执行任何Powershell脚本。
NB。您可以在脚本和/或函数中添加param()块。根据脚本运行时的要求,满足您的需求。