環境変数を参照する

%PATH% を表示する。

> echo $env:PATH

%APPDATA% を表示する

> echo $env:APPDATA

参考:

環境変数の値を取得する方法 | Windows と暮らす

環境変数の一覧と使用例 | TechLog

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 パラメーターの謎挙動について | しばたテックブログ

引数展開に関する仕様まとめ – Qiita

コマンドプロンプトから 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

参考:

サクッとパスワード生成 – Qiita

パスワード生成 – Qiita

ランダムなパスワードを生成する | conf t

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

Compress-Archive – コマンドラインで ZIP ファイルを作成する | まくろぐ

コマンドで ZIP ファイルを作る | softel メモ

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA