0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShell初心者の一歩目🔰

Last updated at Posted at 2026-01-28

はじめに

株式会社パレットリンクの@TS_1230です。

普段の業務ではbatファイルやps1ファイルを編集することが多いのですが、学生時代はWindowsではなくMacやUbuntuでbashコマンドを使っていた為、なかなかWindowsコマンドの勝手が掴めないこともあったりなかったり。。。
なので、ここで一度お勉強しようと思い、勉強のきっかけとして本記事を書くことにしました。

PowerShellとは

「WindowsにはコマンドプロンプトとPowerShellがあるけど片方だけで十分では?」と思っていたので、まずPowerShellのできた背景について調べてみました。

背景

Windows2000から「コマンドプロンプト」という名称のCUI環境がありましたが、LinuxやUnixのコマンドと比べた場合、機能的に劣っていると言われていたそうです。
その問題を解決するためにMicrosoft社によってプロジェクトが立ち上がり、2006年にPowerShellがリリースされました。

使い分け

背景だけ見るとPowerShellだけで良いような気がしましたが、以下のように使い分けると効率的であるとも言われていました。単純操作をPowerShellで実行すると冗長になってしまうこともあるのでコマンドプロンプトの方が良い場合もあるのですね。

PowerShellはコマンドプロンプトと異なり、出力結果がテキストではなくてオブジェクトとして扱われます。そのため単純なコマンドではシンプルなコマンドプロンプトの方が速く感じる場合があります。ただし複雑な操作を行う場合はコマンドプロンプトはコマンド操作が複雑になるので、PowerShellで行った方が効率的です。

引用記事:https://qiita.com/MetroOsamu/items/9e611310b3ec13460565

PowerShellで出来ること

PowerShellはオブジェクトを扱えて色んなことができます!と言っていますが、具体的に何ができるかあまりわかっていないのでPowerShellのコマンド("コマンドレット"というらしい)を見て、気になったものをいくつかまとめてみようと思います。

Get-verb

このコマンドを実行すると、ほとんどのコマンドが準拠する動詞の一覧が返されます。 応答には、これらの動詞の動作の説明が含まれています。 ほとんどのコマンドはこの名前付け規則に従っているため、コマンドの動作に対する期待が設定されます。 このコマンドは、独自のコマンドを作成するときに、適切な動詞とコマンドの名前を選択するのに役立ちます。

直訳そのままで「動詞を取得する」コマンド、わかりやすいですね。
コマンドレットの命名規則として、動詞と名詞のペアで構成されるというものがあるらしいです。このコマンドを使って動詞を取得することで求めているコマンドレットが探しやすくなったり、独自のコマンド作成時の参考にできるみたいです。

$ Get-Verb
Verb        AliasPrefix Group          Description
----        ----------- -----          -----------
Add         a           Common         Adds a resource to a container, or atta…
Clear       cl          Common         Removes all the resources from a contai…
Close       cs          Common         Changes the state of a resource to make…
Copy        cp          Common         Copies a resource to another name or to…
Enter       et          Common         Specifies an action that allows the use…
︙

Get-Command

コマンドレット、エイリアス、関数、フィルター、スクリプト、アプリケーションなど、コンピューターにインストールされているすべてのコマンドを取得します。 Get-Command は、システムで使用できる PowerShell モジュールとコマンドからコマンドを取得します。

先ほどのGet-Verbコマンドと組み合わせてコマンドを探せそうですね。先ほどの実行結果にあった"Copy"という動詞で検索してみると、コピー系のコマンドが2つあることがわかりました。

$ Get-Command -verb Copy
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Copy-Item                                          7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Copy-ItemProperty                                  7.0.0.0    Microsoft.PowerShell.Management

動詞ではなく名詞部分で検索をする場合は-Nounオプションを使うみたいですね。"Command"関係のコマンドを検索してみると、Get-command以外にも色々あることがわかりました。

$ Get-Command -Noun Command
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Find-Command                                       2.2.5      PowerShellGet
Cmdlet          Get-Command                                        7.5.0.500  Microsoft.PowerShell.Core
Cmdlet          Invoke-Command                                     7.5.0.500  Microsoft.PowerShell.Core
Cmdlet          Measure-Command                                    7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Trace-Command                                      7.0.0.0    Microsoft.PowerShell.Utility

Find-Command

先ほどの検索結果から「Get-CommandFind-Commandの違いってなんだろう...」と思ったので、こちらについても調べてみました。

コマンドレット、エイリアス、関数、ワークフローなどの PowerShell コマンドを検索します。 Find-Command は、登録済みリポジトリ内のモジュールを検索します。

Get-Commandが、ローカル環境にあるコマンドから検索しているのに対して、Find-Commandはインターネット上の公開リポジトリにあるコマンドを探すそうです。検索対象のリポジトリやコマンド名をオプションにつけることで検索できました。

$ Find-Command -Repository PSGallery -Name Find-Command

Name                                Version    ModuleName                          Repository
----                                -------    ----------                          ----------
Find-Command                        2.2.5      PowerShellGet                       PSGallery
Find-Command                        0.0.4      CompatPowerShellGet                 PSGallery

また、Install-ModuleSave-Moduleと組み合わせることでそのままインストールもしくは保存が可能みたいですね。

Find-Command -Repository PSGallery -Name Find-Command | Save-Module -Path <保存先のパス> -Verbose

さいごに

今回はPowerShellが出来た背景とPowerShellでできることのほんの一部について書かせていただきました。コマンド1つ取ってもオプションが複数あったり、コマンドの組み合わせ次第で出来ることの幅が広がるのでちゃんと使いこなすにはまだまだ時間がかかりそうですね。。。
調べていくうちに、コマンドレットで使われているクラスの継承関係や.NETフレームワークなど、関連する項目について勉強するとPowerShellについてより深く学べるのだろうということも分かったので、時間がある時にそちらについても勉強したいと思いました。
拙い記事になってしまいましたが、最後まで読んでいただきありがとうございました!

パレットリンクでは、日々のつながりや学びを大切にしながら、さまざまなお役立ち記事をお届けしています。よろしければ、ぜひ「Organization」のページもご覧ください。
また、私たちと一緒に未来をつくっていく仲間も募集中です。ご興味をお持ちの方は、ぜひお気軽にお問い合わせください。一緒に新しいご縁が生まれることを楽しみにしています。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?