我有这样的PowerShell脚本:
Foreach ($file in $files) {
[Do something]
[Do something]
[Do something]
}
Run Code Online (Sandbox Code Playgroud)
这样,一个文件将在另一个文件之后处理.我想同时处理4个文件.
我知道foreach -parallel循环,但是并行执行[do something]任务.我基本上想要并行运行整个foreach循环.
如何在PowerShell中实现这一目标?
W:> $job = start-job { Write-Output "hi there"; throw "an error!" } | Wait-Job
W:> $job | select *
State : Failed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Write-Output "hi there"; throw "an error!"
JobStateInfo : Failed
Finished : System.Threading.ManualResetEvent
InstanceId : 882957a9-a5e0-4876-bd22-0dbd87512f10
Id : 7
Name : Job7
ChildJobs : {Job8}
PSBeginTime : 3/24/2013 5:52:41 PM
PSEndTime : 3/24/2013 5:52:47 PM
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : …Run Code Online (Sandbox Code Playgroud) 我需要下载四个大型操作系统安装介质。如果我等待每个下载完成然后再进行下一个下载,这将需要很长时间。在下载之前,我想检查媒体是否已经存在。
该解决方案可能是哈希表、测试路径和调用网络请求的组合,但我无法破解它。
所以在伪代码中:
Check if file1 exists
if true then download and check file2
if false check file 2
check if file 2 exists...
Run Code Online (Sandbox Code Playgroud)
因此,请检查文件是否存在,如果不存在,请开始下载所有丢失的文件。
我对PS不是很有经验,所以非常感谢您的帮助,非常感谢!研究答案很有趣,但我觉得我在这里缺少一个关键字......
我有一个 azure 订阅,其中有超过 200 个 appServices,其中大约一半有连续的,总是在附加的 webJobs 上,有些也有插槽,也有 webJobs。
有没有办法列出订阅中的所有 web 作业?我最初尝试使用 powershell 来执行此操作,但它变得相当复杂,并且想知道是否有人知道实现上述目标的简单方法。
似乎 Get-AzureRmWebApp 应该能够提供帮助,但我找不到列出驻留在 webapp 中的作业的方法。
powershell azure azure-resource-manager azure-web-app-service