Windowsを利用している環境だと、GUIに頼ってしまいませんか。WindowsのGUIは直観的に操作でき便利ですが、PowerShellが実装された最近のWindowsは便利なコマンドが用意されています。更に言うと、コマンドからしかできない操作も多い。
ここでは実際に利用してみて、覚えておくと便利な12のコマンドを紹介します。特にドキュメントの作成や、ちょっとしたホストの調査などに役立つコマンドをピックアップしました。例えば、コマンドを使うと、貼り付けが難しいGUIでの出力結果も、簡単にとることが出来ます。
スクリーンショットで撮って張り付けるよりも、コマンドで出力結果をテキストで張り付けたほうが、後々の加工もしやすいし、構成変更時のドキュメント修正も簡単です。
上記は一例ですが、それ以外にも、利用する価値のあるコマンドばかりを記載しましたので、是非、実際の利用してみて、使えそうなものは、今後の業務や運用に役立てて下さい。
1. コマンドを実行する環境
1-1. PowerShellとコマンドプロンプト
Windowsのコマンド実行環境はWindows7から実装されたコマンド PowerShellと、通常のコマンドプロンプト(DOS窓と呼ばれるアレ。)の二つがあります。今回は両方の環境を利用しています。
基本的にはPowerShellで全て事足りますが、馴染みのあるコマンドプロンプトも使いたいところですよね。
1-2. 対象のOS
コマンドが動作するOSは
- Windows7/Windows8.1/Windows10
- Windows Server 2012 R2/Windows Server 2016
にて確認を行っています。(確認はしていませんが、殆どのコマンドはWindows Server 2008でも利用できると思います。)
上記OSのPowerShellバージョンは4.0です。Windows7 SP1の場合、PowerShellのバージョンはデフォルトで2.0です。
PowerShellはバージョンによって実装されている機能が少し異なります。
また、クライアントとサーバーOSでは利用できるコマンドが異なりますので、コマンドの紹介項目に対応OSを記載しています。
2. PowerShellの起動
2-1. Windows10/Windows Server 2016
Windows10/Windows Server 2016でのPowerShellの起動方法は、スタートメニューから[W]へと移動して[WindowsPowerShell]をクリックします。
Windows10/Windows Server 2016の場合、スタートメニューにPowerShellへのリンクがあります。
「アプリ」画面にはPowerShellはISEが付与されたものと通常のものが二つ用意されています。
ISEはPowerShellの開発環境になります。コマンドレットやモジュールが表示され、PowerShellでスクリプトをガシガシ書く方向けです。今回は通常のPowerShellを利用します。
2-2. Windows8.1/Windows Server 2012 R2
Windows8.1でのPowerShellの起動方法は、スタートメニューから「アプリ」へと移動してPowerShellをクリックします。
Windows Server 2012 R2の場合、スタートメニューにPowerShellへのリンクがあります。
「アプリ」画面にはPowerShellはISEが付与されたものと通常のものが二つ用意されています。
ISEはPowerShellの開発環境になります。コマンドレットやモジュールが表示され、PowerShellでスクリプトをガシガシ書く方向けです。
今回は通常のPowerShellを利用します。
2-3. Windows7での起動方法
Windows7では、「スタート」「全てのプログラム」「管理ツール」の中にPowerShellモジュールがあります。これをクリックすることで起動します。画面が表示されれば、PowerShellは起動しています。
アイコンを右クリックすると、「管理者として実行」がありますが、本記事は管理権限をもつアカウントでの実行を前提としていますので、普通に起動して頂くだけです。
管理権限を持たないアカウントの場合、一部のコマンドが実行できませんので、その場合は「管理者として実行」から起動してください。(管理者のパスワードが必要になります。)
また、コマンドプロンプトを起動して、
> PowerShell
と入力することでもPowerShellを起動することができます。
この場合は、コマンドプロンプトに PS が付く形で表示されます。
2-4. PowerShellの補完機能
PowerShellはtabキーで補完が出来ますので、コマンドを忘れてしまった場合、tabキーから候補を見つけることもできます。Linuxを利用されている方は、bashなどのシェルに同じような機能がありますので、理解しやすいと思います。
3. Windowsコマンド、12の機能と詳細
それでは、利用してほしいWindowsコマンド、12の機能と詳細を紹介していきます。
1~9までがPowerShellのみで実行できるコマンド、10~12がコマンドプロンプトでも利用できるコマンドになります。
3-1. Windows Serverの「機能と役割」一覧を表示
対応OS:Windows Server
利用頻度が高く、便利だと思うコマンドが、この"Get-WindowsFeature"です。Get-WindowsFeatureコマンドはWindowsにインストールされた「役割と機能」の一覧を表示します。
実行すると、実装されている全ての「機能と役割」が表示されます。インストールされている「機能と役割」にはXでチェックされます。以下はオプションを付与せずに、そのまま実行した結果になります。
> Get-WindowsFeature
オプションを付けると以下のような出力が可能です。
3-1-1. Get-WindowsFeature で特定の役割のみを確認する。
[書式]
Get-WindowsFeature -name [役割/機能名]
例 ) telnet-clientを確認してみます。※Windows Server 2016以上ではtelnet-serverが実装されていないため、Telnet-Clientに変更しています。
> Get-WindowsFeature -name telnet-client
以下が主力される結果になります。
3-1-2. Get-WindowsFeature で機能/役割の詳細を確認する。
[書式]
Get-WindowsFeature -name [役割/機能名] | format-list
例 ) telnet-clientを確認してみます。
> Get-WindowsFeature -name telnet-client | format-list
以下のように実行結果が出力されます。
このコマンドは主にドキュメントを作成するときに重宝します。
有効になっている機能と役割の一覧を表示させ、コピーアンドペーストで張り付けるだけで、機能と役割の項目が完成します。
インストールされている機能・役割の詳細を追記するときは、Get-WindowsFeature -name [役割/機能名] | format-list で取得、同じくコピー&ペーストで完成です。
3-2. 「機能と役割」をコマンドでインストール
対応OS:Windows Server
「機能と役割」はGUIからインストールできますが、コマンドから実行する場合、Install-WindowsFeatureを利用します。
例えばバッチファイルなどに組み込んでOSのセットアップなどを自動で行う場合に利用できそうです。
利用方法は
Get-WindowsFeature -name [役割/機能名] -computer [コンピューター名] -restart
※-restartはサーバーの再起動が必要な場合に指定します。
になります。
例)telnetクライアントをインストール。
Get-WindowsFeature から telnet-clientが役割・機能名だとわかりますので
> Install-WindowsFeature -name telnet-client -computer Windows13r2ev
と実行します。
コマンドが正常に完了(Success)すると、以下のサマリが表示されます。
3-3. 「機能と役割」をコマンドでアンインストール
対応OS:Windows Server
項目2のInstall-WindowsFeatureとは逆に、”Uninstall-WindowsFeature”コマンドは「機能と役割」をアンインストールします。Installのほうは、それほど利用機会がありませんが、Uninstallは思ったより利用します。
GUI「機能と役割」でアンインストールしたい項目がグレーアウトされて削除できないような場合、Uninstall-Windows-Featureコマンドでアンインストールが出来る場合があります。
例)telnet-clientを削除します。
> Uninstall-WindowsFeature -name telnet-client -computer win13r2ev
実行結果は以下になります。
Successと表示されれば、telnet-clientは正常に削除されています。
機能や役割が削除できない場合は、コマンドでの実行を試してみて下さい。
3-4. 日付と時刻の表示
対応OS:Windows7/Windows8.1/Windows10/Windows Server
コマンドで日付や時刻を確認したい時があります。”Get-Date”は日付と時刻を表示するコマンドです。
単純に日付を表示・取得するだけですが、日付や時刻の確認をするためにマウスを動かすより早く確認できます。
例)日付と時刻を取得
> Get-Date
以下は実行結果になります。
3-5. コマンドレットのヘルプを表示
対応OS:Windows7/Windows8.1/Windows10/Windows Server
Get-Helpはコマンドレットの機能を表示します。PowerShellの使い方やコマンドレットが分からないときに利用すると便利です。
関連するコマンドレットの一覧を表示する機能もあるため、まずは一覧を表示させて、コマンドレットの詳細を確認するというパターンが多いかと思います。
例として、上記パターンでヘルプを参照します。
[書式1]
例)WindowsFeatureが付与されたコマンドの一覧と機能を表示させる。
> Get-Help WindowsFeature
以下が実行結果となります。
[書式2]
例)コマンドレットの詳細を表示させる。
> Get-Help Get-WindowsFeature
以下が実行結果となります。
PowerShellのコマンドレットは独自性が高く、覚えるのが大変なのでヘルプをうまく使えるようになると良いかと思います。
3-6. hotfixや修正パッチの適用リストを表示する。
対応OS:Windows7/Windows8.1/Windows10/Windows Server
修正パッチの一覧など、作成が面倒なリストは、本コマンドで一覧を取得、コピー&ペーストで簡単に作成できます。クライアント、サーバー共に利用できます。
[利用法]
> Get-WMIObject Win32_QuickFixEngineering
以下が出力結果の参考になります。
3-7. 利用しているPCのプロパティを表示する。
対応OS:Windows7/Windows8.1/Windows10/Windows Server
コマンドを実行したPCのプロパティを表示します。取得できる情報はそれほど多くありませんが、スクリプトなどで利用機会が多いのではないかと思います。
[利用方法]
> Get-WmiObject Win32_ComputerSystem
以下が出力結果になります。
3-8. Linuxのtailコマンドと同様に、出力をトレースしたい。
対応OS:Windows8.1/Windows10/Windows Server
Linuxのtailコマンドは非常に便利なのに、どうしてWindowsで同じことができないの?と疑問に思ったことはありませんか。
PowerShell 3.0ではGet-Contentコマンドレットにtailオプションが追加され、Linux同様にログのトレースなどが出来ます。
(注意)本コマンドはPowerShellが3.0以上で動作します。(Tailオプションが3.0以上で実装されたため)
Windows7はデフォルトでPowerShellのバージョンが2.0のため、利用するにはPowerShellのバージョンアップが必要となります。
[書式]
Get-Content -Path [ファイルパス] -Wait -Tail [読み取り行数]
例)カレントフォルダにあるtest.logをトレースします。
読み取り行は任意ですが、数字を変更しても挙動が変わらないように見えます。
> Get-Content .\test.log -Wait -Tail 10
3-9. PowerShellのバージョンを表示する。
対応OS:Windows7/Windows8.1/Windows10/Windows Server
PowerShellのバージョンを取得します。
[書式]
> $PSVersiontable
例)バージョン出力の結果
ここまではPowerShellで実行可能なコマンドになります。以降で紹介しているコマンドはPowerShellだけでなく、コマンドプロンプトからでも利用できます。
3-10. Linuxのgrepのように該当するワードを抽出したい。
Linuxのgrepのように、表示結果をパイプして、指定した文字列や結果が含まれる行を表示するコマンドが”findstr”になります
Linuxと同様にパイプで繋いで利用します。
[書式]
コマンド | findstr [文字列]
例)Get-WindowsFeatureからtelnet文字列を抽出する
以下が出力結果になります。
3-11. ログインしているアカウント名の表示
現在ログインしているアカウント名を知りたいっていう場面、多いと思います。”whoami”コマンドは現在、ログインしているユーザーアカウント名を表示します。
使い方は簡単で
> whoami
と入力するだけです。
以下のようにログインしているアカウント名が表示されます。
whoamiコマンドはログインしているマシンSIDとユーザーのRIDを確認することもできます。
-
Windows Server 2012 R2でSysprepを実行してWindowsを初期化してみる
仮想化環境(VMwareやHyper-V)にインストールしたゲストOSをソフトウェアの機能でクローンを作成することがよくあります。LinuxやUNIXだと、問題は無いと思います(今まではありませんでした。)が、ゲストOSがWindowsだっ ...
記事でも記載していますが、SIDを確認する場合 /userオプションを付与して実行します。
以下は/userオプションを付けてwhoamiコマンドを実行した場合の結果になります。
USER INFORMATION
----------------ユーザー名 SID
============== =============================================
pc\account S-1-5-21-101613292-3650419722-1644719356-1001
3-12. コンピューター名の表示
クラスタ環境や複数のマシンをセットアップしているときに、どのマシンを操作しているかわからなくなる時があります。
hostnameコマンドはコンピューター名を表示するコマンドです。
> hostname
と入力するだけで、ホスト名が表示されます。
4. まとめ
本記事ではPowerShellのコマンドとして
- Windows Serverの「機能と役割」一覧を表示
- 機能と役割をコマンドでインストール
- 機能と役割をコマンドでアンインストール
- 日付と時刻の表示
- コマンドレットのヘルプを表示
- hotfixや修正パッチの適用リストを表示する
- 利用しているPCのプロパティを表示する
- Linuxのtailコマンドと同様に、出力をトレース
- PowerShellのバージョンを表示する
コマンドプロンプトからも実行できるコマンドとして
- Linuxのgrepのように該当するワードを抽出
- ログインしているアカウント名の表示
- ホスト名の表示
を紹介しました。
Windowsのコマンドレットは、この他にも数えきれないほど多くの機能が実装されています。
その中でも特に有用だと思われるものに絞って、12のコマンドを紹介しました。
WindowsのコマンドはLinuxなどと違い、覚えにくいコマンドレットが殆どなので、各自が必要だと思うコマンドをいくつか覚えておくような形が良いのでは、と考えています。
そんなときに本記事が参考になれば幸いです。