ファイル整理もCSV集計も、AIに頼めばあっという間にできるようになった。前回の実践編を読んで、実際に試してみた方も多いのではないでしょうか。
便利に使えるようになると、次にふと頭をよぎるのがこの疑問です。「このまま気軽に使い続けて、本当に大丈夫だろうか」。
この記事はシリーズの最終回、セキュリティ編です。社内データをAIに渡すときの情報漏洩リスク、AIが提案する強力すぎるコマンドの危険性、そしてPowerShellならではの安全機能「-WhatIf」を使った試し実行の方法をお伝えします。読み終える頃には、実行前チェックリストを使って「このコード、実行していいかどうか」を自分で判断できるようになっているはずです。
シリーズの全体像はPowerShellでバイブコーディング入門で、前回の実践編はPowerShellで業務効率化でご覧いただけます。
危険その1——社内データをそのままAIに渡してしまうリスク
実践編で紹介したCSV集計の延長で、こんな行動を取ったことはありませんか。顧客リストのCSVをそのままAIチャットに貼り付けて、「この形式に整形して」と頼む。効率だけを考えれば、これが一番早いやり方です。
ただ、クラウド型のAIサービスに入力した内容は、サービスの規約によってはログとして保存されたり、モデルの学習に使われたりする可能性があります。どこまで保存・利用されるかはサービスごとに規約が異なるため、一律に「危険」とは言い切れません。とはいえ、顧客名や金額などの生データを深く考えずに貼り付ける習慣は、見直したほうがよいと私は思います。
対策はそれほど難しくありません。
- 実データではなく、ダミーデータやサンプル構造だけをAIに渡す
- 「A列は氏名、B列は電話番号」のように列名や件数だけを伝え、実際の値は渡さない
- 会社としてAI利用のルールが決まっている場合は、まずそちらを確認する
「そもそも社外に一切出したくないデータがある」という会社も少なくありません。その場合は、社内のPCだけで完結するAI環境という選択肢もあります。詳しくはローカルLLM入門をご覧ください。

危険その2——AIが提案する「強力すぎるコマンド」に気づかず実行してしまうリスク
PowerShellは、ファイルの削除や大量データの一括処理を、たった1行のコマンドでこなせる強力なツールです。この強力さこそが便利さの源であると同時に、事故の火種にもなります。
たとえば「不要なファイルを整理したい」とAIに頼むと、Remove-Item -Recurse -Force というコマンドがさらっと提案されることがあります。指定したフォルダを中身ごと、まとめて削除するコマンドです。確認画面なし。実行した瞬間に消えます。
もう一つ気をつけたいのが、外部から取得したコードをそのまま実行するパターンです。Invoke-WebRequestやInvoke-RestMethodでインターネット上から取得した内容を、Invoke-Expressionにそのまま渡して実行する書き方。いわば「ダウンロードした中身を検証なしにその場で動かす」やり方で、内容次第では何が実行されるか分からないまま処理が進んでしまいます。
誤解のないように言っておきたいのですが、AIに悪意があるわけではありません。AIは「動かすための最短ルート」を提案しているだけです。だからこそ、実行する前に人間側が中身を確認する一手間が必要になります。
PowerShellならではの安全機能——「-WhatIf」で試し実行する
③実践編でも少し触れましたが、ここが本記事の一番のポイントです。PowerShellの多くのコマンドには、-WhatIfという便利なオプションが用意されています。
-WhatIfをつけて実行すると、コマンドは実際には実行されず、「実行したら何が起きるか」というメッセージだけが表示されます。試しに、こう打ってみてください。
Remove-Item -Path .\old -WhatIf
削除は行われません。代わりに、こんなメッセージが返ってきます。
What if: Performing the operation "Remove File" on target "C:\ps-test\old".
表示されるパスはご自身の作業フォルダに応じて変わります。ここでは公式ドキュメントの例に沿って示していますが、「本当に実行したらこうなりますよ」という予告だけが表示される仕組みだという点は共通です。これなら、実行前に安心して内容を確認できます。
AIに指示を出すときは、この一文を添えるだけで安全性がぐっと上がります。
削除や変更を伴うコードは、まず-WhatIfをつけたバージョンも一緒に出してください。
正直に言うと、-WhatIfはすべてのコマンドで使えるわけではありません。対応しているのは、削除・変更・作成など「リスクを伴う操作」を行うコマンドが中心です。それでも、Remove-Itemのような破壊的なコマンドの多くが対応しているので、覚えておいて損はありません。

実行ポリシーは万能薬ではない、という正直な話
②の準備編で、実行ポリシーの基本設定について解説しました(PowerShellの始め方)。ここで一つ、耳の痛い話を付け加えておきます。
Microsoft公式のドキュメントは、実行ポリシーの位置づけをこう説明しています。ユーザーの操作を制限する「セキュリティシステム」ではない、と。実際、スクリプトの中身をコンソールに直接タイプしてしまえば、実行ポリシーの制限自体を回避できてしまいます。本気で突破しようと思えば、突破できてしまう仕組みなのです。
セキュリティの実務に長く関わってきた身として言うと、実行ポリシーは「鍵のかかった扉」というより「滑り止めのマット」に近い感覚です。うっかり転ぶ事故は防いでくれますが、本気で扉を壊そうとする相手を止める力まではありません。
とはいえ、過度に不安がる必要はありません。「知らずに実行してしまう」という日常的な事故の大半は、実行ポリシーのおかげで防げているのが実情。この現実的な効能は、素直に評価してよいと思います。
運用上のちょっとしたコツも一つ。実行ポリシーを緩めたら、目的が終わったら意識して元に戻す。あるいは、-Scope Process(今開いているウィンドウを閉じたら消える一時的な設定)を基本にする習慣をつけておくと、緩めっぱなしのまま忘れる、という事故を防げます。
実行前チェックリスト(コピペで使える)
AIが生成したコードを実行する前、この5項目を確認してみてください。指示文の最後に貼り付けて使うのもおすすめです。
- [ ] AIに「このコードは何をするか」を箇条書きで説明してもらったか
- [ ]
Remove-Item・Format-・レジストリ操作など、取り消せない操作が含まれていないか確認したか - [ ] 可能なら
-WhatIfで試し実行したか - [ ] 顧客名・金額など生の機密データをそのままAIに貼っていないか
- [ ] 本番データではなく、コピー・テストデータで最初に試したか(③実践編のステップ3を思い出してください)
全部を毎回チェックするのは、正直なところ面倒に感じる日もあると思います。それでも、上から2つ——「何をするか説明させる」「破壊的な操作がないか確認する」——だけは、習慣にしてしまうことをおすすめします。
まとめ——シリーズを振り返って
全4回にわたってお届けした「PowerShell×バイブコーディング入門」シリーズも、これで一区切りです。
- ①追加インストール不要でPowerShellが使える理由
- ②起動方法と実行ポリシーの基礎
- ③ファイル整理・CSV集計の実践例
- ④社内データの扱い方と、AIが提案するコマンドとの付き合い方(本記事)
セキュリティ編としての要点はこの3つです。
- 危険の多くは「AIそのもの」より、「渡すデータ」と「提案されたコマンドをそのまま信用すること」に潜んでいる
-WhatIfはPowerShellならではの安全弁。削除・変更系の指示には必ず添えてもらう- 実行ポリシーは完全な防御壁ではないが、日常的な事故の大半は防いでくれる
次にAIへPowerShellコードを書いてもらうときは、この記事の実行前チェックリストを指示文の最後に貼り付けてみてください。それだけで、見落としていたリスクの多くが見えてくるはずです。
シリーズを最初から振り返りたい方はPowerShellでバイブコーディング入門へ。Pythonの視点から同じテーマを扱った姉妹記事バイブコーディングで気をつけたい安全対策、社内データを外部に出したくない場合の選択肢であるローカルLLM入門も、あわせてどうぞ。
「バイブコーディングを社内で安全に使いこなしたい」という方には、TechnoBridgeの無料相談やセミナー(神奈川・東京・山梨対応)もご用意しています。お気軽にお声がけください。
(本記事の実行ポリシー・-WhatIfに関する説明は、執筆時点(2026年7月)のMicrosoft公式ドキュメントをもとに確認しています)



コメント