Lesson 4
PoweShellコマンドの構造
目次
Lesson 4
Chapter 1
PoweShellコマンドの構造
PowerShellのコマンドは、一般的に以下のような構造を持ちます。
コマンドレットの構造を認識しておくことで、PowerShellのコマンドを比較的簡単に理解することができます。
powershell
<動詞>-<名詞> [-<オプション>] [<引数>]
例えば、ファイルを削除するためのPowerShellコマンドは、次のようになります。
powershell
Remove-Item [-Recurse] [<Path>]
この場合、Remove-Itemは動詞で、Itemは名詞です。-Recurseはオプションであり、削除するディレクトリに含まれるすべてのファイルとサブディレクトリを再帰的に削除します。<Path>は引数であり、削除するファイルやディレクトリの場所を指定します。
また、PowerShellでは、コマンドレットや関数の出力を別のコマンドにパイプ(引き渡し)することができます。これにより、複数のコマンドを組み合わせて、より複雑な処理を実現することができます。
例えば、特定のフォルダにあるファイルの数を調べるためには、次のようなコマンドを使用することができます。
powershell
Get-ChildItem [フォルダパス] | Measure-Object | Select-Object Count
この場合、Get-ChildItemコマンドは、指定されたフォルダ内のファイルをリストします。Measure-Objectコマンドは、リストされたファイルの数を数えます。そして、Select-Objectコマンドは、Countプロパティだけを表示します。
このように、PowerShellのコマンドは、動詞、名詞、オプション、引数の組み合わせで構成されており、パイプを使用して複数のコマンドを組み合わせることができます

Lesson 4
Chapter 2
コマンドレットとは
PowerShellでは、コマンドを「コマンドレット」と呼ばれる形式で提供しています。
コマンドレットは、一般的にオプションと引数を持ちます。オプションは、コマンドレットに対して追加の機能を提供するためのフラグ(印)であり、引数は、コマンドレットに渡す値です。これらのオプションと引数は、コマンドレットの使用方法に応じて異なります。
コマンドレットは、PowerShellの中で実行され、結果を返します。これらの結果は、PowerShellのコンソールに表示されます。また、コマンドレットの結果は、パイプを介して他のコマンドレットに渡すこともできます。これにより、複数のコマンドレットを組み合わせることで、複雑なタスクを実行することができます。
コマンドレットの名づけルール
PowerShellにおいて、コマンドレットの名前は一定のルールに従って決定されます。コマンドレットの名前を決定するにあたり、以下のルールが適用されます。
- 動詞と名詞をハイフンで区切る 例:Get-Process、New-Item
- 動詞はコマンドレットが何を行うかを示す 例:Getは何かを取得する、Setは何かを設定する
- 名詞は操作対象を示す 例:Processはプロセスを示す、Itemはアイテムを示す
- 名前は可能な限り短く、かつ説明的であるべき 例:Get-ChildItemではなくGet-Itemを使用することが推奨される
これらのルールに従うことで、コマンドレットの名前を簡潔で説明的なものにすることができます。また、このルールに従うことで、コマンドレットの名前が一貫性を持ち、覚えやすくなります。
ヘルプコマンド
PowerShellには、コマンドのヘルプを表示するためのヘルプコマンドが用意されています。ヘルプコマンドを使用することで、コマンドの機能や使用方法、オプションや引数などを確認することができます。
ヘルプコマンドの使い方には、以下の2つがあります。
-
Get-Helpコマンド 例:Get-Help Get-Process
Get-Helpコマンドは、指定したコマンドのヘルプ情報を表示します。デフォルトでは、ヘルプ情報はコマンドラインに表示されますが、-ShowWindowオプションを指定することで、別ウィンドウで表示することもできます。
-
コマンドレット名にワイルドカードを使用したヘルプコマンド
例:Get-Help *Process*
このコマンドは、指定したワイルドカードに一致するコマンドのヘルプ情報を表示します。この方法は、複数のコマンドに対して一括してヘルプ情報を表示するために使用することができます。
ヘルプコマンドは、PowerShellを使用する上で非常に重要なツールの1つです。特に初心者の場合は、コマンドのヘルプを参照しながら学習することをおすすめします。

Lesson 4
Chapter 3
エイリアスを使用する
PowerShellには、コマンドのエイリアスを作成する機能があります。エイリアスとは、コマンドの別名を設定することで、同じコマンドを簡単に入力できるようにする機能です。
たとえば、Get-ChildItemコマンドは、ファイルやフォルダの一覧を取得するために使用されます。このコマンドを実行する際に、毎回Get-ChildItemと入力するのは面倒です。そこで、このコマンドのエイリアスを設定することで、簡単に入力できるようになります。
ただし、エイリアスを多用すると、コマンドが何を行っているのかを理解するのが難しくなる場合があります。また、他のユーザーとスクリプトを共有する際には、エイリアスを使用せずに完全なコマンド名を使用することが推奨されます。
エイリアスとは
前述の通り、エイリアスとは、コマンドの別名を設定することで、同じコマンドを簡単に入力できるようにする機能です。
たとえば、PowerShellでファイルの一覧を表示するためには、Get-ChildItemというコマンドを使用します。しかし、このコマンド名は長いため、毎回入力するのは面倒です。そこで、このコマンドのエイリアスを「gci」と設定することで、より簡単にコマンドを実行することができます。
エイリアスを作成するには、New-Aliasコマンドを使用します。例えば、Get-ChildItemコマンドのエイリアスをgciと設定するには、以下のように入力します。
powershell
New-Alias -Name gci -Value Get-ChildItem
このようにエイリアスを設定すると、gciと入力するだけでGet-ChildItemコマンドを実行することができます。
ただし、エイリアスを過剰に使用すると、他のユーザーがスクリプトを理解するのが難しくなる場合があります。また、PowerShellにはコマンドの競合や重複がある場合がありますので、エイリアスを使用する際には注意が必要です。
Get-Aliasで使用可能なエイリアスを調べる
PowerShellには、Get-Aliasというコマンドがあります。このコマンドを使用すると、現在定義されているエイリアスの一覧を表示することができます。
以下は、Get-Aliasコマンドを使用して、現在定義されているエイリアスを表示する例です。
poewrshell
Get-Alias
このコマンドを実行すると、PowerShellに定義されている全てのエイリアスの一覧が表示されます。それぞれのエイリアスには、コマンドの完全な名前、または他のエイリアスが割り当てられている場合はそのエイリアスの名前が表示されます。
なお、Get-Aliasコマンドにはパイプを使用して、特定のエイリアスのみを表示することもできます。たとえば、以下のように「ls」というエイリアスの詳細を表示することができます。
powershell
Get-Alias gci
また、エイリアスを使用した場合の実際のコマンド名を知りたい場合は、以下のように「-Definition」パラメータを使用して取得することができます。
powershell
Get-Alias ls | Select-Object -ExpandProperty Definition
このようにして、Get-Aliasコマンドを使用することで、エイリアスの一覧を調べることができます。
基本的なエイリアスを触ってみる
この項目では、PowerShellでよく使用されるいくつかのエイリアスについて簡単に紹介し、それらがどのようなコマンドを短縮化するかを説明します。具体的には、以下のエイリアスについて説明します。
エイリアス | 実際のコマンド名 |
---|---|
echo | Write-Output |
ls | Get-Clear-Host |
dir | Get-ChildItem |
cd | Set-Location |
これらのエイリアスを使用することで、より効率的にPowerShellを使用することができます。詳細については、このChapterで説明します。
文字列出力(echo)
「echo」という用語は、他のシェルで使用されることがありますが、PowerShellでは代わりにWrite-Outputコマンドを使用します。
Write-Outputは、指定した文字列や変数の値を出力するためのコマンドです。以下は、例です。
powershell
Write-Output "Hello, World!"
上記のコマンドを実行すると、Hello, World!という文字列が出力されます。
また、PowerShellにはechoと同様にWrite-Hostというコマンドもあります。Write-Hostは、指定した文字列をコンソールに表示するために使用されます。ただし、Write-Hostは出力された文字列を他のコマンドレットで使用できないため、一般的にWrite-Outputを使用することが推奨されています。
さらに、PowerShellでは、echoと同じように動作するエイリアスとして、echo、echoargs、echoxなどがあります。これらのエイリアスを使用することで、より簡単にコマンドを入力できます。たとえば、以下のようにechoエイリアスを使用して、文字列を出力することができます。
powershell
echo "Hello, World!"
カレントディレクトリ移動(cd)
PowerShellにおいて、カレントディレクトリを移動するには「cd」というコマンドを使用します。「cd」は、「Change Directory」の略称で、Unix系のシェルでも同様に使われています。
「cd」は「Set-Location」というコマンドのエイリアスでもあります。つまり、「Set-Location」と「cd」は同じ意味を持ちます。例えば、以下のコマンドは「cd」と同じ動作をします。
powershell
Set-Location C:\Users\[ユーザー名]\Documents
例えば、次のように「cd」を使用して、ディレクトリを移動することができます。
powershell
cd C:\Users\[ユーザー名]\Documents
上記のコマンドを実行すると、カレントディレクトリが「C:\Users\YourName\Documents」に移動します。このディレクトリに移動した状態で、ファイルを作成したり、フォルダを作成したりすることができます。
以上が、PowerShellにおける「cd」コマンドの基本的な使い方になります。
ディレクトリ配下の項目取得(ls/dir)
「ls」と「dir」は、ファイルやディレクトリの一覧を表示するためのコマンドレットです。
実際には、これらのコマンドレットは「Get-ChildItem」というコマンドレットのエイリアスであり、同じ動作をします。
例えば、以下のように入力します。
powershell
ls
poewrshell
dir
これにより、現在のディレクトリに含まれるファイルやディレクトリの一覧が表示されます。
「ls」と「dir」は、どちらも同じ機能を持っていますが、Windowsのコマンドプロンプトの「dir」と似た名前で覚えやすい「dir」を使いたい場合には、「ls」のエイリアスを「dir」に設定することができます。
ディレクトリ作成(mkdir)
PowerShellにおけるディレクトリ作成のコマンドレットは「New-Item」です。新しいディレクトリを作成するには、次のように入力します。
powershell
New-Item -ItemType Directory -Path "C:\NewFolder"
この例では、New-Itemコマンドレットを使用して、新しいディレクトリを「C:\NewFolder」というパスに作成しています。また、-ItemTypeパラメーターを使用して、新しいアイテムがディレクトリであることを指定しています。
また、New-Itemコマンドレットのエイリアスとして、md(MakeDirectory)またはmkdir(MakeDirectory)を使用することができます。次の例では、「mkdir」を使用して、新しいディレクトリを作成しています。
powershell
mkdir "C:\NewFolder"
このコマンドは、New-Itemコマンドレットを使用して新しいディレクトリを作成することと同じです。また、新しいディレクトリが作成される親ディレクトリが存在しない場合は、自動的に親ディレクトリも作成されます。

Lesson 4
Chapter 4
文と式
PowerShellにおいて、コマンドやスクリプトは「文」と「式」に分けることができます。この「文」と「式」について説明します。
文
「文」は、単純なコマンドやコマンドレット、関数、制御構造(if文やfor文など)など、PowerShellで実行される命令のことを指します。文は、単独で実行することができ、その結果が画面に表示されます。
以下は、PowerShellで「文」を使った例です。
powershell
Get-ChildItem C:\Windows\System32
上記の例では、「Get-ChildItem」というコマンドレットを使って、WindowsのSystem32フォルダ内のファイルやフォルダを一覧表示しています。このコマンドは、単体で実行して、結果を表示することができます。
式
「式」は、変数、演算子、関数呼び出し、式評価、コマンドラインパイプラインなど(詳細は後述)、値を生成するPowerShellの式のことを指します。式は、他の式と組み合わせて使用することで、より複雑な処理を実現することができます。
以下は、PowerShellで「式」を使った例です。
powershell
$files = Get-ChildItem C:\Windows\System32 | Where-Object { $_.Extension -eq ".exe" }
上記の例では、「Get-ChildItem」と「Where-Object」というコマンドレットを組み合わせて、System32フォルダ内の拡張子が「.exe」のファイルを一覧表示し、その結果を「$files」という変数に代入しています。このコマンドは、「文」の場合と異なり、複数の式を組み合わせて実行することで、より複雑な処理を実現しています。
以上が、PowerShellにおける「文」と「式」の概要になります。

Lesson 4
Chapter 5
コマンドの入出力要素
PowerShellにおいて、コマンドの入出力にはいくつかの要素があります。これらの要素を理解することで、PowerShellのコマンドの使い方や、コマンドを組み合わせて実行する方法がより深く理解できるようになります。
具体的には、コマンドの入力要素としては、コマンドライン引数、パイプライン、標準入力があります。そして、コマンドの出力要素としては、標準出力、標準エラー出力があります。
コマンドライン引数は、コマンドに追加の情報を与えるために使用される文字列であり、コマンドの名前の後にスペースで区切って指定されます。複数の引数を指定する場合は、スペースで区切って指定します。
パイプラインは、あるコマンドの出力を、別のコマンドの入力として渡すための仕組みであり、複数のコマンドを連結して実行することができます。
標準入力は、コマンドに対してキーボードから入力されるテキストであり、インタラクティブ(対話的)な入力を行うことができます。
一方、コマンドの出力要素としては、標準出力と標準エラー出力があります。標準出力は、コマンドの実行結果を表示するためのものであり、標準エラー出力は、コマンドの実行時に発生したエラーの情報を表示するためのものです。
これらの入出力要素を理解し、正しく使いこなすことで、PowerShellをより効率的に使いこなすことができます。
標準入力
PowerShellにおける標準入力とは、コマンドに対してキーボードから入力されるテキストのことを指します。標準入力は、コマンドによって必要な情報を入力するために使用され、インタラクティブ(対話的)な入力を行うことができます。
標準入力を使用する場合は、コマンドを実行した後に、キーボードからの入力を行います。入力が終了した場合は、Enterキーを押して終了します。
例えば、以下のコマンドを実行する場合、コマンドが要求する入力をキーボードから入力することができます。
powershell
Read-Host "Please enter your name:"
このコマンドでは、Read-Hostを使用して、ユーザーに名前を入力するように促します。コマンドを実行すると、Please enter your name:というプロンプトが表示され、ユーザーはキーボードから名前を入力します。入力が終了したらEnterキーを押して、入力を終了します。
powershell
John
以上のように、標準入力はPowerShellにおいて重要な役割を持ち、インタラクティブな入力を行うことができます。
標準出力
PowerShellにおける標準出力とは、コマンドが出力するテキスト情報のことを指します。コマンドの実行結果を表示するために使用され、通常はコマンドの実行結果が画面に表示されます。
例えば、以下のコマンドを実行すると、現在のディレクトリのファイル一覧が標準出力として表示されます。
powershell
Get-ChildItem
このコマンドでは、Get-ChildItemを使用して、現在のディレクトリのファイル一覧を表示しています。コマンドを実行すると、ファイル一覧が画面に表示されます。この場合、標準出力として画面に表示されたファイル一覧がPowerShellの標準出力となります。
標準出力は、通常は画面に表示されますが、必要に応じて、ファイルに出力することもできます。例えば、以下のようにファイルに出力することができます。
powershell
Get-ChildItem > file.txt
このコマンドでは、>演算子を使用して、Get-ChildItemの出力結果をfile.txtというファイルに出力しています。この場合、標準出力としてファイルに出力されるため、画面には何も表示されません。
以上のように、標準出力はPowerShellにおいて非常に重要な役割を持ち、コマンドの実行結果を表示するために使用されます。
標準エラー
PowerShellにおける標準エラーとは、コマンドの実行中に発生したエラーや警告などのテキスト情報のことを指します。通常は、コマンドの実行に成功した場合は何も表示されませんが、エラーや警告が発生した場合は、標準エラーとして画面に表示されます。
例えば、以下のコマンドを実行すると、存在しないファイルを開こうとした旨のエラーメッセージが標準エラーとして表示されます。
powershell
Get-Content nonexistent.txt
このコマンドでは、Get-Contentを使用して、存在しないnonexistent.txtというファイルを開こうとしています。このため、標準エラーとして「Get-Content: パス 'nonexistent.txt' へのアクセスが拒否されました」という意味のエラーメッセージが画面に表示されます。
標準エラーは、通常は画面に表示されますが、必要に応じて、ファイルに出力することもできます。例えば、以下のようにファイルに出力することができます。
powershell
Get-Content nonexistent.txt 2> error.txt
このコマンドでは、2>演算子を使用して、Get-Contentのエラー結果をerror.txtというファイルに出力しています。この場合、標準エラーとしてファイルに出力されるため、画面には何も表示されません。
以上のように、標準エラーはPowerShellにおいて重要な役割を持ち、コマンドの実行中に発生したエラー情報を表示するために使用されます。

Lesson 4
Chapter 6
行継続
PowerShellにおける行継続とは、コマンドライン上で複数行に渡るコマンドを記述するための機能です。通常、PowerShellでは1つのコマンドを1行に記述することが推奨されていますが、複雑なコマンドを記述する場合には、複数行に分割して記述することが必要となります。このとき、行継続を使用することで、複数行に分割したコマンドを1つのコマンドとして解釈することができます。
行継続を行うには、バッククォート(`)を使用します。バッククォートは、改行を文字列の一部として扱うことができるため、複数行に分割したコマンドを1つのコマンドとして解釈することができます。以下は、行継続を使用して複数行に渡るコマンドを記述する例です。
powershell
Get-ChildItem `
-Path C:\Users `
-Include *.txt `
-Recurse
この例では、Get-ChildItemコマンドを複数行に分割しています。1行目では、バッククォートを使用して改行しています。2行目からは、オプションを指定しています。3行目でもバッククォートを使用して改行しています。
行継続を使用することで、複数行に分割したコマンドを1つのコマンドとして解釈することができるため、読みやすく、理解しやすいコードを記述することができます。ただし、過剰に使用すると可読性が低下するため、適切な場面で使用することが重要です。
行継続が起こるパターン
PowerShellにおける行継続は、1つのコマンドを複数の行にまたがって記述する場合に使用されます。具体的には、以下のようなパターンで行継続が起こります。 コマンドの詳細については現時点では完全に理解する必要はありません。
-
引数の複数行にまたがる場合
poewrshell
Get-ChildItem ` -Path C:\Windows\System32 ` -Filter *.exe ` -Recurse ` -ErrorAction SilentlyContinue
この例では、Get-ChildItemコマンドの引数を複数行に分割しています。この場合、バッククォート(`)を使用して改行すると、行継続が起こります。
-
パイプライン演算子 | の前後で改行する場合
powershell
Get-ChildItem -Path C:\Windows\System32 | Where-Object {$_.Extension -eq ".exe"} | Select-Object Name, Length | Sort-Object Length -Descending
この例では、パイプライン演算子 | の前後で改行しています。この場合、パイプライン演算子 | の前後で改行すると、行継続が起こります。
-
複数のステートメントを ; 区切りで記述する場合
powershell
$sum = 0; for ($i=1; $i -le 10; $i++) { $sum += $i; } Write-Output $sum
この例では、複数のステートメントを ; 区切りで記述しています。この場合、; 区切りで記述すると、行継続が起こります。
上記の例では、1つ目は引数が複数行にまたがる場合、2つ目はパイプライン演算子の前後で改行する場合、3つ目は ; 区切りで複数のステートメントを記述する場合に行継続が起こっています。
PowerShellでは、1つのコマンドを複数の行に分割して記述することで可読性を向上させることができます。ただし、行継続を多用することで可読性が低下するため、適切に使用する必要があります。また、スクリプトファイルでの記述時には、1行あたり80文字以内に収めるようにすることが推奨されています。

Lesson 4
Chapter 7
式モードとコマンドモード
PowerShellには、式モードとコマンドモードの2つのモードがあります。
式モードは、数値や文字列などの値を評価するためのモードであり、コマンドラインで値を評価したい場合に使用されます。式モードでは、単純な式から複雑な式まで、様々な種類の式を評価することができます。式モードでの例を以下に示します。
powershell
PS C:\> 2 + 3
5
PS C:\> "Hello, " + "World!"
Hello, World!
PS C:\> (Get-Date).AddDays(7)
2023年3月10日 10:48:15
コマンドモードは、PowerShellのコマンドレットや外部コマンドを実行するためのモードであり、通常はスクリプトで使用されます。コマンドモードでは、コマンド名と引数の組み合わせを使用して、PowerShellのコマンドを呼び出します。コマンドモードでの例を以下に示します。
powershell
PS C:\> Get-ChildItem -Path C:\Windows\System32
PS C:\> Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell -Name ExecutionPolicy -Value RemoteSigned
式モードとコマンドモードの切り替えは、コマンドラインでセミコロン ; を使用することで行われます。セミコロンの前後に空白を挿入しない場合は、式モードが適用されます。一方、セミコロンの前後に空白を挿入する場合は、コマンドモードが適用されます。
以下に例を示します。
powershell
PS C:\> 2 + 3 ; Get-ChildItem -Path C:\Windows\System32
上記の例では、セミコロンの前後に空白を挿入しているため、式モードとコマンドモードが混在しています。最初の
2 + 3 は式モードで評価され、次の Get-ChildItem -Path
C:\Windows\System32 はコマンドモードで実行されます。

Lesson 4
Chapter 8
エスケープ
「エスケープ」とは、文字列内の特定の文字や文字列を、通常の意味ではなく、特別な意味として扱うために使用される特殊な文字のことです。
PowerShellにおいては、バッククォート(`)またはダブルクォート(")を使って、エスケープ処理を行います。例えば、ダブルクォート内にダブルクォートを含めたい場合、そのダブルクォートをエスケープする必要があります。
例えば、次のようなコマンドを実行すると、エラーが発生します。
powershell
Write-Host "My favorite color is "blue""
これは、ダブルクォートが文字列の開始と終了を表しているため、"blue"が文字列の終了と認識されず、構文エラーが発生するためです。
この問題を解決するためには、ダブルクォートをエスケープする必要があります。つまり、"blue" の中のダブルクォートを \" (バッククウォート)で置き換えます。
powershell
Write-Host "My favorite color is `"blue`""
このように、エスケープをうまく使うことで、文字列内に特殊な文字を含めることができます。

Lesson 4
Chapter 9
文字列型
PowerShellにおいて、文字列型とは、テキストデータを表現するためのデータ型のことです。文字列は、シングルクォート(')またはダブルクォート(")で囲まれた文字列リテラルで表現されます。
例えば、次のようなコマンドを実行すると、文字列 "Hello, World!" が出力されます。
powershell
Write-Host "Hello, World!"
文字列型は、文字列の結合、比較、分割、検索など、文字列に関する様々な操作を行うことができます。文字列を結合する場合は、"+" 演算子を使用します。
powershell
$firstName = "John"
$lastName = "Doe"
$fullName = $firstName + " " + $lastName
Write-Host $fullName
この例では、$firstName、$lastName、および " " の3つの文字列が結合され、$fullNameに "John Doe" が格納されます。
また、文字列の比較には、"-eq"、"-ne"、"-gt"、"-lt" などの演算子が使用されます。例えば、次のようなコマンドを実行すると、2つの文字列が等しいかどうかを判断できます。
powershell
if ("Hello" -eq "Hello") {
Write-Host "The two strings are equal."
}
このように、PowerShellの文字列型は、文字列を操作するための様々な機能を提供します。

Lesson 4
Chapter 10
数値型
PowerShellにおける数値型は、数値を表すデータ型です。PowerShellでは、以下のような数値型があります。
Int型
Int型とは、コンピューターのプログラムで使用される一種の変数型です。この型を使用することにより、32ビットの符号付き整数を扱うことができます。符号付き整数とは、正の数、負の数、0を含む整数のことです。
例えば、以下のようにInt型で表現することができます。
powershell
$int = 123
Long型
これは、64ビット符号付き整数を表すために使用されます。Int型よりも大きな数値を扱う必要がある場合に使用します。例えば、以下のようにLong型で表現することができます。
powershell
$long = 1234567890L
Double型
これは、倍精度浮動小数点数を表すために使用されます。倍精度浮動小数点数とは、非常に大きな数値や小さな数値を正確に表現するために使用されます。例えば、1.23456789という数値をDouble型で表現すると、非常に精密な値が得られます。
以下のようにDouble型で表現することができます。
powershell
$double = 3.14
Decimal型
これは、高精度10進数を表すために使用されます。金融関連の計算など、高い精度が求められる場合に使用します。一般的な浮動小数点数では、非常に大きな数値や小さな数値を正確に表現することができませんが、Decimal型を使用することで、非常に正確な計算を行うことができます。
例えば、以下のようにDecimal型で表現することができます。
powershell
$decimal = 1234.56789d
これらの数値型を使用することで、PowerShellスクリプトで数値に関する処理を行うことができます。例えば、数値の加算、減算、乗算、除算、比較などが可能です。また、数値型を使用することで、文字列型との相互変換も容易に行うことができます。

Lesson 4
Chapter 11
日付型
PowerShellにおける日付型は、日付と時間の情報を表すデータ型です。PowerShellでは、以下のような日付型があります。
DateTime型
これは、日付と時間の両方を表すために使用されます。例えば、2023年3月3日午前10時30分45秒を表す場合は、以下のようにDateTime型で表現することができます。
powershell
$datetime = Get-Date "2023-03-03 10:30:45"
Date型
これは、日付の情報のみを表すために使用されます。時間の情報は含まれません。例えば、2023年3月3日を表す場合は、以下のようにDate型で表現することができます。
powershell
$date = Get-Date "2023-03-03" -Format "yyyy/MM/dd"
TimeSpan型
これは、時間の長さを表すために使用されます。例えば、2時間30分を表す場合は、以下のようにTimeSpan型で表現することができます。
powershell
$timespan = New-TimeSpan -Hours 2 -Minutes 30
これらの日付型を使用することで、PowerShellスクリプトで日付や時間に関する処理を行うことができます。例えば、日付の比較や時間の計算、日付のフォーマット変換などが可能です。

Lesson 4
Chapter 12
スクリプトブロック
PowerShellにおけるスクリプトブロックは、複数のPowerShellコマンドや式を含むコードのブロックです。スクリプトブロックは、変数と同様に名前を持つことができ、スクリプトブロック内で定義された変数は、スクリプトブロックの外側で定義された変数とは異なるスコープを持ちます。
スクリプトブロックは、次のような方法で定義することができます。
powershell
$scriptblock = { PowerShellコマンドや式 }
スクリプトブロックは、以下のようにInvoke-Commandコマンドレットを使用して実行することができます。
powershell
Invoke-Command -ScriptBlock $scriptblock
また、スクリプトブロックは、他のPowerShellコマンドや関数の引数として渡すことができます。例えば、ForEach-Objectコマンドレットのスクリプトブロックパラメータにスクリプトブロックを渡すことができます。
powershell
1..10 | ForEach-Object -ScriptBlock { $_ * 2 }
この例では、1から10までの整数の配列を作成し、ForEach-Objectコマンドレットで各要素に対してスクリプトブロックを実行し、各要素を2倍にします。
スクリプトブロックは、PowerShellスクリプトをより柔軟かつ効率的に記述するための重要な機能です。特に、PowerShellコマンドや式を複数実行する必要がある場合や、コードを再利用する必要がある場合には、スクリプトブロックを使用することが非常に役立ちます。
スコープ
「スコープ」とは、プログラムの中で変数や関数がどこからアクセス可能かを決めるための範囲のことです。プログラムで宣言された変数や関数は、スコープによってアクセス可能な範囲が決まります。例えば、グローバルスコープに宣言された変数は、どこからでもアクセス可能ですが、ローカルスコープに宣言された変数は、そのブロック内でしかアクセスできません。スコープは、変数や関数の名前が重複することを防ぐためにも重要な機能です。

Lesson 4
Chapter 13
コメント
PowerShellにおけるコメントは、コード内に記述された説明文です。コメントは、PowerShellスクリプト内でコードの意図を明確にするために使用され、解説やドキュメントを追加するのに役立ちます。
PowerShellでは、2種類のコメントがあります。
行コメント
行コメントは、コードの行の末尾に追加されるコメントです。行コメントは、行の先頭に # 記号を追加して記述されます。
以下は、行コメントの例です。
powershell
# これは行コメントです
ブロックコメント
ブロックコメントは、複数の行にわたるコメントです。ブロックコメントは、行の先頭に <# 記号を追加し、行の末尾に #> 記号を追加して、複数行のコメントを囲みます。以下は、ブロックコメントの例です。
powershell
<#
これは
ブロックコメント
です
#>
コメントは、コード内で無視され、PowerShellスクリプトの動作には影響しません。しかし、コメントは、コードの意図を明確にし、コードの可読性を高めるために非常に重要です。また、コードをメンテナンスする際にも役立ちます。
