PowerShellでCSVファイルの値を読み込んで利用する方法(CSVからAzureリソースの設定値を取得)

2020-04-21Azure,PowerShell/Azure CLI,Resource Group

PowerShellでCSVファイルの内容を読み込んで利用する方法です。
読み込んだCSVファイルの設定値をもとに、Azure PowerShellでリソースグループを作成・削除する例を紹介しています。

スポンサーリンク

PowerShellを使ってCSVファイルの内容を読み込み利用する

PowerShellでCSVファイルを読み込む場合はImport-Csvを使う

PowerShellでCSVファイルを読み込む場合にはImport-Csvを使います。

Import-Csv

※オブジェクトをCSVに変換する場合は、ConvertTo-Csvを使います。

foreachを使って反復処理

foreachは配列やコレクションの要素を順次読み取って反復処理を行います。
読み込んだCSVの各行に対して反復処理を実行し、複数のリソースをまとめて作成できます。

about_Foreach

※反復処理にはforeachのほかにforを使う方法もあります。

サンプルのCSVファイル

リソースグループ名とリージョンの設定値を記載したCSVファイルを作成し、保存します。
CSVファイルの1行目はヘッダー行で、Import-Csvがプロパティ名として使用します。

CSVファイル

ResourceGroupName,Location
rg-01,japaneast
rg-02,japanwest

CSVファイルを読み込んで値を出力

CSVファイルを読み込み、内容を確認します。
$ImportCSVPathという変数で、CSVファイルのパスを指定しています。

※サンプルのCSVファイルの保存先はC:\ResourceGroup.csvとしています。

読み込んだCSVファイルを出力

PS C:\> $ImportCSVPath = “C:\ResourceGroup.csv"
PS C:\> $csv = Import-Csv -Path $ImportCSVPath
PS C:\> $csv

ResourceGroupName Location
—————– ——–
rg-01 japaneast
rg-02 japanwest

読み込んだCSVファイルの設定値を使ってリソースグループを作成

Azure PowerShellでリソースグループを作成する場合は、New-AzResourceGroupを使用します。
foreachでCSVの各行を順に読み取り、リソースグループを作成します。

New-AzResourceGroup

読み込んだCSVファイルの設定値を使ってリソースグループを作成

# 設定(CSVファイル)のパス
$ImportCSVPath = “C:\Temp\ResourceGroup.csv"

# 設定(CSVファイル)を読み込む
$csv = Import-Csv -Path $ImportCSVPath

# リソースグループを作成
foreach( $c in $csv ){

 New-AzResourceGroup `
  -Name $c.resourceGroupName `
  -Location $c.location
}

PowerShellの実行結果です。

# 実行結果
ResourceGroupName : rg-01
Location : japaneast
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/サブスクリプションID/resourceGroups/rg-01

ResourceGroupName : rg-02
Location : japanwest
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/サブスクリプションID/resourceGroups/rg-02 

読み込んだCSVファイルの設定値を使ってリソースグループを削除

Azure PowerShellでリソースグループを削除する場合は、Remove-AzResourceGroupを使用します。
foreachでCSVの各行を順に読み取り、リソースグループを削除します。

Remove-AzResourceGroup

Remove-AzResourceGroupを実行すると、リソースグループの削除前に確認メッセージが表示されます。

読み込んだCSVファイルの設定値を使ってリソースグループを削除

# 設定ファイルのパス
$ImportCSVPath = “C:\Temp\ResourceGroup.csv"

# 設定値(CSVファイル)を読み込む
$csv = Import-Csv -Path $ImportCSVPath

# リソースグループを削除
foreach( $c in $csv ){

 Remove-AzResourceGroup `
  -Name $c.ResourceGroupName
}
# 実行結果(確認メッセージが表示されます)
Confirm
Are you sure you want to remove resource group 'rg-01’
[Y] Yes [N] No [S] Suspend [?] Help (default is “Y"): Y
True

Confirm
Are you sure you want to remove resource group 'rg-02’
[Y] Yes [N] No [S] Suspend [?] Help (default is “Y"): Y
True

※リソースグループおよびリソースグループ内のリソースを削除する権限が必要です。
※リソースグループを削除すると、リソースグループ内のすべてのリソースも一緒に削除されるため、実行する際は十分注意してください。
※確認メッセージを表示せずに削除する場合は、Remove-AzResourceGroupに-Forceパラメーターを指定します。

—広告—

最後に

PowerShellのImport-Csvを使ってCSVファイルを読み込み、設定値を利用してリソースグループを作成・削除する方法を紹介しました。
CSVファイルで設定値を管理することで、複数リソースの一括操作が容易になります。

テンプレートスペック(ARMテンプレートスペック)を利用してLog Analyticsワークスペースを作成する手順はこちらで紹介しています。
PowerShellとCSVファイルを利用してリソースを作成し、ARMテンプレートのパラメーターをCSVファイルから読み込んでいます。

Terraformを利用したリソースグループの作成手順は、こちらで紹介しています。

スポンサーリンク