2014-04-12 4 views
0

Если я бегу:Как выполнить команду ДОС с переменными аргументами

<somecommand> -e "SHOW DATABASES" -u<user> -p<password> 

Он бежит. Но если я попробую:

<somecommand> -e "SHOW DATABASES" -u$sqlUser -p$sqlPassword 

не удается, так как переменные не расширяются.

Каков самый простой способ выполнить эту задачу в powershell?

ответ

0

Предполагая somecommand является ех (или команда DOC, как вы утверждаете), попробуйте так:

<somecommand> -e "SHOW DATABASES" "-u$sqlUser" "-p$sqlPassword" 
+0

Я думаю, что я пытался 4095 других вещами .... Но это действительно работает! Спасибо за ваш ответ! –

+0

В этом случае PowerShell будет использовать режим разбора аргументов, что означает, что он пытается указать строковые аргументы, не используя кавычки (которые быстро стареют). Это разумно видеть -u $ sqlUser, и в этом случае он будет расширять переменную, но -u $ sqlUser, который он видит как строку. Вы можете заставить PowerShell расширять переменные, поместив туда двойные кавычки (и смежный текст). –

+0

Да, конечно, что будет работать и '-u" $ sqlUser ". При переходе к exe, независимо от того, является ли его '' -u $ sqlUser '' или предыдущим способом, не имеет значения AFAICT. –

Смежные вопросы