目次
PowerShellの活用例を紹介します!
今回は、PowerShellの活用例を紹介します。
ここでは、以下について紹介します。
・連番のフォルダ作成
・ログ監視
・xmlファイルの操作
・csvファイルの集計
・ファイル名の一括変更
・同名ファイル一覧作成
PowerShellの活用例に興味のある方はぜひご覧ください。
連番のフォルダ作成
PowerShellの活用例として、連番のフォルダ作成について紹介します。
実際のコマンドを見てみましょう。
1
|
PS C:\> mkdir (1..100 | % { ""test\folder_{0:000}"" -f $_})
|
ディレクトリ: C:\test
Mode LastWriteTime Length Name
—- ————- —— —-
d—– 2020/11/16 20:56 folder_001
d—– 2020/11/16 20:56 folder_002
d—– 2020/11/16 20:56 folder_003
:
(中略)
:
d—– 2020/11/16 20:56 folder_098
d—– 2020/11/16 20:56 folder_099
d—– 2020/11/16 20:56 folder_100
PS C:\>
1~100の連番フォルダが作成されていることが分かります。
ログ監視
PowerShellの活用例として、ログ監視について紹介します。
実際のコマンドを見てみましょう。
1
|
PS C:\> Get-Content -Wait -Tail 1 -Path "".\test\test.log"" | Select-String ""error""
|
“”.\test\test.log””をテキストエディタで開き、何か文字列を入力して保存してみてください。
errorまたはERRORを含む文字列を入力して保存すると、コンソール出力されることが分かります。
xmlファイルの操作
PowerShellの活用例として、xmlファイルの操作について紹介します。
以下のようなxmlファイルを扱います。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?xml version=""1.0"" encoding=""UTF-8""?>
<Persons>
<Person category=""old"">
<Name type=""string"">ichiro</Name>
<Age type=""int"">23</Age>
</Person>
<Person category=""old"">
<Name type=""string"">taro</Name>
<Age type=""int"">25</Age>
</Person>
<Person category=""new"">
<Name type=""string"">jiro</Name>
<Age type=""int"">31</Age>
</Person>
<Person category=""new"">
<Name type=""string"">saburo</Name>
<Age type=""int"">34</Age>
</Person>
</Persons>
|
実際のコマンドを見てみましょう。
1
2
3
4
5
6
7
8
|
$xml = [XML](Get-Content .\test\test.xml)
foreach ($List in $xml.Persons) {
foreach ($item in $List.Person) {
if($item.GetAttribute(""category"") -eq ""new""){
echo $item.Name.innerText
}
}
}
|
実行結果は以下のようになります。
1
2
|
jiro
saburo
|
csvファイルの集計
PowerShellの活用例として、csvファイルの集計について紹介します。
実際のコマンドを見てみましょう。
1
|
PS C:\> Import-Csv .\test\test.csv
|
Name Age
—- —
ichiro 23
taro 25
jiro 31
saburo 34
PS C:\> Import-Csv .\test\test.csv | Measure-Object -Property Age -Average -Sum -Maximum -Minimum
Count : 4
Average : 28.25
Sum : 113
Maximum : 34
Minimum : 23
Property : Age
PS C:\>
csvファイルの集計が簡単に行えます。
ファイル名の一括変更
PowerShellの活用例として、ファイル名の一括変更について紹介します。
実際のコマンドを見てみましょう。
1
|
PS C:\> New-Item (1..5 | % { ""test\file{0:00}.txt"" -f $_})
|
ディレクトリ: C:\test
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2020/11/16 21:42 0 file01.txt
-a—- 2020/11/16 21:42 0 file02.txt
-a—- 2020/11/16 21:42 0 file03.txt
-a—- 2020/11/16 21:42 0 file04.txt
-a—- 2020/11/16 21:42 0 file05.txt
PS C:\> Get-ChildItem .\test\ | Rename-Item -NewName { $_.Name -replace ‘file’,’file_’}
PS C:\> Get-ChildItem .\test\
ディレクトリ: C:\test
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2020/11/16 21:42 0 file_01.txt
-a—- 2020/11/16 21:42 0 file_02.txt
-a—- 2020/11/16 21:42 0 file_03.txt
-a—- 2020/11/16 21:42 0 file_04.txt
-a—- 2020/11/16 21:42 0 file_05.txt
PS C:\>
ファイル名が一括で変更されていることが分かります。
同名ファイル一覧の作成
PowerShellの活用例として、同名ファイル一覧の作成について紹介します。
実際のコマンドを見てみましょう。
1
|
PS C:\> Get-ChildItem .\test\ -File -Recurse
|
ディレクトリ: C:\test\folder01
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2020/11/16 21:42 0 file_01.txt
-a—- 2020/11/16 21:42 0 file_02.txt
-a—- 2020/11/16 21:42 0 file_03.txt
-a—- 2020/11/16 21:42 0 file_04.txt
-a—- 2020/11/16 21:42 0 file_05.txt
ディレクトリ: C:\test\folder02
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2020/11/16 21:42 0 file_03.txt
-a—- 2020/11/16 21:42 0 file_05.txt
-a—- 2020/11/16 21:42 0 file_09.txt
-a—- 2020/11/16 21:42 0 file_12.txt
-a—- 2020/11/16 21:42 0 file_15.txt
ディレクトリ: C:\test\folder03
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2020/11/16 21:42 0 file_01.txt
-a—- 2020/11/16 21:42 0 file_03.txt
-a—- 2020/11/16 21:42 0 file_05.txt
-a—- 2020/11/16 21:42 0 file_06.txt
-a—- 2020/11/16 21:42 0 file_07.txt
PS C:\> Get-ChildItem .\test\ -File -Recurse | Group-Object Name -CaseSensitive | Where-Object { $_.Count -gt 1 } | foreach { $_.Group | Sort-Object Directory -CaseSensitive | Select-Object FullName }
FullName
——–
C:\test\folder01\file_01.txt
C:\test\folder03\file_01.txt
C:\test\folder01\file_03.txt
C:\test\folder02\file_03.txt
C:\test\folder03\file_03.txt
C:\test\folder01\file_05.txt
C:\test\folder02\file_05.txt
C:\test\folder03\file_05.txt
PS C:\>
指定フォルダ配下の同名ファイルがフルパスで一覧表示されることが分かります。
まとめ
いかがでしたでしょうか。PowerShellの活用例を紹介しました。PowerShellは自由度が高いので、ここに書いてある活用例以外にも様々なことが実現できます。
ぜひご自身でコマンドを書き、理解を深めてください。