SET
je alias pro Set-Variable
, ale proměnné Powershell nejsou proměnné prostředí. Chcete-li nastavit proměnnou prostředí, musíte použít $env:
rozsah. Zkuste:
$env:PGPASSWORD = 'myPwd';
Viz také zde pro více informací o proměnných prostředí.
Také si nemyslím, že vám projde vkládání raw vstupu na příkazový řádek, jako je to v PowerShellu. Myslím, že to bude považovat věci za samostatné příkazy, ale mohu se mýlit.
Můžete také použít přepínač příkazů (-c
) a symbol zastavení analýzy prostředí PowerShell (--%
), když zavoláte psql, abyste zabránili PowerShellu analyzovat váš příkazový řetězec:
.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"
Nebo nastavte příkazy na proměnnou s zde-řetězci a roura na psql:
$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase
Nebo asi tucet dalších způsobů, jak zavolat spustitelný soubor.