У меня есть скрипт, который обрабатывает некоторые кубы в таблице, и когда я запускаю его по отдельности, как, например, напрямую, он обрабатывает, как и ожидалось, кубик ОДИН РАЗ.однако, когда я вызываю его с помощью этой команды цикла пакетного файла, она по какой-то причине дублирует обработку?
вот обычный сценарий процесса:
Invoke-ASCmd –InputFile $JSON_file -Server $Destination_Server >$process_output
Scripts> runPowerShell.bat Process.ps1 CUBE
, и здесь используется усовершенствованный метод, который я использую для других целей, но все же стремлюсь достичь того же результата:
$Table = Query "SELECT * from [dbo].[$cubeTable] WHERE [application] = '$App_input' ORDER BY [sequence]"
$i=0
$CUBE = @()
foreach($row in $Table)
{
Write-host "`r`n---------------------------START of Script-----------------------------"
write-host "`r`n [Application] : $App_input"
write-host " [Script] : $Script"
$i++
$CUBE += $row.Item("cube_name")
#write-host " > CUBE $($i): $($CUBE[-1])`n"
cmd /c "runPowerShell.bat $Script $($CUBE[-1])" #where $Script is Process.ps1 script that processes on each CUBE selected from table in order
}
Этот автономный скрипт называется scriptWrapper.ps1
, который в основном циклично запускается для выполнения этой команды для обработки нескольких кубов, вместо того, чтобы мне приходилось указывать команду для каждого куба, который у меня есть в таблице.он вызывается через этот пакетный файл:
Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5
, поэтому, когда я запускаю его так:
Scripts>runPowerShell.bat scriptWrapper.ps1 CUBES_CATEGORY Proc.ps1
, он обрабатывает один и тот же куб дважды:
Я почти уверен, что что-то происходит в цикле scriptWrapper.ps1, но я не могу указать на это ...