簡體   English   中英

在單獨的運行空間中多次異步運行同一Powershell腳本

[英]Running same powershell script multiple asynchronous times with separate runspace

我有一個Powershell腳本,該腳本由批處理腳本調用,該腳本由Trap Receiver調用(還傳遞環境變量)(在Windows 2008上運行)。

有時會在2-4個陷阱事件的集合中清除陷阱,並且批處理腳本會將每條消息的陷阱詳細信息回顯到日志文件,但是批處理腳本下一行的powershell腳本只會顯示為處理第一個陷阱消息(powershell腳本寫入同一日志文件)。

我的意思是,默認運行空間對於腳本運行的所有迭代都是通用的,這就是為什么其他運行似乎被忽略的原因。

我嘗試使用“ powershell.exe -command”調用powershell腳本時添加“ -sta”,但這無濟於事。

我已經研究並找到了一種使用C#的方法,但是我不了解這種語言,並且忙於學習powershell,因此希望找到一個更直接的解決方案,尤其是因為在批處理和powershell之間插入“包裝”將涉及傳遞環境變量。

http://www.codeproject.com/KB/threads/AsyncPowerShell.aspx

我已經通過stackoverflow進行了搜索,同樣,唯一類似的問題是使用C#。

任何建議歡迎。

一些腳本背景:

Powershell腳本實際上是對gregorystrike網站上的一個出色腳本的修改-無法發布該鏈接,因為我僅限於一個鏈接,但它只能用於Lefthand數組。 大量的mod,因此它可以從一個.ini文件中執行多個目標,並接收環境變量以及用於與winform交互運行腳本部分的選項。 但是您可以看到原始腳本的要旨。

批處理腳本非常基本。 關鍵的事情是我正在嘗試使用:〜運算符過濾掉陷阱噪聲,並且嘗試了-sta選項以查看這是否會分隔Powershell腳本。

set debug=off
set CMD_LINE_ARGS="%*"
set LHIPAddress="%2"
set VARBIND8="%8"
shift
shift
shift
shift
shift
shift
shift
set CHASSIS="%9"

echo %DATE% %TIME% "Trap Received: %LHIPAddress% %CHASSIS% %VARBIND8%"  >> C:\Logs\trap_out.txt
set ACTION="%VARBIND8:~39,18%"
echo %DATE% %TIME% "Action substring is %ACTION%" 2>&1  >> C:\Logs\trap_out.txt 
if %ACTION%=="Remote Copy Volume" (         
    echo Prepostlefthand_env_v2.9 >> C:\Logs\trap_out.txt
    c:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -sta -executionpolicy unrestricted -command " & 'C:\Scripts\prepostlefthand_env_v2.9.ps1' Backupsettings.ini ALL" 2>&1 >> C:\Logs\trap_out.txt
) ELSE (
    echo %DATE% %TIME% Action substring is %ACTION% so exiting" 2>&1 >> C:\Logs\trap.out.txt
)

exit

我完全不知道您要做什么,老實說,我什至不明白這個問題。 但是,如果您試圖在不同的運行空間中異步運行同一腳本的多個實例(僅出於某種原因,很抱歉,對不起),那么我可以將您指向我之前編寫的腳本。 這適用於v2 ctp3,但在v2 RTM(當前)中可以正常工作:

http://www.nivot.org/2009/01/22/CTP3TheRunspaceFactoryAndPowerShellAccelerators.aspx

希望這會有所幫助,無論您在做什么,都祝您好運:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM