こちらの記事でDSCでAzure上の仮想マシンの自動構築のやり方を書きました。
しかし、DSCさえあれば100%何でもできると言う訳ではありません。DSCで何かできるのかはDSCのリソースというもので表現されています。デフォルトではこちらの12種類のリソースがDSCに定義されています。
DSCは日々進化を続けていて、リソースの種類も増えてきています。記事を書いている現時点でWave4まで出てきています。
| Wave1 | LINK |
|---|---|
| Wave2 | LINK |
| Wave3 | LINK |
| Wave4 | LINK |
| Wave5 | LINK |
| Wave6 | LINK |
| All Modules | LINK |
つまり、サーバ毎にどのDSCリソースが使えるかが異なる可能性があるということです。利用できるDSCリソースを確認するには「Get-DSCResource」コマンドが利用できます。手元のPCでGet-DSCResourceを実行した結果が以下の通りです。
PS > Get-DscResource
ImplementedAs Name Module Properties
------------- ---- ------ ----------
Binary File {DestinationPath, Attri...
PowerShell Archive PSDesiredStateConfiguration {Destination, Path, Che...
PowerShell Environment PSDesiredStateConfiguration {Name, DependsOn, Ensur...
PowerShell Group PSDesiredStateConfiguration {GroupName, Credential,...
Binary Log PSDesiredStateConfiguration {Message, DependsOn}
PowerShell Package PSDesiredStateConfiguration {Name, Path, ProductId,...
PowerShell Registry PSDesiredStateConfiguration {Key, ValueName, Depend...
PowerShell Script PSDesiredStateConfiguration {GetScript, SetScript, ...
PowerShell Service PSDesiredStateConfiguration {Name, BuiltInAccount, ...
PowerShell User PSDesiredStateConfiguration {UserName, DependsOn, D...
PowerShell WindowsFeature PSDesiredStateConfiguration {Name, Credential, Depe...
PowerShell WindowsProcess PSDesiredStateConfiguration {Arguments, Path, Crede...
オブジェクトを展開しないと、設定できるPropertyがわからないと思いスクリプト組みました。
$resources = Get-DscResource $list = New-Object System.Collections.Generic.List[System.Object] foreach($r in $resources){ foreach($p in $r.Properties){ if($p.Values.Count -eq 0){ $obj = New-Object psobject | Add-Member -Name ResourceName -Type NoteProperty -Value $r.Name -PassThru | Add-Member -Name PropertyName -Type NoteProperty -Value $p.Name -PassThru | Add-Member -Name PropertyType -Type NoteProperty -Value $p.PropertyType -PassThru | Add-Member -Name IsMandatory -Type NoteProperty -Value $p.IsMandatory -PassThru | Add-Member -Name Value -Type NoteProperty -Value $null -PassThru $list.Add($obj) } else{ foreach($v in $p.Values){ $obj = New-Object psobject | Add-Member -Name ResourceName -Type NoteProperty -Value $r.Name -PassThru | Add-Member -Name PropertyName -Type NoteProperty -Value $p.Name -PassThru | Add-Member -Name PropertyType -Type NoteProperty -Value $p.PropertyType -PassThru | Add-Member -Name IsMandatory -Type NoteProperty -Value $p.IsMandatory -PassThru | Add-Member -Name Value -Type NoteProperty -Value $v -PassThru $list.Add($obj) } } } } $list | Out-GridView
最後にOut-GridViewに出力しているので、以下のような画面が表示されると思います。テキストやCSVに出力しても便利だと思います。

これで自分の利用したいリソースが使えるかを確認できると思います。