ChatGPTでPowerShellコードを作る方法|初心者向けに実例で解説

AI

PowerShellを使って仕事を自動化したいけれど、
「PowerShellのコードの書き方が分からない」
「やりたいことは決まっているけれど、どのコマンドを使えばいいのか分からない」
ということはありませんか?

そんなときに便利なのがChatGPTです。

ChatGPTに「何をしたいのか」を日本語で伝えることで、PowerShellのコードを作ってもらうことができます。
例えば、

指定したフォルダにあるCSVファイルの一覧を取得するPowerShellコードを作って

と入力すれば、目的に合ったPowerShellコードを提案してもらえます。

ただし、ChatGPTが作成したコードが常に正しいとは限りません。
特にファイルの削除・上書き・PCの再起動などを行うコードは、そのまま実行するとデータを失う可能性もあります。

この記事では、ChatGPTを使ってPowerShellコードを作る基本的な方法から、仕事で使えそうな実例、うまくコードを作ってもらうための質問方法まで初心者向けに解説します。

ChatGPTでPowerShellコードは作れる?

ChatGPTを使えば、日本語でやりたいことを伝えるだけでPowerShellコードを作成できます。
例えば次のように質問します。

C:\workフォルダ内にあるCSVファイルのファイル名を一覧表示するPowerShellコードを作ってください。

すると、例えば次のようなコードが考えられます。

Get-ChildItem -Path "C:\work" -Filter "*.csv"
PowerShellを知らない場合、
「フォルダ内のファイルを取得するにはGet-ChildItemを使う」
というところから調べなければなりません。
ChatGPTを使えば、やりたいことを日本語で説明して、必要なコードの候補をすぐに作れます。
さらに、

ファイル名だけ表示してください。

と追加すれば、

Get-ChildItem -Path "C:\work" -Filter "*.csv" |
    Select-Object -ExpandProperty Name
のように条件を追加できます。

このように、ChatGPTと会話しながらPowerShellコードを修正していけるのが便利なところです。

ChatGPTにPowerShellコードを作ってもらう基本的な使い方

基本的な手順は簡単です。
ChatGPTを開き、作りたいPowerShellコードを日本語で入力します。
例えば、

C:\workにあるファイルをC:\backupへコピーするPowerShellコードを作ってください。

と質問します。
単純なコピーであれば、例えば次のようなコードが候補になります。

Copy-Item -Path "C:\work\*" -Destination "C:\backup" -Recurse
コードだけでは意味が分からない場合は、

PowerShell初心者にも分かるように1行ずつ説明してください。

と追加で質問してみましょう。
さらに、

コピー先フォルダが存在しない場合は自動的に作成してください。

のように条件を追加することもできます。
最初から完璧な質問を作ろうとせず、
コードを作ってもらう → 内容を確認する → 条件を追加する
という使い方がおすすめです。

ChatGPTへの質問は具体的にする

ChatGPTでPowerShellコードを作るときに重要なのが、質問の内容です。
例えば、

PowerShellでバックアップしたい。

だけでは、何をどこへバックアップするのか分かりません。
次のように具体的にすると、目的に合ったコードを作りやすくなります。

PowerShellを使ってC:\workフォルダをD:\backupへバックアップしたいです。
サブフォルダも含めてください。
初心者向けにコードの意味も説明してください。

ポイントは、
何をしたいか・対象は何か・条件は何か
をできるだけ具体的に伝えることです。
業務で使用する場合は、

Windows 11で実行します。

PowerShell 7で実行できるコードにしてください。

Windows PowerShell 5.1でも動作する方法にしてください。

など、使用環境を伝えるのも有効です。

実例1:ファイル一覧をCSVに出力する

ここからは、ChatGPTを使って作成できるPowerShellコードの例を見てみましょう。
例えば、

C:\workフォルダにあるファイルのファイル名、更新日時、ファイルサイズをCSVに出力してください。

と質問します。
一例として次のようなコードが考えられます。

Get-ChildItem -Path "C:\work" -File |
    Select-Object Name, LastWriteTime, Length |
    Export-Csv -Path "C:\work\filelist.csv" -NoTypeInformation -Encoding UTF8

Get-ChildItemでファイルを取得し、Select-Objectで必要な情報を選択しています。
最後にExport-Csvを使ってCSVファイルとして保存しています。
PowerShellでは、このように複数のコマンドをパイプラインでつなげて処理できます。

実例2:特定の拡張子だけ取得する

Excelファイルだけを探したい場合を考えてみます。
ChatGPTに、

C:\workから拡張子が.xlsxのファイルだけ取得するPowerShellコードを作ってください。サブフォルダも検索してください。

と質問します。
例えば、

Get-ChildItem -Path "C:\work" -Filter "*.xlsx" -File -Recurse
というコードが考えられます。
-Recurseを指定することで、サブフォルダも検索できます。
さらに、

フルパスだけ表示してください。

と追加すれば、

Get-ChildItem -Path "C:\work" -Filter "*.xlsx" -File -Recurse |
    Select-Object -ExpandProperty FullName
のように修正できます。
この「あとから条件を追加する」使い方を覚えておくと便利です。

実例3:robocopyのコマンドを作る

PowerShellからrobocopyを実行するときにもChatGPTを利用できます。
例えば、

PowerShellからrobocopyを使ってC:\workをD:\backupへバックアップするコードを作ってください。

と質問できます。
条件をもう少し具体的にして、

サブフォルダもコピーして、ログをC:\logs\backup.logに保存してください。

と伝えると、例えば次のような形が考えられます。

robocopy "C:\work" "D:\backup" /E /LOG:"C:\logs\backup.log"
ただし、robocopyには多くのオプションがあります。
特に/MIRなどはコピー先のファイル削除を伴うことがあるため、意味を理解せず実行するのは避けましょう。
pg-noteではPowerShellからrobocopyを実行する方法についても解説しています。
【PowerShell】robocopyコマンドを使う方法
PowerShellでrobocopyのログを保存する方法|/LOG・/LOG+の使い方

実例4:繰り返し処理を作る

PowerShellの初心者が迷いやすいものの一つがループ処理です。
例えば、

1から10まで順番に表示するPowerShellコードを作ってください。

と質問すると、

for ($i = 1; $i -le 10; $i++) {
    Write-Output $i
}
のようなコードを作れます。
さらに、

配列に入っているPC名を1台ずつ表示したいです。

と質問すると、

$computers = @("PC01", "PC02", "PC03")

foreach ($computer in $computers) {
    Write-Output $computer
}
のように目的に応じてコードを変えられます。
PowerShellのループ処理について詳しく知りたい場合は、こちらの記事も参考にしてください。
PowerShellのループ・繰り返し処理|for・foreach・whileの使い方を初心者向けに解説

実例5:PC名を取得する

ChatGPTに、

PowerShellで自分のPCのコンピューター名を取得したいです。

と質問してみます。
簡単な方法の一つが、

$env:COMPUTERNAME
です。
例えば、
$computerName = $env:COMPUTERNAME
Write-Output $computerName
とすれば、コンピューター名を変数に入れて利用できます。
PC名・ホスト名の取得については、pg-noteの既存記事で詳しく解説しています。
PowerShell ローカルのホスト名(コンピューター名)を取得する方法

このように、ChatGPTでコードの大枠を作り、詳しい使い方を個別に調べる方法もおすすめです。

ChatGPTが作ったPowerShellコードをそのまま実行しない

ここは非常に重要です。
ChatGPTが生成したPowerShellコードは、必ずしも正しいとは限りません。
特に注意したいのが、

  • Remove-Itemによるファイル削除
  • Stop-Computerによるシャットダウン
  • Restart-Computerによる再起動
  • robocopyの/MIR
  • 大量のファイル変更

などです。
例えば、

Remove-Item -Path "C:\work\*" -Recurse -Force
のようなコードを意味が分からないまま実行するのは危険です。
重要なデータが削除される可能性があります。
ChatGPTからコードを提案されたら、

このコードを実行すると、ファイルが削除されたり上書きされたりする可能性はありますか?

と聞いてみるのも一つの方法です。
ただし、その回答についても完全に正しいとは限らないため、重要な処理はMicrosoft公式ドキュメントなどでも確認しましょう。

実行前にWhatIfを使う

PowerShellの一部のコマンドレットでは、-WhatIfを利用できます。
例えばファイルを削除する処理なら、

Remove-Item -Path "C:\work\test.txt" -WhatIf
とすることで、実際に削除せず「何が実行される予定なのか」を確認できます。
ただし、すべてのコマンドや外部プログラムが-WhatIfに対応しているわけではありません。ChatGPTに、

実際にファイルを変更せず、安全に動作確認できるコードにしてください。

と指定するのもよいでしょう。

エラーが出たらChatGPTにエラー内容を伝える

作ってもらったコードを実行してエラーになった場合も、ChatGPTを利用できます。
例えば、

このPowerShellコードを実行すると次のエラーが出ました。原因と修正方法を初心者向けに説明してください。

として、その後にエラーメッセージを貼り付けます。
その際、コードも一緒に提示すると原因を判断しやすくなります。
ただし、会社で使用しているPCの場合は注意が必要です。

ユーザー名、社内サーバー名、IPアドレス、パスワード、APIキー、顧客情報、社内データなどを、そのまま入力しないようにしましょう。

会社の生成AI利用ルールがある場合は、必ずそのルールに従ってください。

ChatGPTにPowerShellコードを作ってもらうプロンプト例

毎回質問を考えるのが面倒な場合は、次のような形をベースにすると便利です。

あなたはPowerShellに詳しいエンジニアとして回答してください。

【やりたいこと】
C:\workにあるCSVファイルをD:\backupへコピーしたい

【環境】
Windows 11
PowerShell 7

【条件】
・サブフォルダも対象
・エラーが発生した場合は分かるようにする
・初心者にも分かるようにコードを説明する
・ファイルを削除する処理は入れない

PowerShellコードと、コードの意味を説明してください。

ポイントは、

  • 目的
  • 実行環境
  • 条件
  • してほしくないこと

まで伝えることです。
これだけでも、単に「PowerShellコードを書いて」と質問するより、目的に近い回答を得やすくなります。

ChatGPTとPowerShellを組み合わせるメリット

ChatGPTを使う最大のメリットは、PowerShellのコマンドをすべて暗記していなくてもコード作成を始められることです。
特に初心者の場合、
「何というコマンドを検索すればいいか分からない」
というところで止まることがあります。
ChatGPTなら、
「大量のファイル名を変更したい」
「昨日更新されたファイルだけ取得したい」
など、やりたいことから質問できます。

一方で、生成されたコードの正しさを判断するにはPowerShellの基礎知識も必要です。
そのため、
ChatGPTに全部任せる
のではなく、
ChatGPTでコードの候補を作る → コードの意味を理解する → テストする → 必要に応じて修正する
という使い方がおすすめです。

生成AIを仕事で活用するなら

ChatGPTなどの生成AIは、PowerShellコードの作成だけでなく、Excel、VBA、文章作成、データ整理など、さまざまな業務で利用できます。
独学でも学べますが、
「生成AIを仕事でどう使えばいいか体系的に勉強したい」
という場合は、オンライン講座などを利用する方法もあります。

まとめ

ChatGPTを使えば、日本語でやりたいことを説明してPowerShellコードを作ることができます。例えば、
「CSVファイルを取得したい」
「ファイルをバックアップしたい」
「robocopyを実行したい」
といった内容からコードを作成できます。

さらに条件を追加したり、エラー内容を伝えたりしながらコードを改善できるのも便利です。
ただし、ChatGPTが作ったPowerShellコードが必ず正しいとは限りません。
特にファイル削除、上書き、PCの再起動などを含むコードは内容を確認し、安全な環境でテストしてから使用しましょう。

ChatGPTを「PowerShellの代わり」と考えるのではなく、PowerShellコードを作ったり、理解したりするためのサポート役として使うのがおすすめです。

タイトルとURLをコピーしました