У меня есть сценарий powershell, который вызывается пакетным сценарием, который вызывается Trap Receiver (который также передает переменные среды) (работает в Windows 2008).
Ловушки время от времени сбрасываются в наборахиз 2-4 событий прерывания, и пакетный сценарий будет выводить сведения о прерывании для каждого сообщения в файл журнала, но сценарий powershell в следующей строке пакетного сценария будет отображаться только для обработки первого сообщения прерывания (сценарий powershell записывает втот же лог-файл).
Моя интерпретация заключается в том, что defaultrunspace является общим для всех итераций выполняемого скрипта, и поэтому другие, похоже, игнорируются.
Я пытался добавить "-sta ", когда я вызываю скрипт powershell с помощью" powershell.exe -command ", но это не помогло.
Я исследовал и нашел метод с использованием C #, но я не знаю этот язык, идостаточно занят изучением PowerShell, поэтому надеемся найти более прямое решение, особенно в виде чередования «обертки» между пакетом и PoweВ rshell будет передаваться переменные окружения.
http://www.codeproject.com/KB/threads/AsyncPowerShell.aspx
Я охотился через stackoverflow, и снова единственным вопросом подобного подхода было использование C #.
Любые предложениядобро пожаловать.
Некоторый фон скрипта:
Скрипт powershell на самом деле является модификацией отличного скрипта, найденного на сайте gregorystrike - не могу опубликовать ссылку, поскольку я ограничен одной ссылкой, но онадля левосторонних массивов.Множество модов, так что он может делать несколько целей из одного 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