🪟
PowerShellのコマンド実行履歴を取得する方法
PowerShellのコマンド実行履歴を確認したい
WindowsでPowerShellのコマンド実行履歴を確認したかったので、やり方を調べてみた。
いくつか方法があったのでメモしておく。本記事で紹介するのは以下3つのコマンドについて。
- Get-History
- Get-PSReadLineOption
- Start-Transcript
Get-History
Get-Historyコマンドを使うと、セッション内で実行したコマンド履歴一覧が取得できる。
Get-History
[[-Id] <Int64[]>]
[[-Count] <Int32>]
[<CommonParameters>]
実行例
> Get-History
Id CommandLine
-- -----------
1 git -v
2 electron -v
3 npx create-electron-app my-electron-app
4 cd my-electron-app
5 npm start
直近のコマンド実行履歴をサクッと見たいならこれ。
Get-PSReadLineOption
現在実行中のセッションだけではなく、以前のセッションで実行したコマンド履歴も取得したい場合はGet-PSReadLineOptionのHistorySavePath
を使う。
Get-PSReadLineOption []
実行例
(Get-PSReadlineOption).HistorySavePath
を実行すると、コマンドの実行ログが記録されたファイルのパスが表示される。
> (Get-PSReadlineOption).HistorySavePath
C:\Users\unsol\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
ConsoleHost_history.txt
というテキストファイルにログが保存されている。
ConsoleHost_history.txt
git -v
npx create-electron-app my-electron-app
electron -v
node_modules\.bin\electron --version
ls
cd my-electron-app
npm start
npm run make
npx electron
npx electron --version
npm install -D electron-builder
npx electron-builder --help
npx electron-builder --win --x64
npm prune --production
npx electron-builder --win --x64
(Get-PSReadlineOption).HistorySavePath
実行コマンドだけを見たいなら十分だけど、技術系の記事を書く時にはコマンドの出力結果も確認したい。
Start-Transcript
Start-Transcript コマンドを使うと、コマンド実行後の入出力内容をすべてファイルに出力することができる。
Start-Transcript
[[-Path] <String>]
[-Append]
[-Force]
[-NoClobber]
[-IncludeInvocationHeader]
[-UseMinimalHeader]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
実行例
コマンドの入出力記録開始
> Start-Transcript ps_log.txt -append
コマンドの入出力記録停止
> Stop-Transcript
出力ファイル
ps_log.txt
**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20201212175308
ユーザー名: AURORA\unsol
RunAs ユーザー: AURORA\unsol
構成名:
コンピューター: AURORA (Microsoft Windows NT 10.0.18363.0)
ホスト アプリケーション: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
プロセス ID: 84224
PSVersion: 5.1.18362.1110
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.18362.1110
BuildVersion: 10.0.18362.1110
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: ps_log.txt
PS C:\Users\unsol> git -v
unknown option: -v
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
PS C:\Users\unsol> electron -v
v11.0.2
PS C:\Users\unsol> npx create-electron-app my-electron-app
√ Initializing Project Directory
√ Initializing Git Repository
√ Locating custom template: "base"
√ Copying Starter Files
√ Initializing NPM Module
√ Installing Template Dependencies
√ Installing NPM Dependencies
PS C:\Users\unsol> cd my-electron-app
PS C:\Users\unsol\my-electron-app> npm start
> my-electron-app@1.0.0 start C:\Users\unsol\my-electron-app
> electron-forge start
√ Checking your system
√ Locating Application
√ Preparing native dependencies
√ Launching Application
(node:84508) electron: The default of contextIsolation is deprecated and will be changing from false to true in a future
release of Electron. See https://github.com/electron/electron/issues/23506 for more information
バ ッ チ ジ ョ ブ を 終 了 し ま す か (Y/N)? t
バ ッ チ ジ ョ ブ を 終 了 し ま す か (Y/N)? y
PS C:\Users\unsol\my-electron-app> 終了エラー(): "パイプラインが停止されています。"
>> 終了エラー(): "パイプラインが停止されています。"
PS C:\Users\unsol\my-electron-app> Stop-Transcript
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20201212175553
**********************
若干余計な出力も入っているが、PowerShellの入出力内容すべてが確認できる。
プロファイル機能を利用すれば自動でログ出力もできるっぽい。
便利。
Discussion
ありがどうございます!助かりました。