
Windowsコンピューターの機能は、Microsoftのグラフィカルインターフェースで表示される機能をはるかに超えています。おなじみのポイントアンドクリック機能の裏には、PowerShellという強力なコマンドラインユーティリティが隠されています。PowerShellは、Windowsの通常のメニューや設定では利用できない機能を提供します。グラフィカルインターフェースは数十年にわたって改良されてきましたが、Windowsの実用的なツールの多くはコマンドラインからしかアクセスできません。
興味深いことに、これらのツールは過度に複雑ではなく、開発者やシステム管理者専用でもありません。Windowsは基本的な機能を備えているものの、グラフィカルインターフェースではそれらを表現できません。Microsoftは、クリーンでユーザーフレンドリーなエクスペリエンスを維持するために、意図的にWindowsをこのように設計しました。PowerShellのすべての機能にGUIを追加すると、ツールの数が膨大になり、インターフェースが不必要に複雑になってしまいます。
この設計選択により、コマンド ライン内に隠されたこれらの貴重な機能に気付かないユーザーが数え切れないほど多く存在しています。
コンピュータに保存されているWi-Fiパスワードを取得する
保存したワイヤレスネットワークにすばやくアクセス

ゲストにWi-Fiのパスワードを教えようと思ったのに、忘れてしまった経験はありませんか? これまでに使用したWi-FiのパスワードはすべてWindowsパソコンに保存されています。しかし、Microsoftは標準インターフェースからそれらを簡単に確認できる方法を提供していません。コントロールパネルから現在接続しているネットワークのパスワードにアクセスできますが、過去に接続した他のネットワークのパスワードはどうなっているのでしょうか?
幸いなことに、Windowsにはnetsh wlan show profilesコマンドが用意されており、デバイスに保存されているすべてのWi-Fiネットワークプロファイルを一覧表示できます。一連のコマンドを連続して使用することで、保存されているすべてのWi-Fiパスワードを簡単に取得できます。最初のコマンドは複雑に見えるかもしれませんが、パイプライン、コマンドレット、パラメーターの概念を理解すれば、扱いやすくなります。具体的な例を以下に示します。
(netsh wlan show profiles) | Select-String "All User Profile"| %{$name=$_. Line. Split(':')[1].Trim().Replace('"', ''); $_} | %{(netsh wlan show profile name="$name"key=clear)} | Select-String "Key Content"| %{$password=$_. Line. Split(':')[1].Trim(); [PSCustomObject]@{WIFI_NAME=$name; PASSWORD=$password}}
このコマンドはWi-Fiプロファイルを列挙し、それぞれに対応するパスワードを取得します。数分で、すべてのネットワーク名とパスワードが整理されたリストが表示されます。個人的には、新しいデバイスの設定や、忘れてしまったネットワークに接続する必要がある友人のサポートに、このコマンドを何度も使用しています。
このコマンドを毎回入力する代わりに、PowerShellスクリプトを保存するPS1ファイルとして指定のフォルダに保存します。頻繁に使用する場合は、AutoHotkeyを使ってPowerShellコマンドのキーバインドを作成し、即座にアクセスできるようにすることもできます。
ストレージスペースを消費している重複ファイルを特定する
重複を排除してストレージを節約

多くのユーザーが、ダウンロードフォルダの整理整頓に苦労しています。私も、PowerShellの便利な機能を見つけるまでは、同じ経験をしていました。Windowsには、標準インターフェースで重複ファイルを検出する機能が組み込まれていないため、多くの人が気づかないうちに同じドキュメント、画像、動画のコピーを複数蓄積してしまいます。
PowerShell は、簡潔なパイプライン コマンドを通じてソリューションを提供します。
Get-ChildItem -File | Group-Object Length | Where-Object {$*.Count -gt 1} | ForEach-Object {$*.Group | Get-FileHash} | Group-Object Hash | Where-Object {$*.Count -gt 1} | ForEach-Object { Write-Host "Duplicate files:"; $*.Group. Path; Write-Host "---"}
このコマンドは、各ファイルの内容に固有のハッシュを生成するため、ファイル名が異なる場合でも真の重複ファイルを識別できます。私はダウンロードフォルダでこのコマンドを定期的に実行していますが、重複ファイルを削除することでどれだけの容量を節約できるかにいつも驚かされます。
WindowsのGUIにこの機能がないのは、重複検出が特に大容量ファイルの場合、リソースを大量に消費する性質があるためと考えられます。Microsoftは、ほとんどのユーザーがこの機能を頻繁に必要としないため、インターフェースの複雑さを増すほどではないと判断したと考えられます。
複数のサイトへのインターネット接続を同時にテストする
基本的な速度テストを超えた接続の問題を特定する

インターネット接続が遅くなると、ほとんどのユーザーは本能的にスピードテストに頼ります。しかし、これらのテストでは単一のサーバーに関するデータしか得られません。もし問題が特定のウェブサイトやオンラインサービスにある場合はどうすればよいでしょうか?Windowsには、複数のサイトへの接続を同時に確認するためのGUIツールは組み込まれていませんが、PowerShellを使えばこの作業が簡単になります。
簡単なTest-Connectionコマンドを使用して、さまざまな宛先を一度にチェックできます。
Test-Connection google.com, facebook.com, youtube.com, microsoft.com
このコマンドは、4つのサイトすべてに同時にpingを実行し、それぞれの応答時間を表示します。特定のサービスに問題があるのか、それともインターネット接続全体が遅いのかをすぐに判断できます。インターネットの接続状況が不安定だと感じるときに、私はこれをよく使っています。何が起きているのかをより明確に把握できるからです。
Test-Connection google.com, cloudflare.com, amazon.com -Count 10
このバリアントは各サイトに10回のpingを送信し、平均化できるデータを提供します。あるサイトの応答時間が常に長く、他のサイトのパフォーマンスが良好であれば、インターネット接続に根本的な問題がないと判断できます。
ダウンロードしたファイルが正当かつ安全であることを確認する
ファイルハッシュ検証で安全性を確保

多くのユーザーは、Microsoft Store 以外から実行ファイルをダウンロードすることを好みます。ダウンロードが安全であることを確認するには、開発者から直接提供されているかどうかを確認する方法が必要です。多くの正規ソフトウェアプロバイダーは、ダウンロード時にハッシュ値を公開しています。これは、ファイルの一部が変更されると変化する固有の指紋として機能します。
PowerShell にはGet-FileHashコマンドが含まれており、これを使用するとダウンロードしたファイルのハッシュを確認できます (「filename.exe」を特定のファイル名に置き換えます)。
Get-FileHash "filename.exe"
このコマンドは、ソフトウェア発行元が提供する公式ハッシュと比較できるSHA256ハッシュを生成します。一致した場合、ファイルは発行元の意図通りであることを示し、不一致の場合、ダウンロード中に問題が発生したか、ファイルが改変された可能性があります。
PowerShell で隠れた機能のロックを解除する
ここで紹介したPowerShellの機能は、Windowsの使いやすいインターフェースの下に隠された強力な機能を強調しています。PowerShellは難しそうに思えるかもしれませんが、実際にはそれほど難しくありません。個人的には、ほんの数個のコマンドしか使用していませんが、多くのユーザーがWindowsには全く存在しないと考えているような重要なWindows機能にアクセスするには十分です。
これらの機能は不足しているわけではありません。単に、多くの人が利用したことのないコマンドラインインターフェースの背後に潜んでいるだけです。これらの基本コマンドの知識を習得することで、日常的なストレスを迅速な解決策に変えることができます。次回Windowsインターフェースで制限に遭遇したときは、PowerShellが求めている答えを提供してくれるかもしれないことを思い出してください。
コメントを残す