Powershell: / TargetFile, вы должны предоставить выражение значения после ошибки оператора '/' - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь реализовать следующий пример ( ссылка . Самый первый пример) в моем скрипте VSTS powershell, чтобы создать файл моментального снимка базы данных (.bacpac), но получить

the '/ TargetFi ...
+ ~
Вы должны предоставить выражение значения после ошибки '/' operator '.

Перепробовал много вещей, но эта ошибка повторяется во встроенном скрипте моей задачи Powershell. Похоже, эта ошибка встречается довольно часто при запуске переменных и подобных ситуациях, но я не смог найти ответ на свою конкретную проблему.

'C:ProgramFiles(x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe' /TargetFile:"<C:\Temp\test.dacpac>" /Action:Extract /SourceServerName:"<localhost>" /SourceDatabaseName:"<MyDataBase>" /SourceUser:"<sa>" /SourcePassword:"<MyPa55w0d>"

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Все вышеприведенные комментарии и ответ добавили ценность и помогли мне решить мою проблему. Ниже приводится мой ответ (для любого новичка, как я) и некоторые ключевые моменты, которые я выучил

& "C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe" /TargetFile:"C:\Temp\test.dacpac" /Action:Extract /SourceServerName:"localhost" /SourceDatabaseName:"MyDatabase" /SourceUser:"sa" /SourcePassword:"MyPa55w0d"

C: \ Program Files (x86), а не C: ProgramFiles (x86)

в соответствии с предложением Bill_Stewart

  • Значения не должны быть заключены в угловые скобки (<,>). Встроенный Powershell не распознает эти скобки, и я получил ошибку. Не знаю, если это то же самое, запустив скрипт из файла скрипта и разных версий.
0 голосов
/ 08 мая 2018

Попробуйте использовать оператор вызова , например:

& "C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage.exe" /TargetFile:"<C:\Temp\test.dacpac>" /Action:Extract /SourceServerName:"<localhost>" /SourceDatabaseName:"<MyDataBase>" /SourceUser:"<sa>" /SourcePassword:"<MyPa55w0d>"

В противном случае PowerShell просто говорит «эй, это хорошая строка», о, что означает этот переключатель /TargetFile?

Чтобы понять, что я имею в виду, бегите:

"notepad.exe"

Следует просто напечатать слово "notepad.exe" в виде строки. Вот этот:

"notepad.exe" C:\temp.txt

Смущается, так как не знает, что делать с аргументом C:\temp.txt, который вы передаете в строку. Чтобы запустить notepad.exe, создайте новый файл:

& "notepad.exe" C:\temp.txt

Works!

...