powershell - 如何在 PowerShell 上为每个循环运行并行
问题描述
我在下面有一个 Powershell 脚本,它在多个远程服务器上运行计划任务:
Workflow Invoke-ParallelWorkflow
{
$ListFile='server_list.txt'
$ServerList = (get-content $ListFile) -match '^[^#\r\n].*'
ForEach ($Server in $ServerList)
{
InlineScript{ Invoke-Command -ComputerName $Server -ScriptBlock { schtasks /run /tn MM\fileOSclean }}
}
}
Invoke-ParallelWorkflow
pause
问题是它没有读取 $Server 变量的值
Invoke-Command : Cannot validate argument on parameter 'ComputerName'. The argument is null or empty. Provide an
argument that is not null or empty, and then try the command again.
At Invoke-ParallelWorkflow:15 char:15
+
+ CategoryInfo : InvalidData: (:) [Invoke-Command], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeCommandCommand
+ PSComputerName : [localhost]
如果我删除 ForEach 并对每个服务器名称进行硬编码,该脚本将起作用,如下所示:
Workflow Invoke-ParallelWorkflow
{
parallel
{
InlineScript{ Invoke-Command -ComputerName ServerName1 -ScriptBlock { schtasks /run /tn myScheduleTask }}
InlineScript{ Invoke-Command -ComputerName ServerName2 -ScriptBlock { schtasks /run /tn myScheduleTask }}
InlineScript{ Invoke-Command -ComputerName ServerName3 -ScriptBlock { schtasks /run /tn myScheduleTask }}
}
}
Invoke-ParallelWorkflow
pause
server_list.txt 有一个有效的内容,我可以write-host $Server
在 ForEach 命令中运行时输出它
解决方案
推荐阅读
- oracle - ORA-01017:如何在 Oracle SQL Developer 中创建新用户 [已解决]
- r - R - 使用各种方法将使用 fread() 导入的列转换为日期导致对 all.equal() 的 FALSE 评估
- javascript - 所以我想访问浏览器控制台以通过我将编写的程序来提供 javascript 指令,但我无法谷歌如何
- angular - 如何在Angular中将时间转换为这种格式YYYY-MM-DDThh:mm:ssTZD?
- pug - 如何在 pug.js 中进行双插值?
- spring-boot - 在spring cloud stream和kafka的功能模型中,如果发生异常,如何发送到另一个主题(错误主题)?
- javascript - 拖放测验 Vanilla Javascript
- ruby - 没有记忆的 min_path_sum_problem 的时间复杂度是多少?
- typescript - 如何将传单集成到 Power BI 中
- python - pyspark 列的总和以忽略 NaN 值