Public/Export-AvdConfig.ps1
function Export-AvdConfig { <# .SYNOPSIS Exports the AVD environment, based on the hostpool name. .DESCRIPTION The function will help you exporting the complete AVD environment to common output types as HTML and CSV. .PARAMETER HostpoolName Enter the AVD hostpoolname name. .PARAMETER ResourceGroupName Enter the AVD hostpool resource group name. .PARAMETER FileName Enter the filename. Based on the format parameter the function will create a correct file. Default filepath is in the execution directory. .PARAMETER Format Enter the format you like. For creating more formats use a comma. .EXAMPLE Export-AvdConfig -Hostpoolname avd-hostpool-001 -ResourceGroupName rg-avd-001 -Format HTML -Verbose -Filename AVDExport .EXAMPLE Export-AvdConfig -HostPoolName avd-hostpool-001 -ResourceGroupName rg-avd-001 -Format HTML,JSON -Verbose -Filename AVDExport #> [CmdletBinding(DefaultParameterSetName = 'FileExport')] param ( [parameter(Mandatory, ParameterSetName = 'FileExport')] [parameter(Mandatory, ParameterSetName = 'Console')] [ValidateNotNullOrEmpty()] [string]$HostpoolName, [parameter(Mandatory, ParameterSetName = 'FileExport')] [parameter(Mandatory, ParameterSetName = 'Console')] [ValidateNotNullOrEmpty()] [string]$ResourceGroupName, [parameter(Mandatory, ParameterSetName = 'FileExport')] [ValidateNotNullOrEmpty()] [string]$FileName, [parameter(Mandatory, ParameterSetName = 'FileExport')] [ValidateSet("JSON", "HTML", "XLSX")] [array]$Format, [parameter(Mandatory, ParameterSetName = 'Console')] [switch]$Console ) Begin { Write-Verbose "Start searching" AuthenticationCheck } Process { $Parameters = @{ HostpoolName = $HostpoolName ResourceGroupName = $ResourceGroupName } $Content = [ordered]@{ Hostpool = Get-AvdHostPool @Parameters | Select-Object name, @{N="Description";E={$_.properties.description}}, @{N="startVMOnConnect";E={$_.properties.startVMOnConnect}}, @{N="maxSessionLimit";E={$_.properties.maxSessionLimit}}, @{N="hostpoolType";E={$_.properties.hostpoolType}} SessionHosts = Get-AvdImageVersionStatus @Parameters | Select-Object imageInfo.isLatestVersion, Name, imageInfo.latestVersion , imageInfo. currentImageVersion, imageInfo.imageName, imageInfo.galleryName Network = Get-AvdNetworkInfo @Parameters | Select-Object @{N="vmName";E={$_.Name}}, @{N="vmResourceGroup";E={$_.ResourceGroup}}, @{N="privateIPAddress";E={$_.networkcardinfo.privateIPAddress}}, @{N="nicId";E={$_.networkcardinfo.nicId}}, @{N="subnetNsgId";E={$_.SubnetInfo.networksecurityGroup}}, @{N="subnetId";E={$_.networkcardinfo.subnet.id}} } switch ($PsCmdlet.ParameterSetName) { Console { return $Content } Default { $Format | ForEach-Object { Generate-Output -Format $_ -Content $Content -FileName $FileName -Hostpoolname $HostpoolName } } } } } |