本記事はプロモーションを含みます

PowerShellでよくある問題を解決する10の便利なコマンド

eyecatch_1286

はじめに

PowerShellは、Windowsユーザーにとって強力なツールですが、初心者にとっては理解が難しい場合もあります。この記事では、よくある問題に対処するための10の便利なPowerShellコマンドを紹介します。これらのコマンドをマスターすることで、効率的に作業を行い、生産性を向上させることができます。
2023年にVBScriptが非推奨になったことよりPoweShellの移行をする方にはお勧めのコマンドです。

フォルダーと子フォルダー内のファイル名を取得

Get-ChildItem (gci): ファイルやフォルダーの一覧を取得する際に使用します。例えば、特定の拡張子を持つファイルを検索したり、特定のフォルダー内のファイルを一覧表示したりするのに役立ちます。

例.C:\test 以下のフォルダーとファイルが下記の場合

C:\test\text00.txt
C:\test\kodomo1\text01.txt
C:\test\kodomo1\text02.txt
C:\test\kodomo1\exe01.exe
C:\test\kodomo2\text03.txt

PS C:> Get-ChildItem -Path C:\test\ -Recurse -Include *.txt

    ディレクトリ: C:\test\kodomo1


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----  2024/03/30 土曜日      3:2           2638 text01.txt
                                 4
-a----  2024/03/30 土曜日      1:4           2638 text02.txt
                                 1

    ディレクトリ: C:\test\kodomo2


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----  2024/03/29 金曜日      0:2           2638 text03.txt
                                 4

    ディレクトリ: C:\test\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----  2024/03/29 金曜日      5:2           2638 text00.txt
                                 4

テキストファイル内の文字列を検索

Select-String (sls): テキストファイル内で文字列を検索する際に使用します。特定のキーワードを含む行を簡単に見つけることができます。
例えば、ログファイルから特定のエラーが出てきている時を探す場合に約に立ちます。

例.C:\test 以下のファイルが下記の場合

C:\test\text00.txt
C:\test\text01.txt
C:\test\text02.txt
C:\test\text03.txt
C:\test\text04.txt

text03の中身のみ、2行目に error を含む文字列があり。

PS C:> Select-String -Path C:\test\*.txt -Pattern "error"

C:\test\test03.txt:2:あああerrorいいい

実行中のプロセスを表示、プロセスを終了

Get-Process (gps): 実行中のプロセスを表示します。特定のプロセスを見つけて終了させたり、CPUやメモリの使用状況を監視したりするのに便利です。

PS C:> Get-Process -Name chrome

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    226      16    10632      18528       0.00   2516   1 chrome
   2085      77   134976     268192       7.33   2756   1 chrome
    256      19    21444      47068       0.00   5868   1 chrome
    212      16    19012      27056       0.09   9204   1 chrome
    511      27   216120     249984       2.66   9420   1 chrome
    752      56   282080     171564       5.77  10408   1 chrome
    330      24    85180     149640       1.20  10456   1 chrome
    226      18    18844      30644       0.02  11968   1 chrome
    345      31    28108      52884       0.91  12672   1 chrome
    228       9     1924       7124       0.00  12744   1 chrome
    270      21   113524     151768       1.11  13820   1 chrome
    265      21    25140      56708       0.02  13944   1 chrome
    257      19    20496      46464       0.02  14000   1 chrome
    338      20    65060     102324       0.22  14008   1 chrome
    285      20    74872     118060       1.00  14020   1 chrome
    352      24    80708     127444       0.80  14440   1 chrome
    365      24   100396     160308       0.94  15340   1 chrome
    272      20    35424      70760       0.13  19768   1 chrome
    371      28   140752     216512       4.89  22868   1 chrome

「Get-Process」だと、すべてのプロセスが、上の例では、後ろに「-Name chrome」を入れているので、chromeのプロセスを表示させています。

PS C:> Get-Process -Name chrome | Stop-Process

上記のようにするとchromeのすべてのプロセスを強制終了します。バッチ系処理の場合、プロセスを見るよりかはプロセスを終了させる方が多く使うかもしれません。

サービスの状態を表示

Get-Service (gsv): サービスの状態を表示します。特定のサービスの状態を確認したり、開始/停止したりするのに役立ちます。

PS C:> Get-Service -Name Spooler

Status   Name               DisplayName
------   ----               -----------
Running  Spooler            Print Spooler

上の例では、「spooler」(印刷の各種機能を含む)サービスの状態を確認し、結果として「Status:Running」と読み取れるので、正常に動いていることが確認できます。なお、サービスの開始をさせる場合には後ろに「| Start-Service」と入れ、サービスの停止をさせる場合には後ろに「| Stop-Service」と入れことで可能です。
※プロセスを停止させる場合、先にサービスを終了させないと、プロセスをしない場合がありますので、ご注意ください。

イベントログを取得

Get-EventLog (gel): イベントログから情報を取得します。システムの問題をトラブルシューティングする際に役立ちます。

PS C:> Get-EventLog -LogName System -EntryType Error

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   30280 4 07 10:57    Error       Service Control M...   3221232472 Google Update サービス (gupdate) サービスを、次...
   30279 4 07 10:57    Error       Service Control M...   3221232481 Google Update サービス (gupdate) サービスの接続...

上記例では、よく使うシステムログの、エラーが出ているものを表示させています。
「-LogName System」でシステムログファイルを指定し、「-EntryType Error」エラーのみに絞り込んでいます。

新しいファイルやフォルダーの作成

New-Item (ni):
新しいファイルやフォルダーを作成します。スクリプト内で自動的にファイルやフォルダーを生成するのに便利です。

PS C:> New-Item -Path C:\Scripts\ -Name "newfile.txt" -ItemType "file"

上記例では、「-Path C:\Scripts\」で「C:\Scripts\」にフォルダー指定、「-Name “newfile.txt"」でファイル名指定、「-ItemType “file"」でファイルであることを指定します。

PS C:> New-Item -Path C:\Scripts\ -Name "logfiles" -ItemType "directory"

フォルダー(ディレクトリー)を作成したいときは、「-ItemType “directory"」にすれば可能です。

ファイルやフォルダーをコピー

Copy-Item (cp): ファイルやフォルダーをコピーします。バックアップを作成する際や、ファイルを別の場所に移動する際に使用します。

PS C:> Copy-Item -Path C:\Logs\log.txt -Destination D:\Backup\

上の例では、「-Path C:\Logs\log.txt」でコピー元ファイルを設定し、「-Destination D:\Backup\」でコピー先のフォルダーを設定しています。

PS C:> Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse

上の例では、フォルダーをコピーします。

PS C:> Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse

バックアップでは、アスタリスクをつけて、子フォルダー(サブディレクトリー)のファイルもコピーする方法の方が使うことが多いです。

ファイルやフォルダーの削除

Remove-Item (rm): ファイルやフォルダーを削除します。不要なファイルを削除する際に使用します。

PS C:> Remove-Item -Path C:\Temp\oldfile.txt

ウェブページから情報取得

Invoke-WebRequest (iwr): ウェブページからデータを取得します。自動化されたタスクやWebスクレイピングに役立ちます。

PS C:> Invoke-WebRequest -Uri "http://example.com" -OutFile "output.html"

プロセスを開始

Start-Process (start): 新しいプロセスを開始します。外部アプリケーションを起動する際に使用します。

PS C:> Start-Process -FilePath "notepad.exe"

上記の例の場合は、メモ帳を開始させることができます。

最後に

これらのPowerShellコマンドを使えば、よくある問題に対処することができます。是非、日常の作業に取り入れて効率化を図りましょう。それぞれのコマンドはオプションコマンドがありますので、近い機能のものはオプションで支持のことがあり、調べるきっかけになると思います。

問題が解決したら、お友達と共有しませんか?

この記事にいっぱいおごってみる?

KOBE WINGのAmazonほしい物リスト

オススメ記事

eyecatch_1084

AI専用のSNS Chirper を触ってみた…

AI専用のSNSと聞いて、プログラムを組む人としては非常に興…

eyecatch_124

QtWebEngineProcess.exeがメモリーを異常に使用している…

不具合内容 主にパソコン起動時にタスクマネージャーを見ると、…

eyecatch_145

VBS (VBScript) sleep スクリプトを一時停止する方法 WAIT…

概要 VBSでスクリプトを一時停止したい時の方法となります。…