PowerShellの初期ロードに設定すると良い内容

設定ファイルの配置場所とファイル名

配置場所

通常

C:\Users\<ユーザー名>\Documents\PowerShell

OneDrive設定がある場合

C:\Users\<ユーザー名>\OneDrive\Documents\PowerShell

設定ファイル名

多少分類の境界線微妙なとこはあるが、以下の様な役割で分かれてそう

  • Microsoft.PowerShell_profile.ps1(※1):主にシェル操作に関する設定
  • powershell.config.json:PowerShell全体の処理に関わる設定

※1
これとは別にprofile.ps1も存在する。
これは同じ内容を定義するが、対象とする範囲が別になる。
Microsoft.PowerShell_profile.ps1は、PowerShellコンソールのみ範囲となる。
一方、profile.ps1はVSCodeなど別ホストからPowerShellが実行された場合も当内容が適用される。
(逆にMicrosoft.PowerShell_profile.ps1の内容は読込されない)
そのため、全環境共通にしたい場合は、profile.ps1を作成する方が良い。

設定しておくと便利な設定

Microsoft.PowerShell_profile.ps1

# ==== エンコード関連 ====
 
# コンソールの表示をUTF-8にする
# 設定確認方法:chcp
chcp 65001 > $null
 
# 標準入力の文字コードをUTF-8にする
# 設定確認方法:$InputEncoding.WebName
$InputEncoding  = [System.Text.Encoding]::UTF8
 
# 標準出力の文字コードをUTF-8にする
# 設定確認方法:$OutputEncoding.WebName
$OutputEncoding = [System.Text.Encoding]::UTF8
 
# ==== コンソール操作関連 ====
 
# Tabキーの補完動作設定
# 設定確認方法:Get-PSReadLineKeyHandler | Where-Object { $_.Key -eq "Tab" }
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
 
# 過去の履歴から予測候補を表示
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionSource
Set-PSReadLineOption -PredictionSource History
 
# 予測候補の表示形式の指定
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionViewStyle
Set-PSReadLineOption -PredictionViewStyle ListView

powershell.config.json

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned",
  "POWERSHELL_TELEMETRY_OPTOUT": "1",
  "DisableImplicitWinCompat": true
}
  • Microsoft.PowerShell:ExecutionPolicy:明示的に指定
  • POWERSHELL_TELEMETRY_OPTOUT:MSに情報送るの停止
  • DisableImplicitWinCompat:PowerShellの古い互換機能を無効化

PowerShell実行時に覚えておくと便利な内容

PowerShellのインストール方法

以下のコマンドでインストールするのが楽である。
後は見慣れたインストーラが起動して、インストールできる。

winget install Microsoft.PowerShell

実行したら、ライセンス条件に同意するか聞かれるので、Yを選択すればよい。

PowerShellのアップデート方法

winget upgrade Microsoft.PowerShell

PowerShellのバージョン確認方法

$PSVersionTable.PSVersion

なお、PowerShellはv5まではpowershellが起動コマンドである。
しかし、v6以降はpwshが起動コマンドである。

インストールしているソフト一覧と名称確認方法

# 全量出したい場合
winget list

# 一部だけでも検索可能
winget list Power

# パイプしてgrep的に削る方法
winget list | Select-String Power

覚えておくと便利なコマンド

# コマンドの場所を見つける
Get-Command hoge

# ファイルダウンロード
irm "https://hoge.com" | iex

# カレントディレクトリのエクスローラを開く
ii .

# 環境変数の全量表示
Get-ChildItem Env:

# 環境変数の指定表示(例:PATH変数)
$env:PATH