SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

Windows PowerShell 活用編(2)
ファイル操作 2

ファイルの読み込みと書き込み

ダウンロード 都道府県.txt (378.0 B)

ファイルの内容をクリアする

 Clear-Contentコマンドレットを使用すると、指定したファイルの内容をクリアします。エイリアスはclcです。ファイル自体は削除されません。

 次のコマンドはHello.txtの内容をクリアします。クリア後、ファイルサイズが0になっていることがわかります・

PS> Clear-Content Hello.txt
PS> Get-Content Hello.txt

ファイルの内容を置き換える

 Set-Contentコマンドレットを使用すると、ファイルの内容を置き換えることができます。エイリアスはscです。

 下記は、

  1. Get-ContentコマンドレットでHello2.txtを読み込み
  2. "こんにちは" という文字列を"Hello"に置き換え
  3. 上記1,2で作成した文字列を、Hello2.txtへ書き戻し

 を行います。

PS> (Get-Content Hello2.txt) | %{$_ -replace "こんにちは", "Hello"} | Set-Content Hello2.txt -Force
PS> Get-Content Hello2.txt

 Get-Content Hello2.txtを括弧でくくっているのは、取得が完了してファイルが閉じられるのを待つためです。この括弧がないと、開かれたファイルの内容を書き込もうとするために処理が失敗します。

応用例

 最後に1つ応用例を紹介します。

 現在稼働中のサービス名一覧が書かれたファイル(C:\Work\Service.txt)を作成する、という課題でコマンドを作成してみます。

 考え方ですが、サービス名一覧を取得するにはGet-Serviceコマンドレットを使用します。

 Get-Serviceコマンドレットは現在登録されているサービス(稼働/非稼働に関係なく)を返すので、ここから稼働中のサービスだけを取得します。つまりWhere-Objectコマンドレットを使用してStatus項目が"Runninng"となっているものを抜き出せばよいと言うことになります。

 ここまでのコマンドを作成すると

Get-Service | Where-Object { $_.Status -eq "Running" }

 となります。

 次に、サービス名だけを抜き出したいので先ほどの結果からForeach-Objectコマンドレットを使用してName項目だけを抜き出します。

ForEach-Object { $_.Name }

 最後に、ここまでの一連の結果をC:\Work\Service.txtへ書き出します。ここではSet-Contentコマンドレットを使用することにします。

PS> Get-Service | Where-Object { $_.Status -eq "Running" } | ForEach-Object { $_.Name } | Set-Content C:\Work\Service.txt

 長いコマンドとなりましたが、分解して考えれば難しいものではありませんので、業務に応用してみていただければと思います。

 

まとめ

 今回は、ファイルの読み取りと書き込みを中心に説明しました。

 システム管理においては、ログファイルの読み取りや作成、ファイル数、ファイルサイズのチェックなど、ファイル操作は必須技術です。今回紹介した基本操作を理解し、他のコマンドと組み合わせて使用することで、日常業務で活用していただければ幸いです。

 次回も引き続きファイル操作について説明したいと思います。お楽しみに。

参考文献

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3395 2009/01/08 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー