2017-01-03 77 views
1

有誰知道我是否可以在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 
    } 
} 
+2

你試過了嗎? :) –

回答

1

PowerShell的工作流引擎是不能夠直接調用PowerShell命令。相反,如果腳本編寫者在工作流定義內調用PowerShell cmdlet,PowerShell工作流引擎將自動將調用PowerShell cmdlet包裝在InlineScript工作流活動中。

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 
     } 
    } 
} 

至於它是否會起作用,您必須嘗試一下,正如Mathias所建議的那樣。

相關問題