💫

「昔こんなコマンド打ったよなあ・・・」になる前に、PowerShell自動ログ取得!

に公開

はじめに

こんにちは、タイヨーです。
初めて記事を書いてみます。
社内ではコウハイも多くなく、アウトプットする場がないのでいい機会にここで自分がやっていることを記事にしてみようと思って開設してみました。

苦手なことは文章を書くことですが、いつか会社のブログなどを書いてみたい願望があります。
業務でわかりやすく話せるようになるには、まず伝わりやすい文章であるか、だと思っています。
このzennでスキルを磨いていきたいと思います。
1週間に1回投稿を目標にやっていきたいです。

普段からミスタイプが多いので、気を付けながら投稿します。

困ることありませんか?

PowerShellとは、Microsoftが提供するスクリプト言語かつ、コマンドラインシェルです。
ブラウザや他ツールにも言えることですが、

「あの時どんなこと調べたっけ・・・」

「昨日打ったコマンドの結果が知りたいけど、もうセッション切っちゃったからないぞ!!」

ということはないですか?
・・・私は何度もあります。

こんな機能しってますか💻

私は新卒4年目で転職し、今の会社にいます。
その新卒で入った会社の研修担当の方に教えていただいたのが今回の内容です。

「新しいPCをもらったら、まず自動ログ取得設定をするといいよ」

これは一度やっておけばPCを変えない限り一生やらなくていい作業で、
"powershell ログ取得 自動"とググればいくらでも出てきます。

実際につくってみよう🎵

まずはPowerShellを起動します。
Powershell起動時に動くpsファイルを探します。

>$profile

すると、こんな感じのパスが出てきます。
C:\Users\タイヨー\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

指定されたps1ファイルをメモ帳などで開き、次のコードを記述します。
ここで、"ログ保存先"はお好きなフォルダを指定してください。
フォルダは自動で作成されないので、手動で作成してくださいね。

# ログ保存先
$logFolder = "C:\powershelllog\powershell"
if (!(Test-Path $logFolder)) {
    New-Item -Path $logFolder -ItemType Directory
}

# 日付付きログファイル名
$logFile = "$logFolder\Transcript_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"

# ログ開始
Start-Transcript -Path $logFile -Append

# 終了時にログ停止
Register-EngineEvent PowerShell.Exiting -Action {
    Stop-Transcript
}

このps1ファイルを保存して、PowerShellを起動すると以下のように表示されれば完成です!

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

トランスクリプトが開始されました。出力ファイル: C:\powershelllog\powershell\Transcript_20251001_174229.txt

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      PowerShell.E...                 NotStarted    False                                ...


パーソナル プロファイルとシステム プロファイルの読み込みにかかった時間は 1639 ミリ秒です。

実際にPowerShellを起動すると、こんな感じでログが作成されます。

おまけ🤩

おまけなんだかわかりませんが、PowerShellISEをよく使用する人にも使えます!

$profile

ここで確認したps1ファイルをMicrosoft.PowerShellISE_profile.ps1に変えるだけです。
ログの保存場所は同じにしてしまうと見づらいので、フォルダ名を変えるかファイル名を変えましょう。

おわりに

以上がPowerShell起動時に自動ログ取得するように設定する方法となります。

作業内容はかなり少ないですし、一度やっておけば新しいPCにしない限り設定しなくていいのでぜひ皆さんもやってみてください!

あの時の自分ありがと~~~!」と思う日が来るはずです!

Discussion