2013-02-25 14 views
5

Próbuję użyć klasy Zadanie w Powershell, aby wykonać operację asynchronicznie. Ale ja otrzymuję następujący wyjątek:Używanie klasy zadań w powłoce administratora

Id      : 1 
Exception    : System.AggregateException: One or more errors occurred. ---> System.Management.Automation.PSInvalidOperationException: There is no Runspace available to 
         run scripts in this thread. You can provide one in the DefaultRunspace property of the System.Management.Automation.Runspaces.Runspace type. The script 
         block you attempted to invoke was: Write-Host "hey!" 
          at System.Management.Automation.ScriptBlock.InvokeAsDelegateHelper(Object dollarUnder, Object dollarThis, Object[] args) 
          at System.Threading.Tasks.Task.Execute() 
          --- End of inner exception stack trace --- 
         ---> (Inner Exception #0) System.Management.Automation.PSInvalidOperationException: There is no Runspace available to run scripts in this thread. You can 
         provide one in the DefaultRunspace property of the System.Management.Automation.Runspaces.Runspace type. The script block you attempted to invoke was: 
         Write-Host "hey!" 
          at System.Management.Automation.ScriptBlock.InvokeAsDelegateHelper(Object dollarUnder, Object dollarThis, Object[] args) 
          at System.Threading.Tasks.Task.Execute()<--- 

Status     : Faulted 
IsCanceled    : False 
IsCompleted   : True 
CreationOptions  : DenyChildAttach 
AsyncState    : 
IsFaulted    : True 
AsyncWaitHandle  : System.Threading.ManualResetEvent 
CompletedSynchronously : False 

Mój kod:

$delegate = [System.Action]{ Write-Host "Test" } 
[System.Threading.Tasks.Task]::Run($delegate) 

Odpowiedz

3

To zajmie dużo pracy, aby uzyskać PowerShell pracy z Task. Task jest zbyt niskim konstruktem niskiego poziomu, aby PowerShell mógł bezpośrednio z nim pracować.

Aby wykonywać operacje PowerShell asynchronicznie, należy użyć jobs.

+3

Obszary Run są trudniejsze do wdrożenia, ale mogą być [bardziej wydajne] (http://learn-powershell.net/2012/05/13/using-background-runspaces-instead-of-psjobs- for-better-performance /). – user2871239

Powiązane problemy