Powershell 工作流中的并行
我试图理解并行工作流是如何工作的,所以我开始为这项工作开发一个简单的脚本。但无法理解如何检索(甚至保存)信息。Powershell 工作流中的并行,powershell,Powershell,我试图理解并行工作流是如何工作的,所以我开始为这项工作开发一个简单的脚本。但无法理解如何检索(甚至保存)信息。 编辑:忘了提到以下代码没有按我预期的那样工作 $wks ='wks1.domain.com','wks2.domain.com','wks3.domain.com' workflow ExampleWorkflow{ param ($wks_list) $array_workflow = @() foreach -Parallel ($workstatio
编辑:忘了提到以下代码没有按我预期的那样工作
$wks ='wks1.domain.com','wks2.domain.com','wks3.domain.com'
workflow ExampleWorkflow{
param ($wks_list)
$array_workflow = @()
foreach -Parallel ($workstation in $wks_list){
$processes = Get-Process -PSComputerName $workstation
foreach($process in $processes){
$info = New-Object -TypeName PSObject
$info | Add-Member -Type NoteProperty -Name ID -Value $process.ID
$info | Add-Member -Type NoteProperty -Name ProcessName -Value $process.ProcessName
$info | Add-Member -Type NoteProperty -Name RAM -Value $process.PM
$info | Add-Member -Type NoteProperty -Name WKS -Value $workstation
$WORKFLOW:array_workflow += $info
}
}
}
ExampleWorkflow $wks
有人能帮助我理解如何操作工作流中的数据,以便在退出工作流后可以访问这些数据吗?如果内存没有问题,我相信工作流会创建在后台启动的PS作业。get-job和receive-job等cmdlet将用于获取此数据。签出接收作业-保留,这将保留作业数据。如果不使用它,数据在执行后会消失。在修改代码后,在答案和一些研究的帮助下,我想出了这个解决方案:
$wks ='wks1.domain.com','wks2.domain.com','wks3.domain.com'
workflow ExampleWorkflow{
param ($wks_list)
foreach -Parallel ($workstation in $wks_list){
InlineScript{
$processes = Get-Process -ComputerName $using:workstation
foreach($process in $processes){
$obj = New-Object -type PSObject -Property @{
ID = $process.ID
ProcessName = $process.ProcessName
Memory = ($process.PM / 1MB)
Workstation = $using:desktop
}
Write-Output $obj
}
}
}
}
$var = ExampleWorkflow $wks
Do-Stuff with $var
不能在工作流中使用对象。尝试在foreach中使用
inlinescript{}
块。可以将inlinescript块的输出加载到变量中,但它仍然不能是对象。在这些情况下,我通常将其导出为JSON,然后再转换为工作流之外的对象。您能给我一个示例吗?例如,我在工作流中执行$array| workflow |转换为Json
。但是它存储在哪里呢?