Src/Public/Invoke-AsBuiltReport.VMware.SRM.ps1
function Invoke-AsBuiltReport.VMware.SRM { <# .SYNOPSIS PowerShell script to document the configuration of VMware SRM in Word/HTML/Text formats .DESCRIPTION Documents the configuration of VMware SRM in Word/HTML/Text formats using PScribo. .NOTES Version: 0.4.6 Author: Matt Allford (@mattallford) Editor: Jonathan Colon Twitter: @jcolonfzenpr Github: @rebelinux Credits: Iain Brighton (@iainbrighton) - PScribo module .LINK https://github.com/AsBuiltReport/AsBuiltReport.VMware.SRM #> # Do not remove or add to these parameters param ( [String[]] $Target, [PSCredential] $Credential ) Write-PScriboMessage -IsWarning "Please refer to the AsBuiltReport.VMware.SRM github website for more detailed information about this project." Write-PScriboMessage -IsWarning "Do not forget to update your report configuration file after each new version release." Write-PScriboMessage -IsWarning "Documentation: https://github.com/AsBuiltReport/AsBuiltReport.VMware.SRM" Write-PScriboMessage -IsWarning "Issues or bug reporting: https://github.com/AsBuiltReport/AsBuiltReport.VMware.SRM/issues" # Check the current AsBuiltReport.VMware.SRM module Try { $InstalledVersion = Get-Module -ListAvailable -Name AsBuiltReport.VMware.SRM -ErrorAction SilentlyContinue | Sort-Object -Property Version -Descending | Select-Object -First 1 -ExpandProperty Version if ($InstalledVersion) { Write-PScriboMessage -IsWarning "AsBuiltReport.VMware.SRM $($InstalledVersion.ToString()) is currently installed." $LatestVersion = Find-Module -Name AsBuiltReport.VMware.SRM -Repository PSGallery -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Version if ($LatestVersion -gt $InstalledVersion) { Write-PScriboMessage -IsWarning "AsBuiltReport.VMware.SRM $($LatestVersion.ToString()) is available." Write-PScriboMessage -IsWarning "Run 'Update-Module -Name AsBuiltReport.VMware.SRM -Force' to install the latest version." } } } Catch { Write-PScriboMessage -IsWarning $_.Exception.Message } # Check if the required version of VMware PowerCLI is installed Get-AbrSRMRequiredModule -Name 'VMware.PowerCLI' -Version '13.1' # Import Report Configuration $script:Report = $ReportConfig.Report $script:InfoLevel = $ReportConfig.InfoLevel $script:Options = $ReportConfig.Options # Used to set values to TitleCase where required $script:TextInfo = (Get-Culture).TextInfo #region foreach loop #---------------------------------------------------------------------------------------------# # Connection Section # #---------------------------------------------------------------------------------------------# foreach ($VIServer in $Target) { #region Protect Site vCenter connection try { Write-PScriboMessage "Connecting to SRM protected site vCenter: $($VIServer) with provided credentials." $script:LocalvCenter = Connect-VIServer $VIServer -Credential $Credential -Port 443 -Protocol https -ErrorAction Stop if ($LocalvCenter) { Write-PScriboMessage "Successfully connected to SRM protected site vCenter: $($LocalvCenter.Name)." } } catch { Write-PScriboMessage -IsWarning "Unable to connect to SRM protected site vCenter Server $($VIServer))." Write-Error "$($_) (Protected vCenter Connection)." throw } #endregion Protect Site vCenter connection #region Protect Site SRM connection try { Write-PScriboMessage "Connecting to SRM server at protected site with provided credentials." $script:LocalSRM = Connect-SrmServer -IgnoreCertificateErrors -ErrorAction Stop -Port 443 -Protocol https -Credential $Credential -Server $LocalvCenter if ($LocalSRM) { Write-PScriboMessage "Successfully connected to SRM server at protected site: $($LocalSRM.Name) with provided credentials." $script:ProtectedSiteName = $LocalSRM.ExtensionData.GetLocalSiteInfo().SiteName $script:RecoverySiteName = $LocalSRM.ExtensionData.GetPairedSite().Name } } catch { Write-PScriboMessage -IsWarning "Unable to connect to SRM server at protected site." Write-Error "$($_) (Local SRM Connection)." throw } #endregion Protect Site SRM connection #region Recovery Site vCenter connection try { $script:RemotevCenter = Connect-VIServer $LocalSRM.ExtensionData.GetPairedSite().vcHost -Credential $Credential -Port 443 -Protocol https -ErrorAction SilentlyContinue if ($RemotevCenter) { Write-PScriboMessage "Connected to $((Get-AdvancedSetting -Entity $RemotevCenter | Where-Object {$_.name -eq 'VirtualCenter.FQDN'}).Value)." try { Write-PScriboMessage "Connecting to SRM server at recovery site with provided credentials." $script:RemoteSRM = Connect-SrmServer -IgnoreCertificateErrors -Server $RemotevCenter -Credential $Credential -Port 443 -Protocol https -RemoteCredential $Credential if ($RemoteSRM) { Write-PScriboMessage "Successfully connected to SRM server at recovery site: $($RemoteSRM.Name) with provided credentials." } } catch { Write-PScriboMessage -IsWarning "Unable to connect to SRM server at recovery site." Write-Error $_ throw } } } catch { Write-Error $_ } #endregion Recovery Site vCenter connection #region VMware SRM As Built Report # If Protected Site exists, generate VMware SRM As Built Report if ($LocalSRM) { Section -Style Heading1 "$($LocalSRM.Name.split(".", 2).toUpper()[0])" { if ($Options.ShowDefinitionInfo) { Paragraph "VMware Site Recovery Manager is an extension to VMware vCenter Server that delivers a business continuity and disaster recovery solution that helps you plan, test, and run the recovery of vCenter Server virtual machines." BlankLine } Write-PScriboMessage "Sites InfoLevel set at $($InfoLevel.Sites)." if ($InfoLevel.Sites -ge 1) { Get-AbrSRMSitePair } Write-PScriboMessage "License InfoLevel set at $($InfoLevel.License)." if ($InfoLevel.License -ge 1) { Get-AbrSRMLicense } Write-PScriboMessage "Permission InfoLevel set at $($InfoLevel.Permission)." if ($InfoLevel.Permission -ge 1) { Get-AbrSRMPermission } Write-PScriboMessage "SRA InfoLevel set at $($InfoLevel.SRA)." if ($InfoLevel.SRA -ge 1) { Get-AbrSRMStorageReplicationAdapter } Write-PScriboMessage "Array Pairs InfoLevel set at $($InfoLevel.ArrayPairs)." if ($InfoLevel.ArrayPairs -ge 1) { Get-AbrSRMArrayPair } Write-PScriboMessage "Network Mapping InfoLevel set at $($InfoLevel.NetworkMapping)." if ($InfoLevel.NetworkMapping -ge 1) { Get-AbrSRMNetworkMapping } Write-PScriboMessage "Folder Mapping InfoLevel set at $($InfoLevel.FolderMapping)." if ($InfoLevel.FolderMapping -ge 1) { Get-AbrSRMFolderMapping } Write-PScriboMessage "Resource Mapping InfoLevel set at $($InfoLevel.ResourceMapping)." if ($InfoLevel.ResourceMapping -ge 1) { Get-AbrSRMResourceMapping } Write-PScriboMessage "Placeholder Datastores InfoLevel set at $($InfoLevel.PlaceholderDatastores)." if ($InfoLevel.PlaceholderDatastores -ge 1) { Get-AbrSRMPlaceholderDatastore } Write-PScriboMessage "Protection Group Site InfoLevel set at $($InfoLevel.ProtectionGroup)." if ($InfoLevel.ProtectionGroup -ge 1) { Get-AbrSRMProtectionGroup } Write-PScriboMessage "Recovery Plan InfoLevel set at $($InfoLevel.RecoveryPlan)." if ($InfoLevel.RecoveryPlan -ge 1) { Get-AbrSRMRecoveryPlan } if ($InfoLevel.Summary -ge 1) { Get-AbrVRMSProtection } } } #endregion VMware SRM As Built Report } #endregion foreach loop } |