Aracılığıyla paylaş


Invoke-AsWorkflow

Windows PowerShell İş Akışı olarak bir komut veya ifade çalıştırır.

Sözdizimi

Invoke-AsWorkflow
      [-CommandName <String>]
      [-Parameter <Hashtable>]
      [-InputObject <Object>]
      [<CommonParameters>]
Invoke-AsWorkflow
      [-Expression <String>]
      [-InputObject <Object>]
      [<CommonParameters>]

Description

Invoke-AsWorkflow iş akışı herhangi bir komutu veya ifadeyi iş akışında satır içi betik olarak çalıştırır. Bu iş akışları standart iş akışı semantiğini kullanır, tüm iş akışı ortak parametrelerine sahiptir ve durdurma, sürdürme ve kurtarma gibi iş akışlarının tüm avantajlarına sahiptir.

İş akışları, kritik verileri toplayan uzun süre çalışan komutlar için tasarlanmıştır, ancak herhangi bir komutu çalıştırmak için kullanılabilir. Daha fazla bilgi için bkz. about_Workflows.

Bu komuta iş akışı ortak parametreleri de ekleyebilirsiniz. İş akışı ortak parametreleri hakkında daha fazla bilgi için bkz. about_WorkflowCommonParameters

Bu iş akışı Windows PowerShell 3.0'da kullanıma sunulmuştur.

Örnekler

Örnek 1: cmdlet'i iş akışı olarak çalıştırma

Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy

PSComputerName                     PSSourceJobInstanceId                   Value
--------------                     ---------------------                   -----
Server01                           77b1cdf8-8226-4662-9067-cd2fa5c3b711    AllSigned
Server02                           a33542d7-3cdd-4339-ab99-0e7cd8e59462    Unrestricted
Server03                           279bac28-066a-4646-9497-8fcdcfe9757e    AllSigned
localhost                          0d858009-2cc4-47a4-a2e0-da17dc2883d0    RemoteSigned

Bu komut, Get-ExecutionPolicy cmdlet'ini yüzlerce bilgisayarda iş akışı olarak çalıştırır.

komut, iş akışında çalışan cmdlet'i belirtmek için CommandName parametresini kullanır. Komutun üzerinde çalıştığı bilgisayarları belirtmek için PSComputerName iş akışı ortak parametresini kullanır. PSComputerName parametresinin değeri, Servers.txt dosyasından bilgisayar adlarının listesini alan bir Get-Content komutudur. Parametre değeri, Windows PowerShell'i değeri kullanmadan önce Get-Command komutunu çalıştırmaya yönlendirmek için parantez içine alınır.

Tüm uzak komutlarda olduğu gibi, komut yerel bilgisayarda çalışıyorsa (PSComputerName parametresinin değeri yerel bilgisayarı içeriyorsa), Windows PowerShell'i "Yönetici olarak çalıştır" seçeneğiyle başlatmanız gerekir.

Örnek 2: Parametrelerle bir cmdlet çalıştırma

$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5

İlk komut, Servers.csv dosyasındaki içerikten bir nesne oluşturmak için Import-Csv cmdlet'ini kullanır. komut, hedef bilgisayarların adlarını içeren ve "uzak düğümler" olarak da bilinen sütun için bir ServerName özelliği oluşturmak için Header parametresini kullanır. komutu sonucu $s değişkenine kaydeder.

İkinci komut, Servers.csv dosyasındaki bilgisayarlarda bir Get-ExecutionPolicy komutu çalıştırmak için Invoke-AsWorkflow iş akışını kullanır. komut, iş akışında çalıştırılacak komutu belirtmek için Invoke-AsWorkflowCommandName parametresini kullanır. Get-ExecutionPolicy cmdlet'in Scope parametresini İşlemdeğeriyle belirtmek için Invoke-AsWorkflowParameter parametresini kullanır. Komut, komutu her bilgisayarda beş denemeyle sınırlamak için PSConnectionRetryCount iş akışı ortak parametresini ve uzak düğümlerin (hedef bilgisayarlar) adlarını belirtmek için PSComputerName iş akışı ortak parametresini de kullanır. PSComputerName parametresinin değeri, $s değişkenindeki her nesnenin ServerName özelliğini alan bir ifadedir.

Bu komutlar, yüzlerce bilgisayarda iş akışı olarak bir Get-ExecutionPolicy komutu çalıştırır. Komut, yürütme ilkesini geçerli oturumda almak için Get-ExecutionPolicy cmdlet'in Scope parametresini İşlem değeriyle kullanır.

Örnek 3: İfadeyi iş akışı olarak çalıştırma

Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig

Id     Name          PSJobTypeName   State         HasMoreData   Location                Command
--     ----          -------------   -----         -----------   --------                -------
2      IpConfig      PSWorkflowJob   Completed     True          Server01, Server01...   Invoke-AsWorkflow

Bu komut, Invoke-AsWorkflow iş akışını kullanarak DomainControllers.txt dosyasında listelenen bilgisayarlarda bir Ipconfig komutunu iş akışı işi olarak çalıştırır.

komut, çalıştırılacak ifadeyi belirtmek için Expression parametresini kullanır. Uzak düğümlerin (hedef bilgisayarlar) adlarını belirtmek için PSComputerName iş akışı ortak parametresini kullanır.

Komut ayrıca iş akışını "Ipconfig" iş adıyla her bilgisayarda arka plan işi olarak çalıştırmak için AsJob ve JobName iş akışı ortak parametrelerini kullanır.

Komut, her bilgisayardaki iş akışı işlerini içeren bir ContainerParentJob nesnesi (System.Management.Automation.ContainerParentJob) döndürür.

Parametreler

-CommandName

Belirtilen cmdlet'i veya gelişmiş işlevi iş akışı olarak çalıştırır. Update-Help, Set-ExecutionPolicyveya Set-NetFirewallRulegibi cmdlet'ini veya işlev adını girin.

Tür:String
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Expression

Bu cmdlet'in iş akışı olarak çalıştırıldığı ifadeyi belirtir. İfadeyi "ipconfig /all"gibi bir dize olarak girin. İfade boşluk veya özel karakterler içeriyorsa, ifadeyi tırnak içine alın.

Tür:String
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-InputObject

İşlem hattı girişine izin vermek için kullanılır.

Tür:Object
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et:False

-Parameter

CommandName parametresinde belirtilen komutun parametrelerini ve parametre değerlerini belirtir. Her anahtarın parametre adı ve değeri parametre değeri olan @{ExecutionPolicy="AllSigned"}gibi bir karma tablo girin.

Karma tablolar hakkında bilgi için bkz. about_Hash_Tables.

Tür:Hashtable
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

Girişler

Object

Herhangi bir nesneyi bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

None

Bu komut kendi çıkışını döndürmez, ancak çalıştırdığınız iş akışı çıkış döndürebilir.