У меня есть массив, который перебирает строку, присваивая значения элементам. Если я затем назначу эти элементы переменной и передам ее в invoke-sqlcmd, я получу ошибку. Тем не менее, если я присваиваю значение непосредственно переменной и передаю ее, она работает нормально:
Назначить значение массиву:
for ($i=0; $i -lt $somearray.length; $i++) {
$somearray[$i] = $somearray[$i].Replace('$(query)', $query.text)
}
Позволяет сказать somearray [0] = "выбрать * из БД". Мы назначим переменную:
$query = somearray[0]
Теперь я передаю это моему Invoke-Sqlcmd
:
Invoke-Sqlcmd -Query $query -Database "local" -ServerInstance "somedb" |
Export-Csv ".\somefile.csv"
Это не удалось:
Invoke-Sqlcmd : Could not find stored procedure 'select * from ALERTS'.
At C:\Migration\ExportTool\ExportTool\Gavs.ps1:95 char:17
+ ... Invoke-Sqlcmd -Query $query -Database $db -ServerInstance ...
Однако, если я сделаю это:
$query = "select * from DB"
Invoke-Sqlcmd -Query $query -Database "local" -ServerInstance "somedb" |
Export-Csv ".\somefile.csv"
работает отлично.