暗記より先に「何を確かめたいか」を覚える
コマンドは、画面を開かずにコンピューターへ質問する短い文章です。このページでは、問い合わせや障害の一次確認(原因を決めつける前に、まず状況を事実として確かめる最初の調査)で使うコマンドを、端末 → 場所 → 通信 → 動作 → 記録 → 権限の6分類で学びます。最初はすべて覚えず、「どの分類を調べればよいか」を選べれば十分です。
端末情報 → ファイルの場所 → 通信 → プロセス(今動いているプログラム)やサービス(画面に出ず裏側で動き続ける機能)の動作 → イベント記録(システムが自動で残す出来事の記録) → ユーザーと権限、の順です。以降の見出し横にある小さなラベルは、その節がどの文字に対応するかを示します。
掲載内容はWindowsの一次確認を学ぶための例です。このページの全コマンドを同一のWindows Server実機で実行した証跡(実際に実行したことを示す記録)ではありません。環境により表示名や使用できるコマンドが異なります。業務環境で実行する前には、次の4点を確認してください。会社で決められた手順があるか。自分にその操作の権限があるか。対象のサーバーを間違えていないか。設定を変えてしまう操作が含まれていないか。
CMDとPowerShellは何が違う?
かんたんに言うとどちらも「文字で命令を打ち込んで操作する画面」です。CMDは昔からある簡単な画面、PowerShellは新しく結果を細かく扱える画面、という違いです。最初はどちらか片方が使えれば十分です。
コマンド プロンプト
CMD(コマンド プロンプトの略)は、昔からあるWindowsの操作画面です。マウスでボタンを押す代わりに、文字で命令を打ち込んで使います。ipconfig、ping、dirなど、短い基本コマンドを覚える入口に向いています。
Win + R → cmd → Enter
ipconfig /allPowerShell
結果を、ただの文字の並びとしてではなく「項目ごとに分かれた情報のまとまり」として扱えます。そのため、名前や状態だけを取り出す、並べ替えるといった加工が簡単です。コマンド名は動詞で始まり、Get-は取得、Test-は確認、Set-は変更を表すので、名前から目的を推測できます。
Win + X → ターミナル
Get-ComputerInfo説明にあるC:\>やPS C:\>は「入力を待っています」という表示です。入力するのは、その右側のコマンドだけです。管理者権限が必要な場合も、まず通常権限で確認し、理由が分かってから「管理者として実行」します。
まず覚える読み取りコマンド早見表
端場通動記権表は「目的」の列から探します。CMDとPowerShellのうち、使いやすい方を1つだけ試せば十分です。表に出てくる用語の意味は次のとおりです。DNSは名前をIPアドレスへ変換する仕組み、DHCPはIPアドレスを自動で配る仕組み、既定ゲートウェイは別のネットワークへ出るときの出口、ポートはサーバー上の入口の番号、TCPはその入口へ確実につなぐための通信の決まりです。表示結果にはコンピューター名、ユーザー名、IPアドレスなどが含まれるため、公開前に機密情報がないか確認します。
| 目的 | CMD | PowerShell | 見るところ |
|---|---|---|---|
| コンピューター名 | hostname | $env:COMPUTERNAME | 作業対象が依頼票の名前と一致するか。 |
| 自分のユーザー名 | whoami | whoami | ドメイン\ユーザーの形式。別アカウントで作業していないか。ドメインとは何かはActive Directoryキーワード集で解説しています。 |
| OS・起動時刻 | systeminfo | Get-ComputerInfo | OS名、バージョン、更新、起動時刻。出力が長い点に注意。 |
| 現在の場所 | cd | Get-Location | ファイル操作の対象フォルダー。削除やコピーの前に必ず確認。 |
| ファイル一覧 | dir | Get-ChildItem | 名前、更新日時、サイズ。PowerShellではlsも別名として使用可。 |
| IP・DNS情報 | ipconfig /all | Get-NetIPConfiguration | IPv4、既定ゲートウェイ、DNSサーバー、DHCPの有無。 |
| 名前解決 | nslookup server01 | Resolve-DnsName server01 | 名前から期待するIPアドレスを取得できるか。 |
| 到達確認 | ping server01 | Test-Connection server01 -Count 4 | 応答の有無と時間。失敗だけで停止とは断定しない。 |
| ポート確認 | netstat -ano | Test-NetConnection server01 -Port 443 | TcpTestSucceeded : Trueなら指定ポートへTCP接続できた。 |
| 動作中の処理 | tasklist | Get-Process | プロセス名、PID(処理ごとに付く番号)、メモリ使用量。終了はさせず、まず記録します。 |
| サービス状態 | sc query | Get-Service | RunningかStoppedか。停止が異常とは限らない。 |
| 空き容量 | fsutil volume diskfree C: | Get-Volume | ドライブの残り容量。fsutilは環境により管理者権限が必要。 |
| エラーログ | wevtutil qe System /c:10 /rd:true /f:text | Get-WinEvent -LogName System -MaxEvents 10 | 発生日時、レベル、ソース、イベントID、メッセージ。 |
| 所属グループ | whoami /groups | whoami /groups | 管理者などの強い権限を持つグループに所属しているか。 |
wevtutil qe System /c:10 /rd:true /f:textの/c:10は、取得する件数を10件に絞る指定です。/rd:trueは、新しいものから順に並べる指定です(rdはreverse direction=逆向き、の略)。/f:textは、出力の形式を文字だけのテキストにする指定です。分からないオプションが出てきたら、コマンド名の末尾に/?を付けて実行すると、使い方の説明が表示されます(例:wevtutil /?)。
通信障害は「自分 → 名前 → 道 → 入口」で分ける
通かんたんに言うと「つながらない」と言われたら、自分のパソコンの設定、名前からIPアドレスへの変換、途中の通り道、相手側の入口の4つを、手前から順に1つずつ確かめます。どこまで正常だったかが分かれば、原因の範囲を大きく狭められます。
自分の設定:ipconfig /all
住所にたとえると分かりやすくなります。IPv4アドレスは自分の住所です。サブネットマスクは、同じ地域とみなす範囲です。既定ゲートウェイは、別のネットワークへ出るときの出口です。DNSは、名前を住所へ変換してくれる案内所です。169.254.x.xで始まるアドレスが表示されたときは、DHCP(IPアドレスを自動で配る仕組み)からアドレスを受け取れなかった可能性があります。
名前:nslookup server01
サーバー名が期待するIPへ変換されるかを見ます。サーバー名を指定すると失敗し、IPアドレスを直接指定すると成功する場合は、名前を変換するDNS側の設定や登録内容を調べます。名前の変換だけが失敗していると分かるからです。
道:tracert server01
通信が通っていく機器を、手前から順番に表示します。どこまで届いているかを目で確かめるためです。途中に*が表示されても、その機器が応答を返さない設定になっているだけの場合があります。そこだけを見て障害と決めつけません。
入口:Test-NetConnection server01 -Port 443
Webページの表示に使うHTTPS(内容を暗号化した通信)は、サーバーの443番という入口を使います。この443番へ実際につなげるかを確認します。結果は、自分のパソコンから届いているか、ファイアウォール(決めた条件で通信を許可・拒否する関所)で止められていないか、サーバー側で待ち受けるサービスが動いているか、を切り分ける材料になります。
ping失敗 = サーバー停止、ではありませんセキュリティ設定でpingだけを拒否していることがあります。名前解決、対象ポート、別PCからの結果も集めて判断します。
プロセス・サービス・ログをつなげて読む
動記プロセスは「今動くプログラム」
Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 10|(パイプ)は、左のコマンドの結果を右のコマンドへ渡す記号です。この例では、取得したプロセスをCPU(計算を担当する中心部品)の使用時間が大きい順に並べ替え、上から10件だけ表示しています。使用時間が大きいというだけでは、異常とは限りません。普段の状態、発生時刻、継続時間と比べます。
サービスは「裏側で動く機能」
Get-Service -Name W32Time
Get-Service | Where-Object Status -eq 'Stopped'1行目のGet-Service -Name W32Timeは、W32Time(時刻を合わせるサービス)1つだけの状態を見ます。2行目は、停止中のサービスだけを絞り込んで一覧にします。停止中一覧には、必要なときだけ起動する正常なサービスも含まれます。設計や通常時の状態を確認してから判断します。
イベントログは「何が起きたかの記録」
Get-WinEvent -FilterHashtable @{
LogName='System'; Level=2
} -MaxEvents 20この例は、Systemログからエラーだけを新しい順に20件取り出します。Level=2がエラーを表す番号です。控えるのは、発生時刻、ProviderName(記録元の機能名)、Id(イベントID=出来事ごとに決まった番号)、Message(記録の本文)の4つです。同じIDでも原因が同じとは限らないため、メッセージと前後の操作を合わせて読みます。
結果をファイルへ保存
Get-ComputerInfo |
Out-File "$env:USERPROFILE\Desktop\computer-info.txt"Out-Fileは、画面に出た結果をファイルへ保存します。後から見返したり、報告に添えたりできるようにするためです。注意点は2つあります。同じ名前のファイルがあると、確認なしで上書きされます。また、、端末名・更新情報などが外部へ出ないよう保存先と共有先に注意します。
ファイルとユーザーを安全に確認する
場権| やりたいこと | 例 | 初心者向け説明 |
|---|---|---|
| 場所を移動 | cd C:\LogsSet-Location C:\Logs | 操作対象をC:\Logsへ変えます。移動後にcdまたはGet-Locationで再確認します。 |
| 内容を読む | type app.logGet-Content .\app.log -Tail 50 | PowerShell例は末尾50行だけを表示します。大きなログを全部開くより安全で速い方法です。 |
| 文字を探す | findstr /i "error failed" app.logSelect-String -Path .\app.log -Pattern 'error','failed' | /iは大文字・小文字を区別しません。エラーの前後や発生時刻も確認します。 |
| コピー予定を確認 | robocopy C:\Data D:\Backup /E /L | /Lは実際にはコピーせず、対象一覧だけを表示します。確認後も削除系オプションには注意します。 |
| ローカルユーザー一覧 | net userGet-LocalUser | 無効化の有無、想定外のアカウント、説明欄を確認します。ドメインアカウントとは別です。 |
| 管理者グループ | net localgroup AdministratorsGet-LocalGroupMember Administrators | 誰がローカル管理者かを確認します。日本語OSではグループ名が「Administrators」以外の場合があります。 |
| 権限表示 | icacls C:\DataGet-Acl C:\Data | Format-List | 誰に読み取り・変更・フルコントロールがあるかを確認します。継承(=親フォルダーの権限設定が子フォルダーにも自動的に及ぶ仕組み)の有無にも注目します。 |
止まって確認する変更コマンド
かんたんに言うとここから先は、実行するとシステムそのものが変わってしまうコマンドです。学習用のパソコンで試すのはよいですが、仕事の環境では自分の判断だけで実行しません。必ず先輩や責任者に確認します。
次のコマンドは便利ですが、サービス停止、データ消失、通信断を起こす可能性があります。業務環境では、次の6つがそろうまで実行しません。どのサーバーやファイルが対象か。実行すると誰に影響が出るか。上長や依頼元の承認を得たか。バックアップ(元に戻すための控え)を取ったか。失敗したときに戻す手順があるか。実行後に成功を確かめる方法があるか。
del / Remove-Item削除対象パスと復元方法を確認format / diskpartディスク変更対象を誤るとデータ消失Stop-Service / sc stopサービス停止利用者と依存機能へ影響Restart-Computer / shutdown再起動・停止接続中の利用者と処理を確認netsh / Set-NetFirewallRule通信設定変更遠隔接続を失う可能性net user /addアカウント変更申請と最小権限を確認対応しているコマンドなら、-WhatIfを付けると、実行はせずに「何が起きる予定か」だけを表示します。-Confirmを付けると、実行前に「本当に実行しますか」と聞いてきます。ただし、すべてのコマンドが対応しているわけではありません。テスト環境で試す、対象を限定して小さく実行する、実行後にもう一度状態を確かめる、この3つを組み合わせます。
10分でできる3つの練習
自分の学習用PCで、設定を変更しない確認だけを行います。結果には個人情報が含まれます。そのままSNSや公開リポジトリ(GitHubなど、誰でも中身を見られる保管場所)へ載せないでください。
対象確認メモを作る
hostnameとwhoamiを実行します。今どの端末に、誰としてログインしているかを確かめるためです。Get-Dateで確認時刻を表示。- 「いつ・誰が・どの端末で」を自分の言葉で説明。
できたか確認
3情報を説明でき、端末名やユーザー名を公開してよい情報か判断できれば完了です。
Web接続を4段階で確認
ipconfig /allで自分の設定。nslookup example.comで名前解決。ping example.comで応答確認。Test-NetConnection example.com -Port 443でHTTPS確認。
できたか確認
pingが失敗しても443番が成功する場合がある理由を説明できれば完了です。
架空の障害を報告する
「Webページが開かない」という想定で、変更せずに情報を集めます。
- 発生時刻と対象名を記録。
- DNS、443番、サービス、Systemログを確認。
- 事実・推測・未確認を分けて3行で報告。
報告例
事実:14:05、名前解決成功、443番失敗。推測:Webサービスまたは通信許可を要確認。未確認:サーバー側サービス状態(権限なし)。
読み取り用PowerShellサンプル
端末情報、ネットワーク、イベントログなどを設定変更せずに集めるサンプルがあります。サンプル出力とテストも含め、コードと実行証跡を区別しています。