Простая вставка SQL с помощью команды Powershell Invoke

Попытка запустить сценарий входа на компьютере, контролируемом доменом, через групповую политику. Отлично работает на сервере с установленным модулем SQLserver, но при преобразовании кода для использования команды вызова и запуска с компьютера, контролируемого доменом, ввод в базу данных пуст - он меняется с нуля на пустой.

Код, который работает:

$var1 = $env:xxx
$var2 = $env:xxx
$var3 = $env:xxx

invoke-sqlcmd -Query "insert into tblxxx (abc, def, ghi) values('$var1', '$var2', '$var3')" -connectionstring <connectionstring>

Код, который не работает:

$var1 = $env:xxx
$var2 = $env:xxx
$var3 = $env:xxx

invoke-command -computername <server> {invoke-sqlcmd -Query <same query as above> -connectionstring <connectionstring>}

Что я делаю не так?


person Carmine    schedule 08.11.2019    source источник


Ответы (1)


Используйте $using:var1 внутри Invoke-Command, потому что переменная $var1 неизвестна в новой области видимости.

person Patrick    schedule 08.11.2019
comment
Оставлять ли апостроф вокруг $using:var1 -- '$using:var1'? Если я это сделаю, он все еще будет пустым при вводе, если я уберу апостроф, я получу недопустимое имя столбца и значение переменной - так что, по крайней мере, теперь он читает переменную, но не вводит в базу данных... - person Carmine; 08.11.2019
comment
Мой тест, упомянутый только в моем комментарии выше, использовал только 1 входной столбец, вызывающий проблему - это работает, спасибо! - person Carmine; 08.11.2019