Я хочу вставить значение переменной PowerShell с помощью Select, когда я создаю таблицу данных из запроса SQL.
Заимствованная функция invoke-sqlcmd2 из галереи TechNet и добавленная в нее точка.
$NewSequenceID = invoke-sqlcmd2 -ServerInstance "MyServer" -Database "MyDB" -Query "INSERT INTO [Sequence] (TimeStarted) SELECT GETDATE(); SELECT max(SequenceID) as SequenceID FROM [Sequence]" | foreach { $_.SequenceID }
Это генерирует новый идентификатор последовательности и отмечает время, когда мы начали пакет. В результате получается одно число, которое идентифицирует этот запуск. Проверено с помощью «написать $NewSequenceID». Я хочу сохранить более поздние результаты запросов вместе с этим SequenceID для анализа.
Тогда у меня есть это:
$PollTime = Get-Date -format "yyyy-MM-dd HH:mm:ss"
Затем я хочу сделать это: (Редактировать: этот оператор не работает - сообщение об ошибке внизу)
$AuditUserOutput = invoke-sqlcmd2 -ServerInstance "MyServer2" -Database "MyDB2" -Query "SELECT $NewSequenceID, $PollTime, [USERID], [PID], [UDATE] FROM [MyTable]" -As 'Datatable'
И сделайте что-нибудь с таблицей, а затем напишите ее с помощью write-datatable.
Если я выберу NULL для первых двух значений и возьму остальные три из существующей таблицы, все будет работать нормально. Я хочу добавить $NewSequenceID и $PollTime из предыдущих операторов.
Я прочитал дюжину страниц об использовании ` (обратная кавычка), $, {} и так далее и тому подобное, но я не понял правильно. Может ли кто-нибудь помочь с правильным синтаксисом для вставки этих значений переменных в выборку?
PS Ошибка: исключение, вызывающее «Заполнить» с аргументом (ами) «1»: «Неверный псевдостолбец «$ NewSequenceID».»