空白の入ったパス/コマンドを使用する
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!"""
参考:
powershell.exe -Command パラメーターの謎挙動について | しばたテックブログ
PowerShell の引数展開に関する仕様まとめ – Qiita
コマンドプロンプトから PowerShell 起動時に、空白スペースが紛れた値を、分割されず引数として渡したい | 有馬総一郎のブログ
パス名にスペースのある実行ファイルの指定方法 | Technet フォーラム
空白を含むパラメータをバッチファイルに指定するには? | Technet フォーラム
Spaces cause split in path with PowerShell – Stack Overflow
Call operator & | Microsoft Docs [Official]
解析の停止: --% | Microsoft Docs [公式]
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)
参考: