環境変数を参照する
%PATH%
を表示する。
> echo $env:PATH
%APPDATA%
を表示する
> echo $env:APPDATA
参考:
Getting the path of %AppData% in PowerShell – Stack Overflow
空白の入ったパス/コマンドを使用する
PowerShell スクリプト (.ps1 ファイル)
コール演算子 (&
) を使う。
& "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
あるいは、スペースをバッククォート `
でエスケープする。
C:\Program Files` (x86)\Google\Chrome\Application\chrome.exe
スクリプト引数
シングルクォーテーションで囲う。
>powershell .\hello.ps1 'Hello, World!'
スペースをバッククォートでエスケープする。(コンマも合わせてエスケープしないと配列として解釈される。)
>powershell .\hello.ps1 "Hello`,` World!"
ダブルクォーテーション内でシングルクォーテーションで囲う。
>powershell .\hello.ps1 "'Hello, World!'"
-File
オプションを使用する。
>powershell -File .\hello.ps1 "Hello, World!"
ダブルクォーテーション内でエスケープしたダブルクォーテーションで囲う。(コマンドプロンプト)
>powershell .\hello.ps1 "\"Hello, World!\""
ダブルクォーテーション内でエスケープしたダブルクォーテーションで囲う。(PowerShell コンソール)
> powershell --% .\hello.ps1 "\"Hello, World!\""
コマンドプロンプト (cmd.exe)
ダブルクォーテーションをエスケープするには、ダブルクォーテーションを二回重ねる。
>powershell.exe -Command "Write-Output ""Hello, World!"""
PowerShell コマンド (powershell.exe)
-Command
オプションに渡すコマンドライン文字列でスペースを使用するには、ダブルクォーテーション内でダブルクォーテーションをエスケープする。バッククォートの前にバックスラッシュを付ける。
> powershell.exe -Command "Write-Output \`"Hello, World!\`""
もしくは、解析停止信号 --%
を使うと、それ以降は引数の解釈がコマンドプロンプトと同じになる。
> powershell.exe --% -Command "Write-Output ""Hello, World!"""
ドキュメント:
呼び出し演算子 | Microsoft Learn [Official]
停止解析トークン | Microsoft Learn [Official]
参考:
powershell.exe -Command パラメーターの謎挙動について | しばたテックブログ
コマンドプロンプトから PowerShell 起動時に、空白スペースが紛れた値を分割されず引数として渡したい | 有馬総一郎のブログ
パス名にスペースのある実行ファイルの指定方法 | Technet フォーラム
空白を含むパラメータをバッチファイルに指定するには? | Technet フォーラム
spaces cause split in path with PowerShell – Stack Overflow
PowerShell is removing comma from program argument – Stack Overflow
Can I make this PowerShell script accept commas? – Super User
パスワードを生成する
System.Web
クラスを追加する。
> Add-type -AssemblyName System.Web
記号を3文字以上入れて20文字のパスワードを生成する。
> [System.Web.Security.Membership]::GeneratePassword(20,3)
英数字のみ
> $Alnum = ([char[]](0..255) -Like '[0-9A-Za-z]') > -Join (Get-Random -Count 20 -Input $Alnum)
ドキュメント:
Membership.GeneratePassword(Int32, Int32) メソッド | Microsoft Learn [公式]
Get-Random (Microsoft.PowerShell.Utility) | Microsoft Learn [公式]
コード:
Generate a Random Alphanumeric String (marcgeld) – GitHub Gist
参考:
random password function – Stack Overflow
How can I only allow these characters in the PowerShell password generater? – Stack Overflow
How to always include number in string? – Stack Overflow
tee コマンド
標準出力及びエラー出力を画面に出力しつつ、ログファイルにも書き出す。
> & program.exe arg1 arg2 2>&1 | tee log.txt
ドキュメント:
Tee-Object | Microsoft Learn [公式]
参考:
Tee-Object – 入力を2箇所に出力する | PowerShell Memo
Tee-Object – コマンドの結果を確認しつつ変数に格納したりファイルに書き込む | 適材適所
The Windows Equivalent of the Unix ‘tee’ Command | bobbyhadz
ZIP ファイルを作成する
Compress-Archive
コマンドを使って ZIP ファイルを作成する。次の例では、Get-ChildItem
コマンドでファイル情報オブジェクトを取得し、パイプラインを介して Compress-Archive
コマンドに渡している。
> Get-ChildItem -Path file1.txt, file2.txt | ` >> Compress-Archive -DestinationPath archive.zip
オプション
-Path
: 処理対象のファイルを指定する-DestinationPath
: 出力するアーカイブファイルのパスを指定する-Force
: 上書きする-Update
: 既存のアーカイブファイルを更新する
ドキュメント:
Compress-Archive – PowerShell | Microsoft Learn [公式]
参考:
Git Bash での zip コマンドの代わり – Qiita