SET
er et alias for Set-Variable
, men Powershell-variabler er ikke miljøvariabler. For at indstille en miljøvariabel skal du bruge $env:
omfang. Prøv:
$env:PGPASSWORD = 'myPwd';
Se også her for mere om miljøvariabler.
Jeg tror heller ikke, du kan slippe afsted med at sætte rå input på kommandolinjen sådan i PowerShell. Jeg tror, det vil behandle ting som separate kommandoer, men jeg kan tage fejl.
Du vil måske også bruge kommandoknappen (-c
) og PowerShell stop parsing-symbolet (--%
) når du kalder psql for at forhindre PowerShell i at parse din kommandostreng:
.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"
Eller indstil kommandoerne til en variabel med here-strenge og rør det til psql:
$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase
Eller omkring et dusin andre måder at kalde en eksekverbar på.