誰でもわかるPowerShell入門!リダイレクトやスクリプト作成方法も紹介!

PowerShellとは?
PowerShellはMicrosoftが開発したシェル機能です。WindowsにはいわゆるDOS窓と言われるコマンドプロンプトが昔からありますが、それのパワーアップ版のようなものです。Windows 10に最初から入っているので、すぐに使えるのが大きな特長です。
PowerShellは2006年にオープンソースとなり、Windows以外でも自由に利用できるようになりました。それでも現状はWindows 10での利用が主になっています。
こちらは入門記事なります。是非ご覧ください。
PowerShell入門の第一歩
ではPowerShell入門を開始しましょう。まずはWindows 10のスタートメニューのWindows PowerShellのフォルダから「Windows PowerShell」を実行します。ウィンドウが開いて、
PS C:\Users\(ユーザー名)>
というプロンプトが表示されれば、コマンドを入力して使うことが出来ます。入門として、最初はユーザ名のフォルダにあるファイル一覧を見てみましょう。
Get-ChildItem
と入力してEnterキーを押してください。
Get-ChildItemでファイル一覧を取得
すると以下のように現在のユーザ名フォルダの一覧が出てきます。ディレクトリはフォルダと同じ意味です。
ディレクトリ: C:\Users\(ユーザー名)
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2020/11/12 8:44 3D Objects
d-r--- 2020/11/12 8:44 Contacts
d-r--- 2020/11/15 11:21 Desktop
d-r--- 2020/11/12 8:44 Documents
d-r--- 2020/11/12 8:44 Downloads
Get-ChildItemでは指定した場所のファイル一覧も見られる
指定した場所のファイル一覧を見ることもできます。例えば以下のようにすればCドライブのtestフォルダの中身を見られます。
Get-ChildItem c:\test
なおPowerShellで↑のキーを押すと前回入力したコマンドが表示されます。↑を押すたびに前のコマンドが順次表示されます。↓を押せば戻ります。こういったシェルでは一般的な動作ですが、便利なので覚えておきましょう。
パイプラインを活用しよう
PowerShellにはパイプラインと言う重要な機能があります。これを使いこなすことでPowerShellを使う意味が出てきます。以下の|がパイプラインです。
Get-ChildItem | Out-Host -Paging
このコマンドを実行すると、ファイル一覧の結果をページで区切って表示してくれます。パイプラインの|は左のコマンドの出力を右のコマンドに受け渡します。これを使うことで複数のコマンドをつなげることができるのです。
リダイレクトはとても便利
もう一つ、PowerShellにはリダイレクトという便利な機能があります。以下を実行すると、
Get-ChildItem > files.txt
テキストファイルにファイル一覧が出力されます。これはエクスプローラーではできないことで、便利に使えるでしょう。なお>が1つだけだと上書きモードですが、
Get-ChildItem >> files.txt
とすれば追記モードになります。
Set-Locationでフォルダを移動
いままでユーザ名フォルダの場所からファイル一覧を表示していましたが、この現在の位置を移動することもできます。以下のように入力すると、
Set-Location c:\test
Cドライブのテストフォルダに移動します。プロンプトが「PS C:\test>」に変わるのでわかります。また、以下のように入力すると、
Set-Location ..
一つ上の階層のフォルダに移動します。これは良く使うので覚えておきましょう。
エイリアスがあるので短いコマンド名も使える
フォルダの移動だけでSet-Locationと入力するのは面倒と感じる人もいるかもしれません。実は以下のように「cd」の2文字だけでもSet-Locationと同じ動作ができます。
cd c:\test
これはエイリアスという、コマンドを別の名前に置き換える機能があるからです。初期状態でどのようにエイリアスされているかは、以下のコマンドでわかります。
Get-Alias
実行すると以下のように定義されていることがわかります。cdやdirはコマンドプロンプトで使うコマンドですが、PowerShellもそれと同じ感覚で使うことができます。
Alias cd -> Set-Location
Alias dir -> Get-ChildItem
PowerShellを使う理由は?
この入門記事をここまで読んで、PowerShellだけしかできない事はあまり無いように感じるかもしれません。しかしそんなことはなく、PowerShellを使う理由としてあげられるのは、Select-Stringというコマンドの存在です。
このコマンドはフォルダにあるテキストファイルの中から、指定した文字列がある行を表示してくれます。この機能はWindowsのエクスプローラーにはありません。
Select-Stringで文字検索ができる
例えば以下のように入力すると、
Select-String c:\test\*.txt -Pattern PowerShell入門
testフォルダに「PowerShell入門」を含むテキストファイルがあった場合、以下のように該当する行が表示されます。
test\test1.txt:2:わかりやすいPowerShell入門
注意点は、文字コードがユニコードのファイルが対象であることです。これはPowerShellがWindows以外の動作環境でも動くことを前提にしていることが理由です。
Select-Stringは文字コードの変更も可能
Windowsを普通に使っていると、テキストファイルはShift_JISであることが多いでしょう。そういったファイルを対象にする場合は、以下のようにしてください。
Select-String c:\test\*.txt -Pattern あいうえお -Encoding default
これでWindowsのデフォルトの文字コードであるShift_JISのテキストファイルの検索ができます。
なおこのような検索機能は、実はコマンドプロンプトでもfindstrで実行できます。それでも今後はPowerShellを使ったほうが良いので、入門者はこちらをマスターしましょう。
スクリプトを作る
ここまで1行のコマンドラインを実行していましたが、次はプログラミングっぽいことをしてみましょう。スタートメニューから「Windows PowerShell ISE」を起動してください。するとプログラミング開発環境のようなアプリが起動します。
これで複数行のスクリプトを作ることができます。上のテキスト入力欄に以下を入力してください。そしてF5キーで実行できます。
1
2
3
4
5
6
7
8
|
foreach($file in Get-ChildItem 'c:\test')
{
$fullname = $file.FullName
if($fullname -like '*.txt'){
$output = $fullname.Replace('.txt',$file.CreationTime.ToString('yyyyMMdd')+'.txt')
Copy-Item $fullname $output
}
}
|
スクリプトの解説
上のスクリプトはtestフォルダにあるtxtファイルのファイル名に、作成日付を付けてコピーをします。Get-ChildItemの結果をforeachで順に処理して、拡張子が.txtだったら、.txtを作成日付+.txtに置換して、Copy-Itemで複製をしています。
$file、$fullname、$outputは変数といって、=で右辺を代入します。入門記事としては難しいかもしれませんが、PowerShellをマスターすれば高度な処理ができるということを感じてもらえれば今は十分です。
PowerShellをマスターすればとても便利
PowerShell入門の記事はいかがでしたでしょうか。終わりの方は入門としては少し難しい内容に感じたかもしれませんが、PowerShellでエクスプローラーではできない高度な処理もできることを理解していただければ幸いです。
FEnetを運営しているネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
オンライン面接も随時受付中。ぜひお気軽にご応募ください。


新着案件New Job
-
【高額年収】/【CCNA取得者歓迎】/ネットワークの構築/BIG-IP/東京都千代田区/【WEB面談可】/在宅ワーク/20代~30代の方活躍中
年収540万~540万円東京都千代田区(神保町駅) -
東京都中央区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収600万~600万円東京都中央区(小伝馬町駅) -
【高額年収】/インフラ構築支援/東京都港区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収960万~960万円東京都港区(新橋駅) -
ガバナンス推進、セキュリティ基盤支援/東京都港区/【WEB面談可】/在宅ワーク/20代~40代の方活躍中
年収780万~780万円東京都港区(新橋駅) -
カー用品販売会社の情報システム運用/東京都千代田区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/テレワーク
年収576万~576万円東京都千代田区(水道橋駅) -
ネットワーク構築、検証/東京都渋谷区/【WEB面談可】/テレワーク/20代~40代の方活躍中
年収540万~540万円東京都渋谷区(渋谷駅)