Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

運用構築技術者の為のPSプログラミング第2回

334 vues

Publié le

TW社内勉強会用の資料です。内容は自社のインフラ技術者向けのPowerShellのプログラミング基礎となっています。基本的な使い方と文法の説明が中心です。
※第1回と内容が少し被っているのは前回できなかった参加者がいるためです

Publié dans : Formation
  • Soyez le premier à commenter

運用構築技術者の為のPSプログラミング第2回

  1. 1. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 PowerShellプログラミング基礎 とファイルの操作(その2) Time: 2015.3.12 09:30-16:00 Room: Tokyo Office 山岡 茂治 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング 1. PowerShellの概要 ※復習 2. PSの起動と実行 ※復習 3. スクリプト記述方法 ※復習 4. 変数とデータ型 ※復習 5. Write/Read-Host ※復習 6. 変数と値、演算子 ※復習 7. 条件分岐 if ※復習 8. 繰り返し処理 for ※復習 9. ファイルとフォルダの操作 10. ファイルとフォルダの作成 11. 練習問題 12. フォルダ内容の取得 13. 練習問題 14. リネーム、移動、削除 15. 練習問題 16. テキストファイルの準備 17. テキストファイルの読み込み 18. 練習問題 19. テキストファイルの書き込み 20. 練習問題 21. CSVファイルの読み込み 22. 配列の要素と扱い 23. CSVファイルの列指定 24. 練習問題
  2. 2. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■PowerShellの特徴 ・コマンドプロンプト(cmd.exe)、WSHに変わる技術(シェル) ・システムの管理や運用を容易にするためのスクリプト環境 ・. NET Frameworkの技術がベースとなっている ⇒ プログラミング(C#等)と同じような複雑な処理が可能 <.NET Framework 2.0の構成> 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 1. PowerShellの概要 ※復習 .NETアプリケーション Windows アプリケーション ASP.NET Web アプリケーション コンソール アプリケーション .NET開発 VB.NET、C#、 PowerShell .NET Framework クラスライブラリ 開発や利用を容易にするための機能 共通言語ラインタイム(CLR) OS(Windowsなど) ● 共通言語ランタイムが(CLR).NETで 作成されたアプリケーションやシステムを 実行する。 ● JAVAの仕組みも似たようなもの CLR と JavaVMは同じ役割。 ● C#などは、.NET Frameworkのクラス ライブラリを利用し、システムを開発するが PowerShellも同様にクラスライブラリを利用可 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  3. 3. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■PowerShellの起動 ・コマンドプロンプトと似たようなCUI ・ISEでの起動 ⇒ エディタ機能が付与 ・PowerShellは対話式で1行ずつ実行する方法と、.ps1という ファイル(テキスト形式)で実行する方法がある ※Win7やWin8等で .ps1ファイルを実行するには 「Set-ExecutionPolicy RemoteSigned」の実行が必要になる場合があります。 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 2. PowerShellの起動と実行 ※復習 PowerShellの起動 PowerShell ISE の起動 ● ISEはエディタ機能の他に、 処理を1行ごと実行(ステップ実行) するデバッグ機能を備える ●F9でブレークポイントをセットし、 F5を押し実行し、止まったところから F10を押しながら1行ずつ動作を 確認することが可能(便利です) ●ISEのアドオンを組み込み、更に エディタ機能を拡張できます 「PowerShell ISE Add-Ons」で検索 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  4. 4. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■コンソールでの入力と実行 ・処理(コマンドレット、ステートメント)を直接入力、ENTER ・ウインドウを閉じない限り、処理結果や変数の内容は記憶される ~実行例~ PS C:Usersxxxx> $YourName = Read-Host(“お名前は=“) ↲ お名前は=: (ここで名前を入力)↲ PS C:Usersxxxx> Write-Host(“おはようございます、” + $YourName + “さん!”) ↲ おはようございます、(入力した名前)さん! ※日本語以外は半角で入力します。間違えた場合は赤字で表示されます。 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 2. PowerShellの起動と実行 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  5. 5. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■テキストエディタまたはPowerShell ISEの利用 ・テキストエディタまたはISEにて、処理を記述し保存。 ~入力例~ $YourName = Read-Host(“お名前は=“) ↲ Write-Host(“おはようございます、” + $YourName + “さん!”) ↲ ※日本語以外は半角で入力します。間違えた場合は赤字で表示されます。 ・実行ボタン を押して実行 ⇒ 連続して実行される。 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 2. PowerShellの起動と実行 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  6. 6. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■基本的な文法(ステートメント) ・記述した内容は上から下に向かって処理される ・基本的な記述方法は以下の2種類 「変数 = コマンドレットの指定、計算などの処理」 ⇒ 処理結果を変数に格納する 「コマンドレットの指定、計算などの処理」 ⇒ 処理結果を画面に出力、結果を格納しない場合 ※処理結果を返したくない場合は[void]を付ける ~記述例~ $Now = Get-Date #現在の日時を取得(#はコメント) $Total = 1 + 2 * 3 – 4 / 5 #計算処理 Write-Host(“現在は” + $Now + “です。”) ↲ 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 3. スクリプトの記述方法 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  7. 7. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■変数 ・データを格納する「箱」 数学の方程式 x=1 と同じ、上書きされる ・PowerShellでは $名前 と指定する ・変数の中には、文字列、数値、日時、オブジェクト(機能の 集まり)などが格納される(これらをデータ型という) ~変数の動き~ ~変数のデータ型~ SID: xxxxxx DisplayName: 山田太郎 Email: xxxx@xxxxx 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 4. 変数とデータ型 ※復習 $Count $Count = 1 1 $Count $Count = 3 31 後の処理で上書きされる $Count = $Count + 4 3 3 + 4 $Count 上書きの前に、変数の値を 足しこんで格納(=7) $Count 1.23 数値型(整数・小数) $Text “あいう” 文字列型 $Now “2014/4/1 12:34:56” 日時型 $CsvData CSVファイルの内容 “1”, “山田太郎”, … “2”, “佐藤花子”, … “3”, “鈴木雅治”, … $AdUser ADユーザー情報(包括) TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  8. 8. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■オブジェクト変数 ・変数は格納されたデータ型によって、拡張機能を持っている 拡張機能 … プロパティ(属性)、メソッド(命令) ・拡張機能にアクセスするには、「$変数.XXX」と記述する ~プロパティのアクセス例~ $Now = Get-Date #現在の日付を取得 #年(数値)と 100 ナノ秒 (1 秒の 1000 万分の 1) を表示 Write-Host $Now.Year $Now.Ticks #日時を整形して表示 Write-Host $Now.ToString(“MM月dd日(ddd)HH時mm分”) $Cred = Get-Credential #認証ダイアログを表示 $Cred.UserName #入力したユーザー名 $Cred.Password #パスワードは見えない 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 4. 変数とデータ型 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  9. 9. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■Write-Host(出力内容) ・指定した出力内容を画面に出力する ・変数を直接指定した場合もWrite-Hostと同じく画面に出力(詳細) ~例~ Write-Host(Get-Date) Write-Host $Now $YourName $Total “あいう” 123 ■変数 = Read-Host(“入力を促すプロンプト”) ・画面に入力された文字列を受け取り、変数等に格納する ~例~ $Count = Read-Host(“繰り返し回数=”) $Count = [int]$Count #変数に変換 for ($i=1; $i –lt $Count; $Count++) { Write-Host($i) } #回数分表示 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 5. Write-HostとRead-Host ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  10. 10. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■変数と値 ・データを格納する「箱」 、PowerShellでは $名前 と指定 ・値の表現 文字列 ⇒ “123.45” 数値 ⇒ 123.45 日付 ⇒ [DateTime]“2014/4/1” ・データ型を調べる場合 ⇒ 変数.GetType() 例)データ型を確認 $a = “2014/4/1” $b = [DateTime]”2014/4/1” #文字列を日時型に変換 $a.GetType() $b.GetType() ■算術演算子 基本的にExcel等の表計算で利用するものと同じ( + - * /) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 6. 変数と値の表現、算術演算子 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  11. 11. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■文字列の連結 ・文字列を連結する場合は「+」を利用 ・“1” + “1” は 2 ではなく “11”、1 + 1 は 2(データ型の違い) ・特殊文字 … タブ 「`t」改行「`n」(日本語キーボードのShift+@) ■変数の演算 ・数値の余りを求める $result = 123 % 10 ⇒ $result に 3 ・加算処理 $count = $count + 1 と $count++ が同じ(++は省略形) ・現在の日時の取得 $date = Get-Date または $date = [DateTime]::Now ・日付の加算/減算 $date = $date.AddDays(30) / $date.AddDays(-1) ・日付の差 $timespan = New-TimeSpan $変数1 $変数2 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 6. 変数と値の表現、算術演算子 ※復習 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  12. 12. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■「if」プログラムの処理を分岐させる ・if (条件…) { 条件を満たした場合(true)の処理 } else { それ以外の処理(false: 条件を満たさない) } 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 7. 条件分岐 if ※復習 処理 条件 処理 処理 処理 条件を満たす場合 (true) 条件を 満たさない場合 (false) ● 複数の条件がある場合は elseif を利用する。 if ( 条件1… ) { 条件1を満たした場合(true)の処理 } elseif ( 条件2… ) { 条件2を満たした場合(true)の処理 } elseif ( 条件3… ) { 条件3を満たした場合(true)の処理 } else { いずれの条件にも満たない場合の処理 } TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  13. 13. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ 条件の指定方法 ・右辺と左辺が一致する(true)かどうかを記述 例)変数$ansの値が“Yes”だった場合 ⇒ if ( $ans –eq “Yes”) 例)変数$numの値が 100 未満の場合 ⇒ if ( $num –ge 100) 例)変数$dateの月が 4月~12月の場合 ⇒ if ( $date.Year –ge 4) ■ 条件の演算子 ・以下の演算子を利用して表現する(他にも –match などがあります) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 7. 条件分岐 if ※復習 演算子 意味 -eq 等しい= -ne 等しくない<> -like 含める(文字列) -not like 含めない(文字列) 演算子 意味 -gt 大きい > -ge 以上 >= -lt 小さい < -le 以下 <= TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  14. 14. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ~記述例~ $Point = Read-Host(“点数を入力してください。”) if ($Point –eq 100) { Write-Host(“満点!合格!”) ↲ } elseif ($Point –ge 60) { Write-Host(“合格!”) ↲ } else { Write-Host(“不合格!”) ↲ } 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 7. 条件分岐 if ※復習 ●ifの部分はネスト(入れ子)も可 if ($Point –eq 100) { Write-Host(“満点!合格!”) ↲ } else { if ($Point –ge 60) { Write-Host(“合格!”) ↲ } else { Write-Host(“不合格!”) ↲ } } TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  15. 15. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■「for」同じ処理を繰り返し実行する ・for ($i = 開始値; $i -le 終了値; $i++) { 開始値から終了の値まで処理を実行 } ←終端まで来ると $i の値が自動的に+1され、終了値を超えると処理を抜ける 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 8.繰り返し処理 for ※復習 処理 処理x 繰り返しの条件 の間「処理x」を 何度も実行する 繰り返し開始 繰り返し終了 処理x 処理 処理 処理x 繰り返しを2つ使って 処理することも多い (外側の繰り返し1は $i を、内側の繰り返し 2は $j を利用する) 繰返1開始 繰返1終了 処理y 処理 繰返2開始 繰返2終了 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  16. 16. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ~記述例~ 1から10までの和を表示する処理 $sum = 0 $sum = $sum + 1 $sum = $sum + 2 $sum = $sum + 3 … $sum = $sum + 10 Write-Host($sum) 繰り返しを使って記述した場合 $sum = 0 for ($i = 1; $i -le 10; $i++) { $sum = $sum + $i } Write-Host($sum) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 8.繰り返し処理 for ※復習 二重に繰り返しをおこなった場合 for ($i = 1; $i -le 10; $i++) { for ($j = 1; $j -le 10; $j++) { Write-Host(“” + $i + “,” + $j) } } 実行結果 左側が $i の値、右側が $j の値 1行ずつ$jの値が加算されていき、 10になった時点で、$iが加算される TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  17. 17. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ 良く使われるファイル・フォルダ操作のコマンドレット ・従来のコマンドと実質は同じ(mkdir、copy、dirなど) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 9. ファイルとフォルダの操作 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング コマンドレット 処理内容 New-Item ファイル・フォルダを作成する Remove-Item ファイル・フォルダを削除する Copy-Item ファイル・フォルダのコピー Move-Item ファイル・フォルダの移動 Get-ChildItem ファイル・フォルダの一覧取得 Get-Content ファイルの内容取得(テキストファイル等) Set-Content ファイルの内容設定(テキスト上書き) Add-Contnet ファイルの内容追記(テキスト追記)
  18. 18. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ファイルの作成 New-Item ファイル名 -ItemType File ・(空の)ファイルを作成する ・-Value “テキスト” を指定すると作成時にテキストを挿入 ・既に存在する場合はエラーとなる(-Forceで強制作成) ■フォルダの作成 New-Item ファイル名 -ItemType Directory ・フォルダを作成する ・既に存在する場合はエラーとなる(-Forceで強制作成) ~作成例~ PS>New-Item Sample.txt -ItemType File -Value “さんぷる” PS>New-Item Sample -ItemType Directory 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 10. ファイル・フォルダの作成 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  19. 19. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ※作業をする場合には、現在のフォルダをデスクトップに移動してください。 PS> cd Desktop 問題: ①デスクトップ上にフォルダ「PSTEST」を作成してください。 ②作成したフォルダ「PSTEST」の中に、「フォルダ1~9」を 作成してください。 ③作成したフォルダ「PSTEST」の中に、「ファイル1~9」を 作成してください。作成時に「これはファイル1~9です」と 書き込んでください。 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 11. 練習:ファイル・フォルダの作成 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  20. 20. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 PS> New-Item PSTEST -ItemType Directory ②の例 for($i=1; $i –le 9; $i++) { $DirName = "PSTESTフォルダ" + $i New-Item $DirName -ItemType Directory } ③の例 for($i=1; $i –le 9; $i++) { $FileName = "PSTESTファイル" + $i + ".txt" $FileText = "これはファイル" + $i + "です。" New-Item $FileName -ItemType File -Value $FileText } 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 11. 解答:ファイル・フォルダの作成 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  21. 21. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■フォルダ内容の取得 $結果 = Get-ChildItem [対象のパス] [フィルタ(*.txtなど)] ・フォルダの内容(ファイル・フォルダ)を取得する ・対象のパスを指定しない場合は現在のフォルダ ・取得した結果を変数に格納し、foreach などで処理する ~作成例~ PS> Get-ChildItem $Items = Get-ChildItem PSTEST foreach ($Item in $Items) { Write-Host $Item.Name $Item.CreationTime } 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 12. フォルダ内容の取得 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  22. 22. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 問題: ① C:Windows の中にある拡張子がCPLのファイル(*.cpl)を 取得し画面に表示させてください ②前の練習で作成したフォルダ「PSTEST」の内容を変数$Itemsに 格納し、全ての名前を画面に1行で表示してください。 ③前の練習で作成したフォルダ「PSTEST」にあるテキストファイルを 変数$Itemsに格納し、ファイルの件数を表示してください。 ④前の練習で作成したフォルダ「PSTEST」にあるテキストファイルを 変数$Itemsに格納し、ファイルサイズの合計を表示してください。 ヒント: 結果の数 $Items.Count 1ファイルのサイズ $Item.Length 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 13. 練習:フォルダ内容の取得 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  23. 23. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 PS> Get-ChildItem C:WindowsSystem32 "*.cpl" ②の例 $Items = Get-ChildItem PSTEST foreach ($Item in $Items) { Write-Host $Item.Name -NoNewline Write-Host " " -NoNewline #スペースを表示 } ③の例 $Items = Get-ChildItem PSTEST "*.txt" Write-Host($Items.Count) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 13. 解答:フォルダ内容の取得 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  24. 24. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ④の例 $Size = 0 $Items = Get-ChildItem PSTEST "*.txt" foreach ($Item in $Items) { $Size = $Size + $Item.Length } Write-Host($Size) # バイト Write-Host($Size / 1024) # KB (参考: ToStringを使って書式を整形) Write-Host($Size.ToString("#,###バイト")) Write-Host(($Size / 1024).ToString("0.00KB")) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 13. 解答:フォルダ内容の取得 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  25. 25. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ファイル・フォルダのリネーム、移動 Move-Item 変更前ファイル・フォルダ名 変更後名前 ・ファイルやフォルダを移動=リネームと同じ ※Rename-Itemコマンドレットも利用可能 ■ファイル・フォルダの削除 Remove-Item ファイル・フォルダ名 -Confirm –WhatIf -Force ・ファイルやフォルダを削除する ・-Confrimを付けると操作前に確認がおこなえる ・-WhatIfを付けると「仮実行」となる(実際に削除はしない) ~作成例~ PS>Move-Item PSTEST PSTEST_NEW PS>Remove-Item PSTEST_NEWファイル1.txt –Confirm –WhatIf 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 14. リネーム、移動、削除の操作 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  26. 26. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 問題: ①前の練習で作成したフォルダ「PSTEST」の名前を 「PSTEST_NEW」と変更してください。 ②「PSTEST_NEW」の中にあるフォルダ9を削除してください。 ③「PSTEST_NEW」の中にあるファイル1.txtを「フォルダ1」に 移動してください。 ④「PSTEST_NEW」の中にあるファイル2~5.txtの拡張子を .txt から .log に変更してください。 ⑤「PSTEST_NEW」の中にあるファイル2~5.logを 各フォルダ2~5の中に移動してください。 ヒント: 繰り返しの指定を2回~5回に指定する for($i=2; $i –le 5; $i++) { 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 14. 練習:リネーム、移動、削除 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  27. 27. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 PS> Move-Item PSTEST PSTEST_NEW ②の例 PS> Remove-Item .PSTEST_NEWフォルダ9 ③の例 PS> Move-Item .PSTEST_NEWファイル1.txt .PSTEST_NEWフォ ルダ1 ④の例 for($i=2; $i –le 5; $i++) { $FileFrom = "PSTEST_NEWファイル" + $i + ".txt" $FileTo = "PSTEST_NEWファイル" + $i + ".log" Move-Item $FileFrom $FileTo } 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 15. 解答:リネーム、移動、削除 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  28. 28. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ⑤の例 for($i=2; $i –le 5; $i++) { $FileFrom = "PSTEST_NEWファイル" + $i + ".log" $FileTo = "PSTEST_NEWフォルダ" + $i + "ファイル" + $i + ".log" Move-Item $FileFrom $FileTo } 参考:変数の値は文字列の中に直接埋め込むこともできる $FileFrom = "PSTEST_NEWファイル$i.log" $FileTo = "PSTEST_NEWフォルダ$iファイル$i.log" 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 15. 解答:リネーム、移動、削除 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  29. 29. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■サンプルの用意 テキストファイルの読み書きをおこなう前にサンプルを用意します。 メモ帳などのテキストエディタで以下のファイルを作成し、 デスクトップに「くだもの.txt」として保存してください。 ※項目の間はカンマ(,)を入れる 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 16. テキストファイルの準備 名前 価格 いちご 80 みかん 40 すいか 300 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  30. 30. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ファイルの読み込み 結果 = Get-Content ファイル名 -Encoding 文字コード名 Get-Content ファイル名 | 連携するコマンドレットなど ・読み取った結果を画面に表示/結果に代入する ・-Encoding “文字コード名”を指定すると指定した文字コードで読み込み (デフォルトはString=Shift JIS) ・-Tail(または –Last)を利用すると最後の00行のみ抽出可能 → -Wait を組み合わせると UNIXの Tail –f と同じことができる ~例~ PS>$Text = Get-Content くだもの.txt -Encoding UTF8 PS>Get-Content くだもの.txt –Last 10 PS>Get-Content くだもの.txt -Wait -Last 10 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 17. テキストファイルの読み込み TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  31. 31. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ※作業をする場合には、現在のフォルダをデスクトップに移動してください。 PS> cd Desktop 問題: ①ファイル「くだもの.txt(デスクトップ上)」を読み込み、 変数$Textに格納し、画面に表示してください。 ②1から1000までの合計を計算し、計算結果を画面に 表示してください。(合計: 500,500) ③1から1000までの計算の途中経過と計算結果を画面に 表示してください。 例)経過: 0 + 1 = 1 経過: 1 + 2 = 3 経過: 3 + 3 = 6 合計: 500,500 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 18. 練習:テキストファイルの読み書き TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  32. 32. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 $Text = Get-Content くだもの.txt (改行)Write-Host $Text ②の例 $Total = 0 for($i=1; $i –le 1000; $i++) { $Total = $Total + $i } Write-Host "結果: " + $Text ③の例 $Total = 0 for($i=1; $i –le 1000; $i++) { $Text = "経過:" + $Total + "+" + $i + "=" + ($Total + $i ) Write-Host $Text $Total = $Total + $i } Write-Host "合計:" + $Total.ToString("#,###") 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 18. 解答:テキストファイルの読み書き TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  33. 33. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■ファイルの書き込み(上書き) Set-Content ファイル名 -Encoding 文字コード名 -Value 値 出力処理や変数 | Set-Content ファイル名 -Encoding 文字コード ・指定したファイル名に結果を書き込む(読み取りでも上書き) ・書き込み中はロックされる(他のプロセスからアクセスできない) → 第2回で紹介した Out-File は読み取りは可能 ■ファイルの書き込み(追記) Add-Content ファイル名 -Encoding 文字コード名 -Value 値 出力処理や変数 | Add-Content ファイル名 -Encoding 文字コード ・指定したファイル名に結果を追記する ・書き込み中はロックされる(他のプロセスからアクセスできない) ~例~ PS>“あいうえお” | Add-Content サンプル.txt -Encoding UTF8 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 19. テキストファイルの書き込み TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  34. 34. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ※作業をする場合には、現在のフォルダをデスクトップに移動してください。 PS> cd Desktop 問題: ①ファイル「くだもの.txt(デスクトップ上)」を読み込み、 変数$Textに格納し、結果を「くだもの2.txt」に書き込んでください。 ②1から1000までの合計を計算し、計算結果を「合計.txt」に 書き込んでください。(合計: 500,500) ③1から1000までの計算の途中経過と計算結果を「経過合計.txt」に 書き込んでください。 例)経過: 0 + 1 = 1 経過: 1 + 2 = 3 経過: 3 + 3 = 6 合計: 500,500 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 20. 練習:テキストファイルの読み書き TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  35. 35. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 $Text = Get-Content くだもの.txt (改行)Write-Host $Text Set-Content くだもの2.txt –Value $Text ②の例 $Total = 0 for($i=1; $i –le 1000; $i++) { $Total = $Total + $i } Set-Content 結果.txt -Value ("合計:" + $Total.ToString("#,###")) ③の例 $Total = 0 for($i=1; $i –le 1000; $i++) { $Text = "経過:" + $Total + "+" + $i + "=" + ($Total + $i ) Add-Content 経過結果.txt -Value $Text $Total = $Total + $i } Add-Content 経過結果.txt -Value ("合計:" + $Total.ToString("#,###")) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 20. 解答:テキストファイルの読み書き TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  36. 36. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■CSVファイルの読み込み $結果 = Import-CSV CSVファイル –Encoding 文字コード ・CSVファイルを読み込み、結果へ配列として格納する ・-Encodingを付けない場合は、Unicodeを読み込む → ExcelからCSVファイルを作成した場合はShift-JISになるため注意 ・取得した結果を変数に格納し、foreach などで処理する ~例~ $CsvData = Import-Csv くだもの.txt –Encoding Default foreach ($Data in $CsvData) { Write-Host $Data } → 結果が 1行ずつ 表示される 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 21. CSVファイルの読み込み TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  37. 37. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■配列 配列=1つの変数の中を区切って、複数の値を入れるようにしたもの 変数 配列 ~例~ $CsvData = Import-Csv くだもの.txt –Encoding Default Write-Host $CsvData[1] → 先頭行を除き、2行目の値「みかん、40」を表示する $fruitsData = “いちご”, “みかん”, “すいか”, “バナナ” foreach ($fruitsItem in $fruitsData) { Write-Host($fruitsItem + “が好きです”) } → $fruitsData が配列になっている(第1回のサンプル) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 22. 配列の概要と扱い $Total $Total = 1 1 0 1 2 $Data[2] 1 37 ●配列の中の値を取り出したい場合 →変数名[位置]を指定 結果=$Data[0] ●配列の中の値を取り出したい場合 →変数名[位置]を指定 $Data[1] = 値 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  38. 38. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ■Import-CSVのメリット 列を名前として処理することができる ~例~ $CsvData = Import-Csv くだもの.txt –Encoding Default foreach ($Data in $CsvData) { Write-Host “名前は” $Data.名前 “です” } → 名前だけ取り出して表示される 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 23. CSVファイルの列指定 名前 価格 いちご 80 みかん 40 すいか 300 CSVファイルの先頭行が見出しとして扱える $1行のデータを格納した変数名.列名 例) Write-Host $Row.名前 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  39. 39. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 問題: ① くだもの.txt をCSVファイルとして読み込み 「名前=XXXX、価格=XXXX円」と1行ずつ表示させてください ② 1の処理に加えて、最後に「全部で00件、合計00円です」と 表示させてください ③ ①と②の結果を「くだもの加工後.txt」に保存してください ④ Googleの「Fusion Tables」から利用される緯度経度情報のCSVファイルを Googleからダウンロードします。 検索「Google 都道府県所在地.csv」 URL https://www.google.com/fusiontables/DataSource?snapid=S557390H1zy ・このファイルの件数を表示させてください ・関東の都道府県だけのデータを、関東.txtに抽出してください 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 24. 練習:CSVファイルの読み込み TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  40. 40. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ①の例 $CsvData = Import-Csv くだもの.txt –Encoding Default foreach ($Data in $CsvData) { Write-Host ("名前=" + $Data.名前 +"、価格=" + $Data.価格 + "円") } ②の例 $CsvData = Import-Csv くだもの.txt –Encoding Default $Count = 0 (改行)$Total = 0 foreach ($Data in $CsvData) { Write-Host ("名前=" + $Data.名前 +"、価格=" + $Data.価格 + "円") $Total = $Total + $Data.価格 $Count = $Count + 1 } Write-Host ("全部で" + $Count +"件、合計" + $Total + "円です“) 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 24. 解答:CSVファイルの列指定 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング
  41. 41. Techno Walker Inc. All rights reserved. 文書・画像等の無断使用・転載を禁止します。 ③の例 $CsvData = Import-Csv くだもの.txt –Encoding Default $Count = 0 $Total = 0 foreach ($Data in $CsvData) { $Text= "名前=" + $Data.名前 +"、価格=" + $Data.価格 + "円" Add-Content くだもの加工.txt -Value $Text $Total = $Total + $Data.価格 $Count = $Count + 1 } $Text = "全部で" + $Count +"件、合計" + $Total + "円です" Add-Contentくだもの加工-Value $Total 第2回 PowerShellプログラミング基礎とファイルの操作(その2) 24. 解答:CSVファイルの列指定 TW社内セミナー システム運用・構築技術者のためのPowerShellプログラミング

×