Windows 11でPowerShellコマンド履歴が勝手にドキュメントへ保存される原因と解消テクニック

Windows 11にアップデートしてから、なぜかPowerShellを起動するたびにドキュメントフォルダーへ日付ごとのフォルダーとテキストファイルが自動生成されていて困った……こんな経験はありませんか。わたし自身、気付かないうちにOneDriveへ同期されていたこともあり、焦って対処した思い出があります。そこでここでは、PowerShellのコマンド履歴が勝手に記録される原因と、具体的な解除手順をまとめました。実際にいろいろ試した際の工夫や気付きも交えてお伝えします。

PowerShellのログが勝手に残る現象とは

どのようなファイルが保存されるのか

Windows 11でPowerShellを実行した後にドキュメント(Documents)フォルダーを開くと、例えば「2025-01-27_16-30-00」などの時刻付きフォルダーが突然増えている場合があります。中身を確認すると、PowerShell上で入力したコマンドと、その結果がまるごとテキスト形式で保存されています。日付や時間のフォルダ名が増えていくと見た目も煩雑になりますし、特にOneDriveを利用している方はクラウドにも自動同期されてしまいます。セキュリティ面を考えても、知らないところでログが溜まるのはいい気分ではありません。

そもそもなぜ記録されるのか

原因としてよく挙げられるのが、PowerShellの「トランスクリプト(Transcript)」機能です。これは、実行したコマンドやその出力結果を記録し、任意のテキストファイルに蓄積してくれる仕組みです。普通は開発や監査のために便利な機能ですが、意図せず有効になっていると日々の操作がどんどん保存されてしまうのです。

管理者権限が絡むケース

企業や組織のActive Directory環境では、管理者側でグループポリシー(GPO)を一括設定しています。PowerShellのトランスクリプトを必ずオンにすることで操作履歴を取るようにしている場合、ユーザー個人の操作や設定変更だけでは無効化できないことがあります。わたしも以前勤めていた会社で、IT部門の方針でPowerShellのログ収集が義務づけられていたため、自分の端末だけ設定を変更してもすぐにGPOで再度強制されてしまいました。

トランスクリプト機能は、万一トラブルが起きたときの検証に役立ちます。普段は無駄に思えるログも、問題の再現性や原因を探る際に非常に心強い味方になります。

実行していないのにログが残る不思議

まれに「自分はPowerShellを直接使っていないのにログが作られる」という相談もあります。これは、バックグラウンドで動くスクリプトや、システム内部でPowerShellベースの管理タスクが実行されている場合が考えられます。Windows 11では様々な管理系の操作がPowerShellスクリプトで自動化されていることが多いため、自分の意思とは関係なくPowerShellログが生成されることも珍しくありません。

自動記録を止める方法

一時的に記録を停止する: Stop-Transcriptコマンド

一度だけログを止めたいのであれば、PowerShell上でStop-Transcriptコマンドを実行すると、そのセッションの記録を中断することができます。ただし、PowerShellウィンドウを閉じて再度起動すると、もしトランスクリプト機能が有効のままであればまた新しくファイルが作られるので、あくまで応急処置と考えるのが無難です。

恒久的にオフにする: レジストリとグループポリシー

レジストリキーの確認

トランスクリプトが有効化されているかどうかは、レジストリエディター(regedit)で下記のパスを確認します。

HKEY_LOCAL_MACHINE または HKEY_CURRENT_USER
Software
Policies
Microsoft
Windows
PowerShell
Transcription

ここに「EnableTranscripting」というDWORD値が存在し、1となっている場合はトランスクリプトが有効化されています。値を0に変更、またはキー自体を削除することで、ログ保存をオフにできます。ただしレジストリを触るとシステムに深刻な影響が及ぶ可能性があるため、必ずバックアップを取ったり管理者と相談したうえで行いましょう。

グループポリシーエディターの設定

Active Directory管理下のPCの場合、グループポリシー(GPO)でトランスクリプトが強制有効化されているケースがあります。この場合は、ローカルグループポリシーを編集しても組織の方針で上書きされてしまいます。個人で使っているPCなどスタンドアロン環境の場合はgpedit.mscを起動し、たとえば次のあたりのパラメーターを探してみましょう。

コンピューターの構成 → 管理用テンプレート → Windows コンポーネント → Windows PowerShell

上記のような項目の中に、トランスクリプトの有効化に関する設定があることがあります。無効にしたい場合は「無効」や「未構成」に変更することで記録を止めることが可能です。

組織のルールでログ記録が義務付けられている場合は、自分の端末だけ変更してもまたGPOで再設定される可能性があります。そのような環境では勝手に無効化することが問題になる場合があるため、必ずIT管理部門に相談してから対処しましょう。

実際に行った対策事例

家庭用PCで気付いたときの体験談

以前、わたしは自宅のWindows 10マシンをWindows 11へアップグレードした直後に、ドキュメントに日付入りの謎フォルダーが大量発生するようになりました。最初はウイルスやマルウェアを疑いましたが、調べてみるとPowerShellトランスクリプトが知らないうちにオンになっていたのです。レジストリを確認したら、どうやら以前に開発用ツールをインストールした際に設定されていたらしく、知らぬ間に引き継がれていたようでした。結局、EnableTranscriptingを0に変更して再起動しただけで解決しました。

レジストリ編集をする際は、念のため「すぐに元に戻せるように」レジストリのエクスポートをとっておくと安心です。わたしも過去に誤ってキーを削除して青ざめた経験があります。

企業PCで対処した例

企業から貸与されたノートPCでも、同じように日付付きフォルダーが増え続けていました。ところが、ローカルグループポリシーをいくら変更しても、週末に再起動すると元通りになってしまいました。社内に問い合わせたところ「セキュリティ上必要なので、PowerShellトランスクリプトは強制記録しています」とのこと。結局、利用者側では止めることはできず、OneDriveへの同期設定だけオフにして不要なログはオンラインには残らないよう対応しました。PCの使い方や組織のポリシーによっては、こうした使い分けが必要になると感じた事例です。

表で見るトランスクリプト設定の主な確認ポイント

以下のような形で整理しておくと、どこをどう確認すればよいのか一目瞭然で便利です。

項目 内容
レジストリキー HKEY_LOCAL_MACHINE または HKEY_CURRENT_USER
Software → Policies → Microsoft → Windows → PowerShell → Transcription
(EnableTranscripting=1 で有効)
グループポリシー gpedit.msc
コンピューターの構成 → 管理用テンプレート → Windows コンポーネント → Windows PowerShell
「トランスクリプト機能を有効化する」などの項目
一時停止 PowerShell上で
Stop-Transcript
と入力すると、そのセッションのみ記録を停止
再度有効化 Start-Transcript -Path “保存先パス”
必要に応じて再度オンに可能

トランスクリプト機能を活かすコツ

トラブルシューティングや学習には有用

停止させたいという要望がある一方で、トランスクリプトは原因追及や手順書の作成に使える便利な機能でもあります。自分が行ったコマンドをあとから振り返る際、ログがあるとミスや試行錯誤の流れが把握しやすいのです。プログラミングやスクリプト開発の学習にも活用できます。

ログ保存先を別ドライブにする

どうしてもOneDriveとの兼ね合いでドキュメントフォルダに保存されると困る場合は、Start-Transcriptコマンドにパスを指定して、Cドライブ以外のフォルダやログ専用ディレクトリに保存してしまう手もあります。定期的に整理すればディスクスペースを圧迫することもないでしょう。

たとえば開発用マシンなら、Dドライブに「PowerShellLog」フォルダを作ってログを一括保管するように指定すれば、あとで見返す時にも探しやすいですし、OS再インストール時にも大切なログを残しやすくなります。

まとめ

Windows 11のPowerShell環境で、意図せずコマンド履歴がドキュメントフォルダーへ保存される場合は、トランスクリプト機能がオンになっている可能性が高いです。自分で一時的に止めるにはPowerShell上でStop-Transcriptコマンドを実行し、恒久的に止めるにはレジストリでEnableTranscriptingを0にするか、グループポリシーを無効化する方法を検討してみましょう。企業や組織の管理下にあるPCの場合は、IT部門のルールを確認し、必要に応じてOneDriveの同期先を変更するなど、運用上での折衷案を探ることも重要です。ログは不要なときは邪魔に思えますが、いざという時の助けにもなり得るので、必要に応じて上手に制御してみてください。

長らく放置していたらドキュメントフォルダーの大量のサブフォルダーに気づいた、というケースもよく聞きます。不要な場合は早めに対処して、スッキリした環境でWindows 11ライフを楽しみましょう。

参考リンク

Microsoft公式ドキュメント(英語)

PowerShellのStart-Transcriptに関しては、Microsoftの公式サイトに詳細な使い方がまとめられています。
Start-Transcriptコマンドレットの説明
具体的なパラメーターの指定例や、どのようにログが出力されるかについても網羅されているので困ったときに役立ちます。

よくある質問

Q1: レジストリキーが見つからない場合はどうすればいいの?

該当のTranscriptionキーやEnableTranscriptingの値が存在しない場合、トランスクリプト機能はデフォルトのオフ設定になっている可能性があります。自分が想定している場所にキーがない場合は、念のためHKEY_LOCAL_MACHINEだけでなくHKEY_CURRENT_USER側も探してみましょう。もし両方見つからなければ、他の設定ファイルや企業独自のスクリプトによって動作が制御されているケースもあるため、IT管理者へ問い合わせるのが安心です。

Q2: コマンドプロンプト(cmd.exe)は影響を受けるの?

トランスクリプト機能はPowerShellが対象です。コマンドプロンプトでは標準設定のままだとログは取られません。ただし、Windows TerminalのタブでPowerShellを使用している場合は注意が必要です。裏ではPowerShellのセッションが起動していればログが記録されることがあります。

Q3: ログがすでに大量に溜まっているけど削除しても問題ない?

通常は古いトランスクリプトファイルを削除してもWindows自体の動作に支障は出ません。必要がなければごっそり削除して構いません。ただし、企業や組織で監査目的に使っている場合は、勝手に消すことが禁止されているケースもあるので要注意です。

結論

意図せずPowerShellの履歴が残り続けるのは驚きますが、その背景にはトランスクリプト機能という便利さと監査性を高める仕組みが隠れています。自宅PCであればレジストリやグループポリシーの設定を修正してトランスクリプトをオフにするだけで解決できます。一方、企業環境では管理部署の意向に基づいてログ収集が義務付けられていることもあるため、無断で設定を変更しないようにしましょう。ログがあることで助かる場合も多々ありますので、状況に応じて賢く使いこなしてみてください。

コメント

コメントする