[英]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.