不要任何人知道,如果我能在PowerShell中的工作流程使用Invoke-Command
?
目前,我有脚本,通过与服务的列表的文本文件循环,但我想它推到所有服务器立刻经文由一个通过一个去。这可能吗?
这是当前脚本块我一起工作:
{
ForEach ($Server in $Servers) {
Write-Host "Copying code to $Server..."
If (!(Test-Path -path \\$Server\c$\Websites\Versions\v$version)) {
New-Item \\$Server\c$\Websites\Versions\v$version -Type Directory | Out-Null
}
Copy-Item .\Packages\v$version\* \\$Server\c$\Websites\Versions\v$version -Force -Recurse
Write-Host "Converting to application on $Server..."
Invoke-Command -ComputerName $Server -ScriptBlock $Script -Argumentlist $Version | Out-Null
}
}
PowerShell的工作流引擎是不能够直接调用PowerShell命令。相反,如果一个编剧调用工作流定义范围内的PowerShell命令,PowerShell的工作流引擎会自动换行InlineScript
工作流活动中PowerShell命令的调用。
workflow test
{
ForEach ($Server in $Servers) {
Write-Host "Copying code to $Server..."
If (!(Test-Path -path \\$Server\c$\Websites\Versions\v$version)) {
New-Item \\$Server\c$\Websites\Versions\v$version -Type Directory | Out-Null
}
Copy-Item .\Packages\v$version\* \\$Server\c$\Websites\Versions\v$version -Force -Recurse
Write-Host "Converting to application on $Server..."
InlineScript {
Invoke-Command -ComputerName $Server -ScriptBlock $Script -Argumentlist $Version | Out-Null
}
}
}
至于它是否会工作,你必须尝试一下,由马蒂亚斯的建议。