SET
Set-Variable
のエイリアスです 、ただし、Powershell変数は環境変数ではありません。環境変数を設定するには、$env:
を使用する必要があります 範囲。試してみてください:
$env:PGPASSWORD = 'myPwd';
こちら も参照してください。 環境変数の詳細については。
また、PowerShellのようにコマンドラインに生の入力を入れることで逃げることはできないと思います。物事を別々のコマンドとして扱うと思いますが、間違っている可能性があります。
コマンドスイッチ(-c
)を使用することもできます )およびPowerShellはシンボルの解析を停止します(--%
)PowerShellがコマンド文字列を解析しないようにpsqlを呼び出す場合:
.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"
または、コマンドをヒア文字列を使用して変数に設定し、それをpsqlにパイプします:
$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase
または、実行可能ファイルを呼び出す他の約12の方法。