Файл сценария PowerShell .ps1 удаляется при запуске из CMD - PullRequest
0 голосов
/ 23 января 2019

Когда я выполняю файл сценария powershell из Command Prompt Window, файл просто исчезает. Окно CMD не показывает никаких сообщений об ошибках, оно просто переходит на следующую строку сразу после выполнения команды. Я восстанавливаю файл из резервной копии.

Когда я выполняю файл сценария powershell из Power Shell Window, процесс завершается успешно.

Первоначально я заметил, что файл исчез, когда я пытался использовать Execute Process Task in SSIS, как видно из публикации в SQL Server Central: execute + process + task и Статья блога MSDN: run-powershell-scripts-in-ssis .

Что вызывает исчезновение файла?

Файл .PS1 обновляет файл Excel с подключениями к данным и сохраняет файл.


Power Shell, проверенные команды (только первая не работает, остальные 3 работают)

PS H:\> "PowerShell.exe" "-F C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1"
Unexpected token '-F C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1' in expression
 statement.
At line:1 char:103
+ "PowerShell.exe" "-F C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1" <<<<
    + CategoryInfo          : ParserError: (-F C:\SVN\Busin...xcelRefresh.ps1:String) [], ParentContainsErrorRecordEx
   eption
    + FullyQualifiedErrorId : UnexpectedToken

PS H:\> powershell -noexit C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1
PS H:\> PowerShell.exe -F C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1
PS H:\> PowerShell.exe -File C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1
PS H:\>

Командная строка, проверенные команды (файл исчезает)

PowerShell.exe -File C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1

PowerShell_Exec_FileDisappears.png

enter image description here

1 Ответ

0 голосов
/ 24 января 2019

Это более чем странно.Я был в состоянии воспроизвести это.Но я не могу объяснить, почему это происходит.Я предполагаю, что это каким-то образом ошибка оптимизации при разборе путей при вызове PowerShell для запуска сценария.У вас даже возникает такая же проблема, когда вы вызываете его из внутри PowerShell, например, при вызове этого так:

. "powershell.exe" -File C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1
# or
Start-Process "powershell" -Arg "-File", "C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1"

Я могу дать вам несколько советов о том, какие альтернативы должны работать:

Самый простой: удалить или заменить точку!

powershell -File "C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats_xlsx_ExcelRefresh.ps1"

Кроме того, эти варианты также должны работать:

# Pass a command which calls the script using the call operator (&)
# Note: The single quotes are necessary! Else you will have the same behavior
powershell -Command "& 'C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1'"

# A workaround to avoid the issue that's probably causing this.
# The semicolon basically puts an empty command at the beginning.
# This supports my theory, that this is somehow an optimization bug.
powershell -Command ";& C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1"

# Base64-encoded version of
# "& C:\SVN\BusinessAnalysts\ExcelTools\DatabaseSSAS_UsageStats.xlsx_ExcelRefresh.ps1"
powershell -EncodedCommand "JgAgAEMAOgBcAFMAVgBOAFwAQgB1AHMAaQBuAGUAcwBzAEEAbgBhAGwAeQBzAHQAcwBcAEUAeABjAGUAbABUAG8AbwBsAHMAXABEAGEAdABhAGIAYQBzAGUAUwBTAEEAUwBfAFUAcwBhAGcAZQBTAHQAYQB0AHMALgB4AGwAcwB4AF8ARQB4AGMAZQBsAFIAZQBmAHIAZQBzAGgALgBwAHMAMQA="

Я написал несколько отзывов об этом в Microsoft, но я рекомендую вам изучить это подробнее и, возможно, написать отчет об ошибке для команды PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...