神戸学院大学 経営学部 林坂ゼミ

CLI 入門トップページ

« 戻る 次へ »

PowerShell

PowerShell 7.x の利用

Windows 11 に標準搭載されている PowerShell 5.x は「古い」PowerShellで,文字コード周りが古い仕様となっています.まず,PowerShell のバージョンを確認します.

PS C:\Users\rinsaka> $PSVersionTable ⏎

Name                           Value
----                           -----
PSVersion                      5.1.26100.4768
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.26100.4768
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1


PS C:\Users\rinsaka>

PowerShell の出力はオブジェクト形式であるので,次のようにするとバージョン番号だけを取得できます.

PS C:\Users\rinsaka> $PSVersionTable.PSVersion ⏎

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      26100  4768


PS C:\Users\rinsaka>

新しい PowerShell である PowerShell 7.x はクロスプラットフォームで動作し,UTF-8 にも対応しています.PowerShell 7.x は公式ダウンロードページ (https://github.com/PowerShell/PowerShell/releases/latest) からダウンロードしてインストールできますが,「winget」を使う方法が簡単でしょう.まず,「winget」が利用できるかそのバージョンを確認します.バージョンが表示されず「認識されません」とでた場合は,Microsoft Store から App Installer を入れる必要があります.

PS C:\Users\rinsaka> winget --version ⏎
v1.11.430
PS C:\Users\rinsaka>

PowerShell 7.x の最新版をインストールします.

PS C:\Users\rinsaka> winget install --id Microsoft.Powershell --source winget ⏎
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.5.2.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/PowerShell/PowerShell/releases/download/v7.5.2/PowerShell-7.5.2-win-x64.msi
  ██████████████████████████████   107 MB /  107 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
PS C:\Users\rinsaka>

インストールできたら,PowerShell 7 を起動します.起動後にバージョンが表示さているはずですが,改めてバージョンを確認します.

PowerShell 7.5.2
PS C:\Users\rinsaka> $PSVersionTable ⏎

Name                           Value
----                           -----
PSVersion                      7.5.2
PSEdition                      Core
GitCommitId                    7.5.2
OS                             Microsoft Windows 10.0.26100
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

PS C:\Users\rinsaka> $PSVersionTable.PSVersion ⏎

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      5      2

PS C:\Users\rinsaka>

Invoke-RestMethod」を用いて API にリクエストを送信してみます.日本語文字も文字化けすることなく表示されました.

PS C:\Users\rinsaka> Invoke-RestMethod -Uri "http://127.0.0.1:8000/comments/1/" ⏎

id title          body           updated_at
-- -----          ----           ----------
 1 最初のコメント コメントの本文 2022/07/01 12:00:00

PS C:\Users\rinsaka>

変数を利用すると必要な情報だけを取り出すことができます.たとえば本文 (body) だけを抽出してみます.

PS C:\Users\rinsaka> $response = Invoke-RestMethod -Uri "http://127.0.0.1:8000/comments/1/" ⏎
PS C:\Users\rinsaka> $body = $response.body ⏎
PS C:\Users\rinsaka> $body ⏎
コメントの本文
PS C:\Users\rinsaka>

結果を JSON ファイルに出力して,その内容を表示してみます.

PS C:\Users\rinsaka> Invoke-RestMethod -Uri "http://127.0.0.1:8000/comments/1/" -OutFile Documents\ps\results.json ⏎
PS C:\Users\rinsaka> Get-Content Documents\ps\results.json ⏎
{"id":1,"title":"最初のコメント","body":"コメントの本文","updated_at":"2022-07-01T12:00:00"}
PS C:\Users\rinsaka>

PowerShell 7 のSet-Location」コマンドレットは,パスを省略するとホームディレクトリに戻ります.これは,bash の「cd」コマンドと同じ動作です.

PS C:\Users\rinsaka> Set-Location Documents\ps ⏎
PS C:\Users\rinsaka\Documents\ps> Set-Location ⏎
PS C:\Users\rinsaka>

目次に戻る