Чтобы передать литерал аргументов в сценарий, используйте -File
вместо (подразумеваемого) параметра -Command
;Кроме того, для безопасности сделайте двойные кавычки:
%PS_EXE% -ExecutionPolicy ByPass -File "%PS_DIR%\Export_S3.ps1" -StrTableName "%table_name%" -StrCondition "%extract_condition%"
В качестве отступления: в PowerShell Core , -File
теперь используется по умолчанию.
Если вы используете -Command
(возможно, по умолчанию в Windows PowerShell), передаваемые аргументы интерпретируются PowerShell так же, как и внутри самого PowerShell, и токена, такого как start_dt='2016-10-01'
, то есть один без внешних кавычек , просто содержит встроенные одинарные кавычки лишенные , которые вы можете проверить из самого PowerShell:
PS> Write-Output start_dt='2016-10-01'
start_dt=2016-10-01 # !! single quotes were STRIPPED.
При включении токена как целого в "..."
помогло бы в этом случае, как правило, предпочтительнее использовать -File
, если вы намерены передать литерал значений в сценарий, то есть значения, которые не должны интерпретироваться PowerShell при получении.