У меня есть сценарий PowerShell, который будет рекурсивно цитировать dir и subdir и запускать все файлы SQL внутри него и регистрировать выполнение в файлах .log 1 для успеха и 1 для исключений. Сценарий PowerShell делает то, что его должен делать, но в CMD окно, я вижу эту ошибку:Ошибка Get-Content -Raw
Get-Content : A parameter cannot be found that matches parameter name 'Raw'
от этой линии
$query = Get-Content -Path $_.FullName -Raw
Это утверждение работает в цикле, так FullName
изменений в итерации. Это версия, которую я использую.
Name : Windows PowerShell ISE Host Version : 5.0.10586.117
Пример сценария идет ниже:
Get-ChildItem $ScriptFolder -Recurse -Exclude "*Archive*" -Filter *.sql |
sort Directory |
ForEach-Object {
$query = Get-Content -Path $_.FullName -Raw
$result = SQLCMD -S $FullDBServer -E -I -Q $query -d $Database
Любые мысли?
Является новым для powershell. В вашем синтаксисе, -I и -I означает 2 diff cmds? При отладке я наткнулся на другую проблему. Sqlcmd: Ошибка: ошибка синтаксиса в строке 54 рядом с командой «go». + $ result = SQLCMD -S $ FullDBServer -E -I -Q $ query -d $ Database Я могу понять, что проблема связана с go cmd из сценария, который я запускаю. Почему один и тот же скрипт отлично работает в SSMS и не работает в powershell? Я узнал, что powershell отключает параметр цитируемого идентификатора по умолчанию, и вы должны явно его включить (-I). Точно так же есть какой-то переключатель, который мне нужно использовать для powershell, чтобы не ошибка «Go»? – Sri
Я связался с документацией, объясняющей 'sqlcmd', ее параметрами и наблюдаемым поведением. Я не буду читать его вам. –
мой плохой. Не заметил. Спасибо – Sri