From a4cbb695d57babc18ad458668170184ea359c2b5 Mon Sep 17 00:00:00 2001 From: Andy Beltz Date: Mon, 19 Aug 2024 01:41:18 -0600 Subject: [PATCH] feat:add-low-level-functions (#717) - Added `Test-PrereqDNSEntries` cmdlet to perform checks of the DNS resolution of a DNS entry or entries on a DNS server or servers. - Added `Resolve-ReverseLookup` cmdlet to check the reverse resolution of a DNS entry on a DNS server. - Added `Resolve-ForwardLookup` cmdlet to check the forward resolution of a DNS entry on a DNS server. - Enhanced `Test-InvPrerequisite` cmdlet to test the components that will be configured to ensure that they are resolvable in DNS. Signed-off-by: Andy Beltz Co-authored-by: Ryan Johnson --- CHANGELOG.md | 4 + PowerValidatedSolutions.psd1 | 4 +- PowerValidatedSolutions.psm1 | 136 ++++++++++++++++++ .../supporting/Test-PrereqDnsEntries.md | 64 +++++++++ mkdocs.yml | 1 + 5 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 docs/documentation/functions/supporting/Test-PrereqDnsEntries.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 3910a549..7be0c2ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,13 @@ > Release Date: Not Released +- Added `Test-PrereqDNSEntries` cmdlet to perform checks of the DNS resolution of a DNS entry or entries on a DNS server or servers. +- Added `Resolve-ReverseLookup` cmdlet to check the reverse resolution of a DNS entry on a DNS server. +- Added `Resolve-ForwardLookup` cmdlet to check the forward resolution of a DNS entry on a DNS server. - Fixed `PowerValidatedSolutions.psd1` file where a typo existed for exporting the `Request-NsxtToken` cmdlet. - Enhanced `Invoke-InvDeployment` cmdlet to remove the need for Workspace ONE Access and add in the `admin` password to the VMware Aria Suite Lifecycle password locker. - Enhanced `Get-LocalAccountLockout` cmdlet to handle "null" values got as "Not Configured" when appliance is not configured. +- Enhanced `Test-InvPrerequisite` cmdlet to test the components that will be configured to ensure that they are resolvable in DNS. - Enhanced `Export-DriJsonSpec` cmdlet to define the path to the Kubectl utility. - Enhanced `Start-DriMenu` cmdlet to use the new JSON value for the path to the Kubectl utility. - Enhanced `Deploy-PhotonAppliance` cmdlet with an input parameter for the portgroup to attach the Virtual Machine too. diff --git a/PowerValidatedSolutions.psd1 b/PowerValidatedSolutions.psd1 index 6fc660f7..ccc6f12e 100644 --- a/PowerValidatedSolutions.psd1 +++ b/PowerValidatedSolutions.psd1 @@ -11,7 +11,7 @@ RootModule = 'PowerValidatedSolutions.psm1' # Version number of this module. - ModuleVersion = '2.11.1.1008' + ModuleVersion = '2.11.1.1009' # ID used to uniquely identify this module GUID = 'a6dfed7b-65d2-4da2-bdcc-7f3d3df9b75d' @@ -65,7 +65,7 @@ # NestedModules = @() # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. - FunctionsToExport = @('Export-IamJsonSpec', 'Test-IamPrerequisite', 'Request-IamMscaSignedCertificate', 'Invoke-IamDeployment', 'Invoke-UndoIamDeployment', 'Add-IdentitySource', 'Undo-IdentitySource', 'Add-SddcManagerRole', 'Undo-SddcManagerRole', 'Install-WorkspaceOne', 'Undo-WorkspaceOne', 'Initialize-WorkspaceOne', 'Set-WorkspaceOneNtpConfig', 'Install-WorkspaceOneCertificate', 'Set-WorkspaceOneSmtpConfig', 'Add-WorkspaceOneDirectory', 'Set-WorkspaceOneNsxtIntegration', 'Undo-WorkspaceOneNsxtIntegration', 'Add-NsxtVidmRole', 'Undo-NsxtVidmRole', 'Add-NsxtLdapRole', 'Undo-NsxtLdapRole', 'Add-WorkspaceOneRole', 'Add-NsxtIdentitySource', 'Undo-NsxtIdentitySource', 'Export-PdrJsonSpec', 'Test-PdrPrerequisite', 'Invoke-PdrDeployment', 'Invoke-UndoPdrDeployment', 'Invoke-PdrSolutionInterop', 'Invoke-UndoPdrSolutionInterop', 'Install-SiteRecoveryManager', 'Undo-SiteRecoveryManager', 'Install-vSphereReplicationManager', 'Undo-vSphereReplicationManager', 'Connect-DRSolutionTovCenter', 'Undo-DRSolutionTovCenter', 'Request-VamiPKCS12Certificate', 'Install-VamiCertificate', 'Add-VrmsNetworkAdapter', 'Backup-VMOvfProperties', 'Restore-VMOVFProperties', 'Get-VMvAppConfig', 'New-VMOvfProperty', 'Set-VMOvfIPAssignment', 'Set-VMOvfEnvTransport', 'New-VMOvfProduct', 'Set-VMOvfEULA', 'Get-VMOvfProperty', 'Set-VMOvfProperty', 'Get-NSXLBDetails', 'Add-vRSLCMNtpServer', 'Set-vRSLCMDnsConfig', 'Undo-vRSLCMNtpServer', 'Undo-vRSLCMDnsConfig', 'Undo-vRSLCMLoadBalancer', 'Set-WorkspaceOneDnsConfig', 'Undo-WorkspaceOneDnsConfig', 'Set-vROPSDnsConfig', 'Undo-vROPSDnsConfig', 'Add-vROPSNtpServer', 'Undo-vROPSNtpServer', 'Set-vRADnsConfig', 'Undo-vRADnsConfig', 'Set-vRANtpConfig', 'Undo-vRANtpConfig', 'Add-EsxiVrmsVMkernelPort', 'Undo-EsxiVrmsVMkernelPort', 'Add-EsxiVrmsStaticRoute', 'Undo-EsxiVrmsStaticRoute', 'Add-SrmLicenseKey', 'Undo-SrmLicenseKey', 'New-SrmSitePair', 'Undo-SrmSitePair', 'Add-SrmMapping', 'Undo-SrmMapping', 'Add-vSphereReplication', 'Undo-vSphereReplication', 'Add-ProtectionGroup', 'Undo-ProtectionGroup', 'Add-RecoveryPlan', 'Set-RecoveryPlan', 'Undo-RecoveryPlan', 'Copy-vRealizeLoadBalancer', 'Export-DriJsonSpec', 'Test-DriPrerequisite', 'Invoke-DriDeployment', 'Invoke-UndoDriDeployment', 'Add-NetworkSegment', 'Undo-NetworkSegment', 'Add-PrefixList', 'Undo-PrefixList', 'Add-RouteMap', 'Undo-RouteMap', 'Set-DatastoreTag', 'Undo-DatastoreTag', 'Add-StoragePolicy', 'Undo-StoragePolicy', 'Add-ContentLibrary', 'Undo-ContentLibrary', 'Enable-SupervisorCluster', 'Undo-SupervisorCluster', 'New-SupervisorClusterCSR', 'Request-SignedCertificate', 'Install-TanzuSignedCertificate', 'Install-SupervisorClusterCertificate', 'Add-SupervisorClusterLicense', 'Add-Namespace', 'Undo-Namespace', 'Add-NamespacePermission', 'Undo-NamespacePermission', 'Enable-Registry', 'Undo-Registry', 'Add-SupervisorService', 'Undo-SupervisorService', 'Add-NamespaceVmClass', 'Add-TanzuKubernetesCluster', 'Undo-TanzuKubernetesCluster', 'Export-IlaJsonSpec', 'Test-IlaPrerequisite', 'Request-IlaMscaSignedCertificate', 'Invoke-IlaDeployment', 'Invoke-UndoIlaDeployment', 'Invoke-IlaSolutionInterop', 'Invoke-UndoIlaSolutionInterop', 'Export-vRLIJsonSpec', 'New-vRLIDeployment', 'Undo-vRLIDeployment', 'Add-vRLISmtpConfiguration', 'Add-vRLIAuthenticationWSA', 'Undo-vRLIAuthenticationWSA', 'Add-vRLIAuthenticationAD', 'Undo-vRLIAuthenticationAD', 'Install-vRLIPhotonAgent', 'Undo-vRLIPhotonAgent', 'Add-vRLIAgentGroup', 'Undo-vRLIAgentGroup', 'Register-vRLIWorkloadDomain', 'Set-vRLISyslogEdgeCluster', 'Undo-vRLISyslogEdgeCluster', 'Add-vRLILogArchive', 'Add-vRLIAuthenticationGroup', 'Undo-vRLIAuthenticationGroup', 'Add-vRLIAlertDatacenter', 'Add-vRLIAlertVirtualMachine', 'Undo-vRLIAlert', 'Enable-vRLIAlert', 'Disable-vRLIAlert', 'Add-vRLILogForwarder', 'Undo-vRLILogForwarder', 'Add-NsxtNodeProfileSyslogExporter', 'Undo-NsxtNodeProfileSyslogExporter', 'Request-vROpsLogForwardingConfig', 'Get-vRAvRLIConfig', 'Set-vRAvRLIConfig', 'Remove-vRAvRLIConfig', 'Enable-vRLIContentPack', 'Uninstall-vRLIContentPack', 'Update-vRLIContentPack', 'Export-IomJsonSpec', 'Test-IomPrerequisite', 'Request-IomMscaSignedCertificate', 'Invoke-IomDeployment', 'Invoke-UndoIomDeployment', 'Invoke-IomSolutionInterop', 'Invoke-UndoIomSolutionInterop', 'Export-vROPsJsonSpec', 'New-vROPSDeployment', 'Undo-vROPSDeployment', 'Import-vROPSUserAccount', 'Import-vROPSUserGroup', 'Register-vROPSWorkloadDomain', 'Add-vROPSGroupRemoteCollectors', 'Update-vROPSAdapterVcenter', 'Update-vROPSAdapterCollecterGroup', 'Remove-OperationsDefaultAdapter', 'Add-vROPSCurrency', 'Enable-vROPSManagementPack', 'Register-vROPSManagementPack', 'Add-vROPSAdapterNsxt', 'Add-vROPSAdapterPing', 'Update-vROPSAdapterSddcHealth', 'Add-vROPSAdapterSddcHealth', 'Add-vROPSAdapterIdentityManager', 'Add-vROPSAdapterSrm', 'Add-vROPSAdapterVr', 'Add-vROPSAdapterVcf', 'Undo-vROPSAdapter', 'Undo-vROPSCredential', 'Add-vROPSAlertPluginEmail', 'Import-vROPSNotification', 'Test-vROPsAdapterStatusByType', 'Update-vROPSvRAAdapterCredential', 'Add-vROPSVcfCredential', 'Add-vROPSVcenterCredential', 'Add-vROPSNsxCredential', 'Export-InvJsonSpec', 'Test-InvPrerequisite', 'Request-InvMscaSignedCertificate', 'Invoke-InvDeployment', 'Invoke-UndoInvDeployment', 'Invoke-InvSolutionInterop', 'Invoke-UndoInvSolutionInterop', 'Export-AriaNetworksJsonSpec', 'New-AriaNetworksDeployment', 'Undo-AriaNetworksDeployment', 'Undo-AriaNetworksVcenterDataSource', 'Export-PcaJsonSpec', 'Test-PcaPrerequisite', 'Request-PcaMscaSignedCertificate', 'Invoke-PcaDeployment', 'Invoke-UndoPcaDeployment', 'Invoke-PcaSolutionInterop', 'Invoke-UndoPcaSolutionInterop', 'Export-vRAJsonSpec', 'New-vRADeployment', 'Undo-vRADeployment', 'Update-vRAOrganizationDisplayName', 'New-vRACloudAccount', 'Undo-vRACloudAccount', 'Update-vRACloudAccountZone', 'Add-vROvCenterServer', 'Remove-vROvCenterServer', 'Add-vROTrustedCertificate', 'Add-vRANotification', 'Add-vRAUser', 'Undo-vRAUser', 'Add-vRAGroup', 'Undo-vRAGroup', 'New-vRAvROPSIntegrationItem', 'Undo-vRAvROPsIntegrationItem', 'Export-HrmJsonSpec', 'Test-HrmPrerequisite', 'Invoke-HrmDeployment', 'Invoke-UndoHrmDeployment', 'Deploy-PhotonAppliance', 'Remove-PhotonAppliance', 'Export-CbwJsonSpec', 'Test-CbwPrerequisite', 'Invoke-CbwDeployment', 'Invoke-UndoCbwDeployment', 'Invoke-CbwSolutionInterop', 'Invoke-UndoCbwSolutionInterop', 'Export-CbrJsonSpec', 'Test-CbrPrerequisite', 'Invoke-CbrDeployment', 'Invoke-UndoCbrDeployment', 'Invoke-CbrSolutionInterop', 'Invoke-UndoCbrSolutionInterop', 'Export-CcmJsonSpec', 'Test-CcmPrerequisite', 'Invoke-CcmDeployment', 'Invoke-UndoCcmDeployment', 'Invoke-CcmSolutionInterop', 'Invoke-UndoCcmSolutionInterop', 'Export-vRSLCMJsonSpec', 'Test-VrslcmPrerequisite', 'Invoke-vRSLCMDeployment', 'Invoke-VrslcmUndoDeployment', 'Add-vRSLCMMyVMwareAccount', 'Undo-vRSLCMMyVMwareAccount', 'New-vRSLCMDatacenter', 'New-vRSLCMDatacenterVcenter', 'Undo-vRSLCMDatacenter', 'Update-vRSLCMPSPack', 'Request-vRSLCMBundle', 'New-vRSLCMDeployment', 'Undo-vRSLCMDeployment', 'Install-vRSLCMCertificate', 'Connect-vRSLCMUpgradeIso', 'Disconnect-vRSLCMUpgradeIso', 'Start-vRSLCMUpgrade', 'Add-vRSLCMGroupRole', 'Undo-vRSLCMGroupRole', 'Export-GlobalWsaJsonSpec', 'Test-GlobalWsaPrerequisite', 'Request-WSAMscaSignedCertificate', 'Invoke-GlobalWsaDeployment', 'Invoke-UndoGlobalWsaDeployment', 'Export-WsaJsonSpec', 'New-WSADeployment', 'Undo-WSADeployment', 'Invoke-WsaDirectorySync', 'Add-vCenterGlobalPermission', 'Undo-vCenterGlobalPermission', 'Set-vCenterPermission', 'Add-SsoPermission', 'Undo-SsoPermission', 'Add-SsoUser', 'Undo-SsoUser', 'Add-vSphereRole', 'Undo-vSphereRole', 'Copy-vSphereRole', 'Add-VMFolder', 'Add-StorageFolder', 'Undo-VMFolder', 'Add-ResourcePool', 'Undo-ResourcePool', 'Add-AntiAffinityRule', 'Undo-AntiAffinityRule', 'Add-ClusterGroup', 'Undo-ClusterGroup', 'Add-VmStartupRule', 'Undo-VmStartupRule', 'Move-VMtoFolder', 'Add-VdsPortGroup', 'Undo-VdsPortGroup', 'Import-vRSLCMLockerCertificate', 'Undo-vRSLCMLockerCertificate', 'New-vRSLCMLockerPassword', 'Undo-vRSLCMLockerPassword', 'New-vRSLCMLockerLicense', 'Undo-vRSLCMLockerLicense', 'Add-VmGroup', 'Add-WorkspaceOneDirectoryGroup', 'Undo-WorkspaceOneDirectoryGroup', 'Add-WorkspaceOneDirectoryConnector', 'Update-SddcDeployedFlavor', 'Invoke-VcenterCommand', 'Import-ContentLibraryItem', 'Add-NsxtPrincipalIdentity', 'Undo-NsxtPrincipalIdentity', 'Test-ADAuthentication', 'Get-ADPrincipalGuid', 'Get-vCenterServerDetail', 'Get-NsxtServerDetail', 'Get-vRSLCMServerDetail', 'Get-WSAServerDetail', 'Get-vRAServerDetail', 'Get-vROPsServerDetail', 'Get-vRLIServerDetail', 'Get-VCFDnsSearchDomain', 'Request-vSphereApiToken', 'Request-VcenterApiToken', 'Connect-vSphereMobServer', 'Disconnect-vSphereMobServer', 'Get-VCVersion', 'Get-VCConfigurationNTP', 'Get-VCConfigurationDNS', 'Get-VcenterPasswordExpiration', 'Set-VcenterPasswordExpiration', 'Get-VcenterRootPasswordExpiration', 'Set-VcenterRootPasswordExpiration', 'Get-LocalUserPasswordExpiration', 'Set-LocalUserPasswordExpiration', 'Get-LocalPasswordComplexity', 'Set-LocalPasswordComplexity', 'Get-LocalAccountLockout', 'Set-LocalAccountLockout', 'Get-GlobalPermission', 'Add-GlobalPermission', 'Remove-GlobalPermission', 'Add-DrsVmToVmGroup', 'Remove-DrsVmToVmGroup', 'Get-DrsVmToVmGroup', 'Get-VcLicense', 'New-VcLicense', 'Remove-VcLicense', 'Get-SubscribedLibrary', 'Get-VcenterBackupStatus', 'Get-SnapshotStatus', 'Get-SnapshotConsolidation', 'Get-EsxiAlert', 'Get-VsanHealthTest', 'Get-VcenterTriggeredAlarm', 'Get-ESXiAdminGroup', 'Set-ESXiAdminGroup', 'Get-VCenterCEIP', 'Set-VCenterCEIP', 'Request-WSAToken', 'Get-WSAIdentityProvider', 'Get-WSAConnector', 'Add-WSAConnector', 'Get-WSADirectory', 'Get-WSADirectoryDomain', 'Add-WSALdapDirectory', 'Set-WSABindPassword', 'Set-WSASyncSetting', 'Start-WSADirectorySync', 'Set-WSADirectoryUser', 'Set-WSADirectoryGroup', 'Get-WSASmtpConfiguration', 'Set-WSASmtpConfiguration', 'Set-WSARoleMember', 'Get-WSARole', 'Get-WSAGroup', 'Get-WSAUser', 'Get-WSARuleSet', 'Get-WSAOAuthToken', 'Get-WSAClient', 'Add-WSAClient', 'Add-WSARoleAssociation', 'Get-WSARoleId', 'Get-WSAActiveDirectoryGroupDetail', 'Get-WSARoleAssociation', 'Get-WsaAccountLockout', 'Set-WsaAccountLockout', 'Get-WsaPasswordPolicy', 'Set-WsaPasswordPolicy', 'Set-WorkspaceOneApplianceNtpConfig', 'Request-NsxtToken', 'Get-NsxtComputeManager', 'Set-NsxtComputeManager', 'Get-NsxtVidm', 'Set-NsxtVidm', 'Get-NsxtLdap', 'New-NsxtLdap', 'Remove-NsxtLdap', 'Get-NsxtLdapStatus', 'Get-NsxtPrincipalIdentity', 'New-NsxtPrincipalIdentity', 'Get-NsxtPrincipalIdentity', 'Remove-NsxtPrincipalIdentity', 'Get-NsxtRole', 'Set-NsxtRole', 'Remove-NsxtRole', 'Get-NsxtUser', 'Get-NsxtVidmUser', 'Get-NsxtVidmGroup', 'Get-NsxEdgeCluster', 'Get-NsxtTransportZone', 'New-NsxtSegment', 'Get-NsxtSegment', 'Remove-NsxtSegment', 'Get-NsxtTier0Gateway', 'Get-NsxtTier1Gateway', 'Get-NsxtPrefixList', 'New-NsxtPrefixList', 'Remove-NsxtPrefixList', 'Add-NsxtPrefix', 'Get-NsxtRouteMap', 'New-NsxtRouteMap', 'Remove-NsxtRouteMap', 'Export-ModuleMember Get-NsxtRouteRedistributionPolicy', 'Export-ModuleMember Set-NsxtRouteRedistributionPolicy', 'Export-ModuleMember Get-NsxtManagerAuthPolicy', 'Export-ModuleMember Set-NsxtManagerAuthPolicy', 'Export-ModuleMember Get-NsxtEdgeNodeAuthPolicy', 'Export-ModuleMember Set-NsxtEdgeNodeAuthPolicy', 'Get-NsxtSyslogStatus', 'Get-NsxtSyslogExporter', 'Set-NsxtSyslogExporter', 'Remove-NsxtSyslogExporter', 'New-vRealizeLoadBalancerSpec', 'Get-NsxtGlobalSegmentID', 'Add-CertToNsxCertificateStore', 'Get-NsxtEdgeCluster', 'New-NsxtTier1', 'Set-NsxtTier1', 'New-NsxtTier1ServiceInterface', 'New-NsxtTier1StaticRoute', 'New-NsxtLoadBalancer', 'New-NsxtLBServiceMonitor', 'New-NsxtLBAppProfile', 'New-NsxtLBPersistenceAppProfile', 'New-NsxtLBPool', 'New-NsxtLBVirtualServer', 'Get-NsxtCertificate', 'Set-NsxtCertificate', 'Get-NsxtNodeProfile', 'Set-NsxtNodeProfileSyslogExporter', 'Remove-NsxtNodeProfileSyslogExporter', 'Get-NsxtBackupConfiguration', 'Get-NsxtBackupHistory', 'Get-NsxtAlarm', 'Get-NsxtEvent', 'Get-NsxtTier0BgpStatus', 'New-NsxtTier0BgpNeighborConfig', 'Get-NsxtEdgeNode', 'Get-NsxtTier0LocaleServiceBgp', 'Get-NsxtLocaleService', 'Get-NsxtVidmStatus', 'Get-NsxtTransportNode', 'Get-NsxtTransportNodeStatus', 'Get-NsxtTransportNodeTunnel', 'Get-NsxtTransportNodeTunnelStatus', 'Get-NsxtComputeManagerStatus', 'Get-NsxtApplianceUser', 'Set-NsxtApplianceUserExpirationPolicy', 'Set-NsxtApplianceUserPassword', 'Get-NsxtLogicalRouter', 'Get-NsxtRoutingConfigRedistribution', 'Get-NsxtRoutingConfigRedistributionRule', 'Set-NsxtRoutingConfigRedistributionRule', 'Get-NsxtRoutingConfigRouteMap', 'Get-NsxtSecurityPolicy', 'Remove-NsxtSecurityPolicy', 'Get-NsxtGroup', 'Remove-NsxtGroup', 'Enable-WMRegistry', 'Get-WMRegistry', 'Remove-WMRegistry', 'Get-WMRegistryHealth', 'Connect-WMCluster', 'Disconnect-WMCluster', 'New-TanzuKubernetesCluster', 'Get-TanzuKubernetesCluster', 'Remove-TanzuKubernetesCluster', 'Get-VMClass', 'Add-VMClass', 'Get-WMLicenseStatus', 'Request-WMClusterCSR', 'Install-WMClusterCertificate', 'Watch-WmClusterConfigStatus', 'Request-vRSLCMToken', 'Get-vRSLCMHealth', 'Get-vRSLCMLockerPassword', 'Add-vRSLCMLockerPassword', 'Remove-vRSLCMLockerPassword', 'Get-vRSLCMLockerCertificate', 'Add-vRSLCMLockerCertificate', 'Remove-vRSLCMLockerCertificate', 'Get-vRSLCMLockerLicense', 'Add-vRSLCMLockerLicense', 'Remove-vRSLCMLockerLicense', 'Get-vRSLCMDatacenter', 'Add-vRSLCMDatacenter', 'Remove-vRSLCMDatacenter', 'Get-vRSLCMDatacenterVcenter', 'Add-vRSLCMDatacenterVcenter', 'Sync-vRSLCMDatacenterVcenter', 'Get-vRSLCMEnvironment', 'Add-vRSLCMEnvironment', 'Remove-vRSLCMEnvironment', 'Get-vRSLCMLoadbalancer', 'New-vRSLCMLoadbalancer', 'Remove-vRSLCMLoadbalancer', 'Get-vRSLCMRequest', 'Remove-vRSLCMRequest', 'Watch-vRSLCMRequest', 'Resume-vRSLCMRequest', 'New-vRSLCMAdapterOperation', 'Get-vRSLCMProductNtpServer', 'Remove-vRSLCMProductNtpServer', 'Get-vRSLCMApplianceNtpConfig', 'Add-vRSLCMProductNtpServer', 'Add-vRSLCMApplianceNtpConfig', 'Set-vRSLCMApplianceNtpConfig', 'Get-vRSLCMProductNode', 'Stop-vRSLCMProductNode', 'Start-vRSLCMProductNode', 'Get-vRSLCMPSPack', 'Install-vRSLCMPSPack', 'Get-vRSLCMProductBinariesMapped', 'Get-vRSLCMProductBinaries', 'Register-vRSLCMProductBinary', 'Get-vRSLCMMyVmwareAccount', 'New-vRSLCMMyVmwareAccount', 'Remove-vRSLCMMyVmwareAccount', 'Get-vRSLCMProductVersion', 'Request-vRSLCMProductBinary', 'Get-vRSLCMSshStatus', 'Set-vRSLCMSshStatus', 'Start-vRSLCMSnapshot', 'Get-vRSLCMUpgradeStatus', 'Invoke-vRSLCMUpgrade', 'Get-vRSLCMProductDetails', 'Get-vRSLCMEnvironmentVMs', 'Get-vRSLCMProductPassword', 'Get-vRSLCMRole', 'Get-vRSLCMGroup', 'Add-vRSLCMGroup', 'Remove-vRSLCMGroup', 'Request-vRAToken', 'Get-vRAOrganizationId', 'Get-vRAOrganizationDisplayName', 'Set-vRAOrganizationDisplayName', 'Get-vRACloudAccount', 'Add-vRACloudAccount', 'Remove-vRACloudAccount', 'Get-vRANotification', 'New-vRANotification', 'Remove-vRANotification', 'Get-vRAResourceCompute', 'Add-vRAResourceComputeTag', 'Get-vRACloudZone', 'Get-vRAAPIVersion', 'Get-vRAIntegrationDetail', 'Update-vRACloudZone', 'Remove-vRACloudZone', 'Get-vRAServices', 'Get-vRAUser', 'New-vRAUser', 'Get-vRAGroup', 'New-vRAGroup', 'Get-vRAUserRoles', 'Get-vRAGroupRoles', 'Remove-vRAGroupRoles', 'Set-vRAGroupOrgRole', 'Remove-vRAGroupOrgRole', 'Set-vRAGroupServiceRole', 'Remove-vRAGroupServiceRole', 'Set-vRAUserOrgRole', 'Remove-vRAUserOrgRole', 'Set-vRAUserServiceRole', 'Remove-vRAUserServiceRole', 'Add-vRAIntegrationItem', 'Test-vRAIntegrationItem', 'Remove-vRAIntegrationItem', 'Invoke-vRORestMethod', 'Get-vROVersion', 'Get-vROWorkflow', 'Invoke-vROWorkflow', 'New-vROParameterDefinition', 'Get-vROWorkflowExecution', 'Get-vROWorkflowExecutionState', 'Get-vROWorkflowExecutionResult', 'Request-vROPSToken', 'Get-vROPSVersion', 'Get-vROPSCollector', 'Get-vROPSCollectorGroup', 'Add-vROPSCollectorGroup', 'Remove-vROPSCollectorGroup', 'Get-vROPSAdapter', 'Set-vROPSAdapter', 'Add-vROPSAdapter', 'Remove-vROPSAdapter', 'Test-vROPSAdapterConnection', 'Start-vROPSAdapter', 'Stop-vROPSAdapter', 'Get-vROPSAdapterKind', 'Get-vROPSResourceDetail', 'Get-vROPSCredential', 'Add-vROPSCredential', 'Remove-vROPSCredential', 'Get-vROPSCurrency', 'Set-vROPSCurrency', 'Get-vROPSSolution', 'Import-vROPSManagementPack', 'Install-vROPSManagementPack', 'Set-vROPSManagementPack', 'Get-vROPSManagementPack', 'Get-vROPSManagementPackStatus', 'Get-vROPSManagementPackActivity', 'Get-vROPSAlertPlugin', 'Add-vROPSAlertPlugin', 'Set-vROPSAlertPlugin', 'Remove-vROPSAlertPlugin', 'Get-vROPSAlertDefinition', 'Set-vROPSAlertPluginStatus', 'Get-vROPSAuthSource', 'Get-vROPSAuthRole', 'Get-vROPSUserAccount', 'Get-vROPSUserGroup', 'Add-vROPSUserAccount', 'Add-vROPSUserGroup', 'Remove-vROPSUserAccount', 'Remove-vROPSUserGroup', 'Search-vROPSUserAccount', 'Search-vROPSUserGroup', 'Update-vROPSUserAccount', 'Get-vROpsLogForwarding', 'Get-vROPSNotification', 'New-vROPSNotification', 'Remove-vROPSNotification', 'Test-vROPsAdapterStatus', 'Request-vRLIToken', 'Get-vRLIVersion', 'Get-vRLIAuthenticationWSA', 'Set-vRLIAuthenticationWSA', 'Remove-vRLIAuthenticationWSA', 'Get-vRLIAuthenticationAD', 'Set-vRLIAuthenticationAD', 'Remove-vRLIAuthenticationAD', 'Get-vRLIAgentGroup', 'New-vRLIAgentGroup', 'Remove-vRLIAgentGroup', 'Get-vRLISmtpConfiguration', 'Set-vRLISmtpConfiguration', 'Get-vRLIRetentionThreshold', 'Set-vRLIRetentionThreshold', 'Get-vRLIIndexPartition', 'Set-vRLILogArchive', 'Get-vRLIEmailNotification', 'Set-vRLIEmailNotification', 'Get-vRLIRole', 'Get-vRLIGroup', 'Add-vRLIGroup', 'Remove-vRLIGroup', 'Get-vRLIAlert', 'New-vRLIAlert', 'Remove-vRLIAlert', 'Set-vRLIAlert', 'Update-vRLIAlert', 'Get-vRLILogForwarder', 'Set-vRLILogForwarder', 'Remove-vRLILogForwarder', 'Update-vRLILogForwarder', 'Test-vRLILogForwarder', 'Get-vRLIMarketplaceMetadata', 'Get-vRLIContentPack', 'Install-vRLIContentPack', 'Remove-vRLIContentPack', 'Request-AriaNetworksToken', 'Request-AriaNetworksInternalApiToken', 'Get-AriaNetworksNodes', 'Get-AriaNetworksDataSource', 'Get-AriaNetworksLdapConfiguration', 'Remove-AriaNetworksDataSource', 'New-AriaNetworksvCenterDataSource', 'New-AriaNetworksNsxtDataSource', 'New-AriaNetworksLdapConfiguration', 'Update-AriaNetworksvCenterDataSourceCredentials', 'Update-AriaNetworksNsxtDataSourceCredentials', 'Add-AriaNetworksLdapConfiguration', 'Undo-AriaNetworksLdapConfiguration', 'Add-AriaNetworksVcenterDataSource', 'Undo-AriaNetworksVcenterDataSource', 'Add-AriaNetworksNsxDataSource', 'Undo-AriaNetworksNsxDataSource', 'Get-VrmsNetworkInterface', 'Set-VrmsNetworkInterface', 'Get-VrmsConfiguration', 'Set-VrmsConfiguration', 'Remove-VrmsConfiguration', 'Set-VrmsReplication', 'Get-VrmsVamiCertificate', 'Set-VrmsVamiCertificate', 'Request-VrmsTokenREST', 'Get-VrmsSitePairing', 'Connect-VrmsRemoteSession', 'Get-VrmsVm', 'Get-VrmsDatastore', 'Get-VrmsReplication', 'Add-VrmsReplication', 'Remove-VrmsReplication', 'Test-VrRegistration', 'Request-SrmToken', 'Get-SrmApplianceDetail', 'Set-SrmApplianceState', 'Get-SrmTask', 'Get-SrmService', 'Set-SrmService', 'Get-SrmNetworkAll', 'Get-SrmNetworkDns', 'Set-SrmNetworkDns', 'Get-SrmNetworkInterface', 'Set-SrmNetworkInterface', 'Get-SrmConfiguration', 'Set-SrmConfiguration', 'Remove-SrmConfiguration', 'Get-SrmVamiCertificate', 'Set-SrmVamiCertificate', 'Request-SrmTokenREST', 'Connect-SrmRemoteSession', 'Get-SrmSitePairing', 'Get-SrmProtectionGroup', 'Add-SrmProtectionGroup', 'Remove-SrmProtectionGroup', 'Get-SrmRecoveryPlan', 'Add-SrmRecoveryPlan', 'Remove-SrmRecoveryPlan', 'Get-SrmRecoveryPlanStep', 'Add-SrmRecoveryPlanCalloutStep', 'Get-SrmRecoveryPlanVm', 'Set-SrmRecoveryPlanVMPriority', 'Test-SrmRegistration', 'Invoke-GeneratePrivateKeyAndCsr', 'Invoke-RequestSignedCertificate', 'Get-MscaRootCertificate', 'Invoke-GenerateChainPem', 'Invoke-GeneratePKCS12', 'Show-PowerValidatedSolutionsOutput', 'Debug-ExceptionWriter', 'Test-PowerValidatedSolutionsPrereq', 'Test-EndpointConnection', 'Test-VCFConnection', 'Test-VCFAuthentication', 'Test-EsxiConnection', 'Test-EsxiAuthentication', 'Test-VsphereConnection', 'Test-VsphereAuthentication', 'Test-AriaNetworksInternalAuthentication', , 'Test-SSOConnection', 'Test-SSOAuthentication', 'Test-vSphereApiConnection', 'Test-vSphereApiAuthentication', 'Test-NSXTConnection', 'Test-NSXTAuthentication', 'Test-vRSLCMConnection', 'Test-vRSLCMAuthentication', 'Test-vROPSConnection', 'Test-vROPSAuthentication', 'Test-vRLIConnection', 'Test-vRLIAuthentication', 'Test-vRAConnection', 'Test-vRAAuthentication', 'Test-WSAConnection', 'Test-WSAAuthentication', 'Test-AriaNetworksConnection', 'Test-AriaNetworksAuthentication', 'Test-VrmsVamiConnection', 'Test-VrmsVamiAuthentication', 'Test-VrSdkAuthentication', 'Test-VrConnection', 'Test-SrmVamiConnection', 'Test-SrmVamiAuthentication', 'Test-SrmConnection', 'Test-SrmAuthentication', 'Test-SrmSdkAuthentication', 'Test-SrmAuthenticationREST', 'Test-VrmsAuthenticationREST', 'Test-WMSubnetInput', 'Test-IpAddress', 'Test-IPaddressArray', 'Test-DnsServers', 'Test-NtpServer', 'Start-ValidatedSolutionMenu') + FunctionsToExport = @('Export-IamJsonSpec', 'Test-IamPrerequisite', 'Request-IamMscaSignedCertificate', 'Invoke-IamDeployment', 'Invoke-UndoIamDeployment', 'Add-IdentitySource', 'Undo-IdentitySource', 'Add-SddcManagerRole', 'Undo-SddcManagerRole', 'Install-WorkspaceOne', 'Undo-WorkspaceOne', 'Initialize-WorkspaceOne', 'Set-WorkspaceOneNtpConfig', 'Install-WorkspaceOneCertificate', 'Set-WorkspaceOneSmtpConfig', 'Add-WorkspaceOneDirectory', 'Set-WorkspaceOneNsxtIntegration', 'Undo-WorkspaceOneNsxtIntegration', 'Add-NsxtVidmRole', 'Undo-NsxtVidmRole', 'Add-NsxtLdapRole', 'Undo-NsxtLdapRole', 'Add-WorkspaceOneRole', 'Add-NsxtIdentitySource', 'Undo-NsxtIdentitySource', 'Export-PdrJsonSpec', 'Test-PdrPrerequisite', 'Invoke-PdrDeployment', 'Invoke-UndoPdrDeployment', 'Invoke-PdrSolutionInterop', 'Invoke-UndoPdrSolutionInterop', 'Install-SiteRecoveryManager', 'Undo-SiteRecoveryManager', 'Install-vSphereReplicationManager', 'Undo-vSphereReplicationManager', 'Connect-DRSolutionTovCenter', 'Undo-DRSolutionTovCenter', 'Request-VamiPKCS12Certificate', 'Install-VamiCertificate', 'Add-VrmsNetworkAdapter', 'Backup-VMOvfProperties', 'Restore-VMOVFProperties', 'Get-VMvAppConfig', 'New-VMOvfProperty', 'Set-VMOvfIPAssignment', 'Set-VMOvfEnvTransport', 'New-VMOvfProduct', 'Set-VMOvfEULA', 'Get-VMOvfProperty', 'Set-VMOvfProperty', 'Get-NSXLBDetails', 'Add-vRSLCMNtpServer', 'Set-vRSLCMDnsConfig', 'Undo-vRSLCMNtpServer', 'Undo-vRSLCMDnsConfig', 'Undo-vRSLCMLoadBalancer', 'Set-WorkspaceOneDnsConfig', 'Undo-WorkspaceOneDnsConfig', 'Set-vROPSDnsConfig', 'Undo-vROPSDnsConfig', 'Add-vROPSNtpServer', 'Undo-vROPSNtpServer', 'Set-vRADnsConfig', 'Undo-vRADnsConfig', 'Set-vRANtpConfig', 'Undo-vRANtpConfig', 'Add-EsxiVrmsVMkernelPort', 'Undo-EsxiVrmsVMkernelPort', 'Add-EsxiVrmsStaticRoute', 'Undo-EsxiVrmsStaticRoute', 'Add-SrmLicenseKey', 'Undo-SrmLicenseKey', 'New-SrmSitePair', 'Undo-SrmSitePair', 'Add-SrmMapping', 'Undo-SrmMapping', 'Add-vSphereReplication', 'Undo-vSphereReplication', 'Add-ProtectionGroup', 'Undo-ProtectionGroup', 'Add-RecoveryPlan', 'Set-RecoveryPlan', 'Undo-RecoveryPlan', 'Copy-vRealizeLoadBalancer', 'Export-DriJsonSpec', 'Test-DriPrerequisite', 'Invoke-DriDeployment', 'Invoke-UndoDriDeployment', 'Add-NetworkSegment', 'Undo-NetworkSegment', 'Add-PrefixList', 'Undo-PrefixList', 'Add-RouteMap', 'Undo-RouteMap', 'Set-DatastoreTag', 'Undo-DatastoreTag', 'Add-StoragePolicy', 'Undo-StoragePolicy', 'Add-ContentLibrary', 'Undo-ContentLibrary', 'Enable-SupervisorCluster', 'Undo-SupervisorCluster', 'New-SupervisorClusterCSR', 'Request-SignedCertificate', 'Install-TanzuSignedCertificate', 'Install-SupervisorClusterCertificate', 'Add-SupervisorClusterLicense', 'Add-Namespace', 'Undo-Namespace', 'Add-NamespacePermission', 'Undo-NamespacePermission', 'Enable-Registry', 'Undo-Registry', 'Add-SupervisorService', 'Undo-SupervisorService', 'Add-NamespaceVmClass', 'Add-TanzuKubernetesCluster', 'Undo-TanzuKubernetesCluster', 'Export-IlaJsonSpec', 'Test-IlaPrerequisite', 'Request-IlaMscaSignedCertificate', 'Invoke-IlaDeployment', 'Invoke-UndoIlaDeployment', 'Invoke-IlaSolutionInterop', 'Invoke-UndoIlaSolutionInterop', 'Export-vRLIJsonSpec', 'New-vRLIDeployment', 'Undo-vRLIDeployment', 'Add-vRLISmtpConfiguration', 'Add-vRLIAuthenticationWSA', 'Undo-vRLIAuthenticationWSA', 'Add-vRLIAuthenticationAD', 'Undo-vRLIAuthenticationAD', 'Install-vRLIPhotonAgent', 'Undo-vRLIPhotonAgent', 'Add-vRLIAgentGroup', 'Undo-vRLIAgentGroup', 'Register-vRLIWorkloadDomain', 'Set-vRLISyslogEdgeCluster', 'Undo-vRLISyslogEdgeCluster', 'Add-vRLILogArchive', 'Add-vRLIAuthenticationGroup', 'Undo-vRLIAuthenticationGroup', 'Add-vRLIAlertDatacenter', 'Add-vRLIAlertVirtualMachine', 'Undo-vRLIAlert', 'Enable-vRLIAlert', 'Disable-vRLIAlert', 'Add-vRLILogForwarder', 'Undo-vRLILogForwarder', 'Add-NsxtNodeProfileSyslogExporter', 'Undo-NsxtNodeProfileSyslogExporter', 'Request-vROpsLogForwardingConfig', 'Get-vRAvRLIConfig', 'Set-vRAvRLIConfig', 'Remove-vRAvRLIConfig', 'Enable-vRLIContentPack', 'Uninstall-vRLIContentPack', 'Update-vRLIContentPack', 'Export-IomJsonSpec', 'Test-IomPrerequisite', 'Request-IomMscaSignedCertificate', 'Invoke-IomDeployment', 'Invoke-UndoIomDeployment', 'Invoke-IomSolutionInterop', 'Invoke-UndoIomSolutionInterop', 'Export-vROPsJsonSpec', 'New-vROPSDeployment', 'Undo-vROPSDeployment', 'Import-vROPSUserAccount', 'Import-vROPSUserGroup', 'Register-vROPSWorkloadDomain', 'Add-vROPSGroupRemoteCollectors', 'Update-vROPSAdapterVcenter', 'Update-vROPSAdapterCollecterGroup', 'Remove-OperationsDefaultAdapter', 'Add-vROPSCurrency', 'Enable-vROPSManagementPack', 'Register-vROPSManagementPack', 'Add-vROPSAdapterNsxt', 'Add-vROPSAdapterPing', 'Update-vROPSAdapterSddcHealth', 'Add-vROPSAdapterSddcHealth', 'Add-vROPSAdapterIdentityManager', 'Add-vROPSAdapterSrm', 'Add-vROPSAdapterVr', 'Add-vROPSAdapterVcf', 'Undo-vROPSAdapter', 'Undo-vROPSCredential', 'Add-vROPSAlertPluginEmail', 'Import-vROPSNotification', 'Test-vROPsAdapterStatusByType', 'Update-vROPSvRAAdapterCredential', 'Add-vROPSVcfCredential', 'Add-vROPSVcenterCredential', 'Add-vROPSNsxCredential', 'Export-InvJsonSpec', 'Test-InvPrerequisite', 'Request-InvMscaSignedCertificate', 'Invoke-InvDeployment', 'Invoke-UndoInvDeployment', 'Invoke-InvSolutionInterop', 'Invoke-UndoInvSolutionInterop', 'Export-AriaNetworksJsonSpec', 'New-AriaNetworksDeployment', 'Undo-AriaNetworksDeployment', 'Undo-AriaNetworksVcenterDataSource', 'Export-PcaJsonSpec', 'Test-PcaPrerequisite', 'Request-PcaMscaSignedCertificate', 'Invoke-PcaDeployment', 'Invoke-UndoPcaDeployment', 'Invoke-PcaSolutionInterop', 'Invoke-UndoPcaSolutionInterop', 'Export-vRAJsonSpec', 'New-vRADeployment', 'Undo-vRADeployment', 'Update-vRAOrganizationDisplayName', 'New-vRACloudAccount', 'Undo-vRACloudAccount', 'Update-vRACloudAccountZone', 'Add-vROvCenterServer', 'Remove-vROvCenterServer', 'Add-vROTrustedCertificate', 'Add-vRANotification', 'Add-vRAUser', 'Undo-vRAUser', 'Add-vRAGroup', 'Undo-vRAGroup', 'New-vRAvROPSIntegrationItem', 'Undo-vRAvROPsIntegrationItem', 'Export-HrmJsonSpec', 'Test-HrmPrerequisite', 'Invoke-HrmDeployment', 'Invoke-UndoHrmDeployment', 'Deploy-PhotonAppliance', 'Remove-PhotonAppliance', 'Export-CbwJsonSpec', 'Test-CbwPrerequisite', 'Invoke-CbwDeployment', 'Invoke-UndoCbwDeployment', 'Invoke-CbwSolutionInterop', 'Invoke-UndoCbwSolutionInterop', 'Export-CbrJsonSpec', 'Test-CbrPrerequisite', 'Invoke-CbrDeployment', 'Invoke-UndoCbrDeployment', 'Invoke-CbrSolutionInterop', 'Invoke-UndoCbrSolutionInterop', 'Export-CcmJsonSpec', 'Test-CcmPrerequisite', 'Invoke-CcmDeployment', 'Invoke-UndoCcmDeployment', 'Invoke-CcmSolutionInterop', 'Invoke-UndoCcmSolutionInterop', 'Export-vRSLCMJsonSpec', 'Test-VrslcmPrerequisite', 'Invoke-vRSLCMDeployment', 'Invoke-VrslcmUndoDeployment', 'Add-vRSLCMMyVMwareAccount', 'Undo-vRSLCMMyVMwareAccount', 'New-vRSLCMDatacenter', 'New-vRSLCMDatacenterVcenter', 'Undo-vRSLCMDatacenter', 'Update-vRSLCMPSPack', 'Request-vRSLCMBundle', 'New-vRSLCMDeployment', 'Undo-vRSLCMDeployment', 'Install-vRSLCMCertificate', 'Connect-vRSLCMUpgradeIso', 'Disconnect-vRSLCMUpgradeIso', 'Start-vRSLCMUpgrade', 'Add-vRSLCMGroupRole', 'Undo-vRSLCMGroupRole', 'Export-GlobalWsaJsonSpec', 'Test-GlobalWsaPrerequisite', 'Request-WSAMscaSignedCertificate', 'Invoke-GlobalWsaDeployment', 'Invoke-UndoGlobalWsaDeployment', 'Export-WsaJsonSpec', 'New-WSADeployment', 'Undo-WSADeployment', 'Invoke-WsaDirectorySync', 'Add-vCenterGlobalPermission', 'Undo-vCenterGlobalPermission', 'Set-vCenterPermission', 'Add-SsoPermission', 'Undo-SsoPermission', 'Add-SsoUser', 'Undo-SsoUser', 'Add-vSphereRole', 'Undo-vSphereRole', 'Copy-vSphereRole', 'Add-VMFolder', 'Add-StorageFolder', 'Undo-VMFolder', 'Add-ResourcePool', 'Undo-ResourcePool', 'Add-AntiAffinityRule', 'Undo-AntiAffinityRule', 'Add-ClusterGroup', 'Undo-ClusterGroup', 'Add-VmStartupRule', 'Undo-VmStartupRule', 'Move-VMtoFolder', 'Add-VdsPortGroup', 'Undo-VdsPortGroup', 'Import-vRSLCMLockerCertificate', 'Undo-vRSLCMLockerCertificate', 'New-vRSLCMLockerPassword', 'Undo-vRSLCMLockerPassword', 'New-vRSLCMLockerLicense', 'Undo-vRSLCMLockerLicense', 'Add-VmGroup', 'Add-WorkspaceOneDirectoryGroup', 'Undo-WorkspaceOneDirectoryGroup', 'Add-WorkspaceOneDirectoryConnector', 'Update-SddcDeployedFlavor', 'Invoke-VcenterCommand', 'Import-ContentLibraryItem', 'Add-NsxtPrincipalIdentity', 'Undo-NsxtPrincipalIdentity', 'Test-ADAuthentication', 'Get-ADPrincipalGuid', 'Get-vCenterServerDetail', 'Get-NsxtServerDetail', 'Get-vRSLCMServerDetail', 'Get-WSAServerDetail', 'Get-vRAServerDetail', 'Get-vROPsServerDetail', 'Get-vRLIServerDetail', 'Get-VCFDnsSearchDomain', 'Request-vSphereApiToken', 'Request-VcenterApiToken', 'Connect-vSphereMobServer', 'Disconnect-vSphereMobServer', 'Get-VCVersion', 'Get-VCConfigurationNTP', 'Get-VCConfigurationDNS', 'Get-VcenterPasswordExpiration', 'Set-VcenterPasswordExpiration', 'Get-VcenterRootPasswordExpiration', 'Set-VcenterRootPasswordExpiration', 'Get-LocalUserPasswordExpiration', 'Set-LocalUserPasswordExpiration', 'Get-LocalPasswordComplexity', 'Set-LocalPasswordComplexity', 'Get-LocalAccountLockout', 'Set-LocalAccountLockout', 'Get-GlobalPermission', 'Add-GlobalPermission', 'Remove-GlobalPermission', 'Add-DrsVmToVmGroup', 'Remove-DrsVmToVmGroup', 'Get-DrsVmToVmGroup', 'Get-VcLicense', 'New-VcLicense', 'Remove-VcLicense', 'Get-SubscribedLibrary', 'Get-VcenterBackupStatus', 'Get-SnapshotStatus', 'Get-SnapshotConsolidation', 'Get-EsxiAlert', 'Get-VsanHealthTest', 'Get-VcenterTriggeredAlarm', 'Get-ESXiAdminGroup', 'Set-ESXiAdminGroup', 'Get-VCenterCEIP', 'Set-VCenterCEIP', 'Request-WSAToken', 'Get-WSAIdentityProvider', 'Get-WSAConnector', 'Add-WSAConnector', 'Get-WSADirectory', 'Get-WSADirectoryDomain', 'Add-WSALdapDirectory', 'Set-WSABindPassword', 'Set-WSASyncSetting', 'Start-WSADirectorySync', 'Set-WSADirectoryUser', 'Set-WSADirectoryGroup', 'Get-WSASmtpConfiguration', 'Set-WSASmtpConfiguration', 'Set-WSARoleMember', 'Get-WSARole', 'Get-WSAGroup', 'Get-WSAUser', 'Get-WSARuleSet', 'Get-WSAOAuthToken', 'Get-WSAClient', 'Add-WSAClient', 'Add-WSARoleAssociation', 'Get-WSARoleId', 'Get-WSAActiveDirectoryGroupDetail', 'Get-WSARoleAssociation', 'Get-WsaAccountLockout', 'Set-WsaAccountLockout', 'Get-WsaPasswordPolicy', 'Set-WsaPasswordPolicy', 'Set-WorkspaceOneApplianceNtpConfig', 'Request-NsxtToken', 'Get-NsxtComputeManager', 'Set-NsxtComputeManager', 'Get-NsxtVidm', 'Set-NsxtVidm', 'Get-NsxtLdap', 'New-NsxtLdap', 'Remove-NsxtLdap', 'Get-NsxtLdapStatus', 'Get-NsxtPrincipalIdentity', 'New-NsxtPrincipalIdentity', 'Get-NsxtPrincipalIdentity', 'Remove-NsxtPrincipalIdentity', 'Get-NsxtRole', 'Set-NsxtRole', 'Remove-NsxtRole', 'Get-NsxtUser', 'Get-NsxtVidmUser', 'Get-NsxtVidmGroup', 'Get-NsxEdgeCluster', 'Get-NsxtTransportZone', 'New-NsxtSegment', 'Get-NsxtSegment', 'Remove-NsxtSegment', 'Get-NsxtTier0Gateway', 'Get-NsxtTier1Gateway', 'Get-NsxtPrefixList', 'New-NsxtPrefixList', 'Remove-NsxtPrefixList', 'Add-NsxtPrefix', 'Get-NsxtRouteMap', 'New-NsxtRouteMap', 'Remove-NsxtRouteMap', 'Export-ModuleMember Get-NsxtRouteRedistributionPolicy', 'Export-ModuleMember Set-NsxtRouteRedistributionPolicy', 'Export-ModuleMember Get-NsxtManagerAuthPolicy', 'Export-ModuleMember Set-NsxtManagerAuthPolicy', 'Export-ModuleMember Get-NsxtEdgeNodeAuthPolicy', 'Export-ModuleMember Set-NsxtEdgeNodeAuthPolicy', 'Get-NsxtSyslogStatus', 'Get-NsxtSyslogExporter', 'Set-NsxtSyslogExporter', 'Remove-NsxtSyslogExporter', 'New-vRealizeLoadBalancerSpec', 'Get-NsxtGlobalSegmentID', 'Add-CertToNsxCertificateStore', 'Get-NsxtEdgeCluster', 'New-NsxtTier1', 'Set-NsxtTier1', 'New-NsxtTier1ServiceInterface', 'New-NsxtTier1StaticRoute', 'New-NsxtLoadBalancer', 'New-NsxtLBServiceMonitor', 'New-NsxtLBAppProfile', 'New-NsxtLBPersistenceAppProfile', 'New-NsxtLBPool', 'New-NsxtLBVirtualServer', 'Get-NsxtCertificate', 'Set-NsxtCertificate', 'Get-NsxtNodeProfile', 'Set-NsxtNodeProfileSyslogExporter', 'Remove-NsxtNodeProfileSyslogExporter', 'Get-NsxtBackupConfiguration', 'Get-NsxtBackupHistory', 'Get-NsxtAlarm', 'Get-NsxtEvent', 'Get-NsxtTier0BgpStatus', 'New-NsxtTier0BgpNeighborConfig', 'Get-NsxtEdgeNode', 'Get-NsxtTier0LocaleServiceBgp', 'Get-NsxtLocaleService', 'Get-NsxtVidmStatus', 'Get-NsxtTransportNode', 'Get-NsxtTransportNodeStatus', 'Get-NsxtTransportNodeTunnel', 'Get-NsxtTransportNodeTunnelStatus', 'Get-NsxtComputeManagerStatus', 'Get-NsxtApplianceUser', 'Set-NsxtApplianceUserExpirationPolicy', 'Set-NsxtApplianceUserPassword', 'Get-NsxtLogicalRouter', 'Get-NsxtRoutingConfigRedistribution', 'Get-NsxtRoutingConfigRedistributionRule', 'Set-NsxtRoutingConfigRedistributionRule', 'Get-NsxtRoutingConfigRouteMap', 'Get-NsxtSecurityPolicy', 'Remove-NsxtSecurityPolicy', 'Get-NsxtGroup', 'Remove-NsxtGroup', 'Enable-WMRegistry', 'Get-WMRegistry', 'Remove-WMRegistry', 'Get-WMRegistryHealth', 'Connect-WMCluster', 'Disconnect-WMCluster', 'New-TanzuKubernetesCluster', 'Get-TanzuKubernetesCluster', 'Remove-TanzuKubernetesCluster', 'Get-VMClass', 'Add-VMClass', 'Get-WMLicenseStatus', 'Request-WMClusterCSR', 'Install-WMClusterCertificate', 'Watch-WmClusterConfigStatus', 'Request-vRSLCMToken', 'Get-vRSLCMHealth', 'Get-vRSLCMLockerPassword', 'Add-vRSLCMLockerPassword', 'Remove-vRSLCMLockerPassword', 'Get-vRSLCMLockerCertificate', 'Add-vRSLCMLockerCertificate', 'Remove-vRSLCMLockerCertificate', 'Get-vRSLCMLockerLicense', 'Add-vRSLCMLockerLicense', 'Remove-vRSLCMLockerLicense', 'Get-vRSLCMDatacenter', 'Add-vRSLCMDatacenter', 'Remove-vRSLCMDatacenter', 'Get-vRSLCMDatacenterVcenter', 'Add-vRSLCMDatacenterVcenter', 'Sync-vRSLCMDatacenterVcenter', 'Get-vRSLCMEnvironment', 'Add-vRSLCMEnvironment', 'Remove-vRSLCMEnvironment', 'Get-vRSLCMLoadbalancer', 'New-vRSLCMLoadbalancer', 'Remove-vRSLCMLoadbalancer', 'Get-vRSLCMRequest', 'Remove-vRSLCMRequest', 'Watch-vRSLCMRequest', 'Resume-vRSLCMRequest', 'New-vRSLCMAdapterOperation', 'Get-vRSLCMProductNtpServer', 'Remove-vRSLCMProductNtpServer', 'Get-vRSLCMApplianceNtpConfig', 'Add-vRSLCMProductNtpServer', 'Add-vRSLCMApplianceNtpConfig', 'Set-vRSLCMApplianceNtpConfig', 'Get-vRSLCMProductNode', 'Stop-vRSLCMProductNode', 'Start-vRSLCMProductNode', 'Get-vRSLCMPSPack', 'Install-vRSLCMPSPack', 'Get-vRSLCMProductBinariesMapped', 'Get-vRSLCMProductBinaries', 'Register-vRSLCMProductBinary', 'Get-vRSLCMMyVmwareAccount', 'New-vRSLCMMyVmwareAccount', 'Remove-vRSLCMMyVmwareAccount', 'Get-vRSLCMProductVersion', 'Request-vRSLCMProductBinary', 'Get-vRSLCMSshStatus', 'Set-vRSLCMSshStatus', 'Start-vRSLCMSnapshot', 'Get-vRSLCMUpgradeStatus', 'Invoke-vRSLCMUpgrade', 'Get-vRSLCMProductDetails', 'Get-vRSLCMEnvironmentVMs', 'Get-vRSLCMProductPassword', 'Get-vRSLCMRole', 'Get-vRSLCMGroup', 'Add-vRSLCMGroup', 'Remove-vRSLCMGroup', 'Request-vRAToken', 'Get-vRAOrganizationId', 'Get-vRAOrganizationDisplayName', 'Set-vRAOrganizationDisplayName', 'Get-vRACloudAccount', 'Add-vRACloudAccount', 'Remove-vRACloudAccount', 'Get-vRANotification', 'New-vRANotification', 'Remove-vRANotification', 'Get-vRAResourceCompute', 'Add-vRAResourceComputeTag', 'Get-vRACloudZone', 'Get-vRAAPIVersion', 'Get-vRAIntegrationDetail', 'Update-vRACloudZone', 'Remove-vRACloudZone', 'Get-vRAServices', 'Get-vRAUser', 'New-vRAUser', 'Get-vRAGroup', 'New-vRAGroup', 'Get-vRAUserRoles', 'Get-vRAGroupRoles', 'Remove-vRAGroupRoles', 'Set-vRAGroupOrgRole', 'Remove-vRAGroupOrgRole', 'Set-vRAGroupServiceRole', 'Remove-vRAGroupServiceRole', 'Set-vRAUserOrgRole', 'Remove-vRAUserOrgRole', 'Set-vRAUserServiceRole', 'Remove-vRAUserServiceRole', 'Add-vRAIntegrationItem', 'Test-vRAIntegrationItem', 'Remove-vRAIntegrationItem', 'Invoke-vRORestMethod', 'Get-vROVersion', 'Get-vROWorkflow', 'Invoke-vROWorkflow', 'New-vROParameterDefinition', 'Get-vROWorkflowExecution', 'Get-vROWorkflowExecutionState', 'Get-vROWorkflowExecutionResult', 'Request-vROPSToken', 'Get-vROPSVersion', 'Get-vROPSCollector', 'Get-vROPSCollectorGroup', 'Add-vROPSCollectorGroup', 'Remove-vROPSCollectorGroup', 'Get-vROPSAdapter', 'Set-vROPSAdapter', 'Add-vROPSAdapter', 'Remove-vROPSAdapter', 'Test-vROPSAdapterConnection', 'Start-vROPSAdapter', 'Stop-vROPSAdapter', 'Get-vROPSAdapterKind', 'Get-vROPSResourceDetail', 'Get-vROPSCredential', 'Add-vROPSCredential', 'Remove-vROPSCredential', 'Get-vROPSCurrency', 'Set-vROPSCurrency', 'Get-vROPSSolution', 'Import-vROPSManagementPack', 'Install-vROPSManagementPack', 'Set-vROPSManagementPack', 'Get-vROPSManagementPack', 'Get-vROPSManagementPackStatus', 'Get-vROPSManagementPackActivity', 'Get-vROPSAlertPlugin', 'Add-vROPSAlertPlugin', 'Set-vROPSAlertPlugin', 'Remove-vROPSAlertPlugin', 'Get-vROPSAlertDefinition', 'Set-vROPSAlertPluginStatus', 'Get-vROPSAuthSource', 'Get-vROPSAuthRole', 'Get-vROPSUserAccount', 'Get-vROPSUserGroup', 'Add-vROPSUserAccount', 'Add-vROPSUserGroup', 'Remove-vROPSUserAccount', 'Remove-vROPSUserGroup', 'Search-vROPSUserAccount', 'Search-vROPSUserGroup', 'Update-vROPSUserAccount', 'Get-vROpsLogForwarding', 'Get-vROPSNotification', 'New-vROPSNotification', 'Remove-vROPSNotification', 'Test-vROPsAdapterStatus', 'Request-vRLIToken', 'Get-vRLIVersion', 'Get-vRLIAuthenticationWSA', 'Set-vRLIAuthenticationWSA', 'Remove-vRLIAuthenticationWSA', 'Get-vRLIAuthenticationAD', 'Set-vRLIAuthenticationAD', 'Remove-vRLIAuthenticationAD', 'Get-vRLIAgentGroup', 'New-vRLIAgentGroup', 'Remove-vRLIAgentGroup', 'Get-vRLISmtpConfiguration', 'Set-vRLISmtpConfiguration', 'Get-vRLIRetentionThreshold', 'Set-vRLIRetentionThreshold', 'Get-vRLIIndexPartition', 'Set-vRLILogArchive', 'Get-vRLIEmailNotification', 'Set-vRLIEmailNotification', 'Get-vRLIRole', 'Get-vRLIGroup', 'Add-vRLIGroup', 'Remove-vRLIGroup', 'Get-vRLIAlert', 'New-vRLIAlert', 'Remove-vRLIAlert', 'Set-vRLIAlert', 'Update-vRLIAlert', 'Get-vRLILogForwarder', 'Set-vRLILogForwarder', 'Remove-vRLILogForwarder', 'Update-vRLILogForwarder', 'Test-vRLILogForwarder', 'Get-vRLIMarketplaceMetadata', 'Get-vRLIContentPack', 'Install-vRLIContentPack', 'Remove-vRLIContentPack', 'Request-AriaNetworksToken', 'Request-AriaNetworksInternalApiToken', 'Get-AriaNetworksNodes', 'Get-AriaNetworksDataSource', 'Get-AriaNetworksLdapConfiguration', 'Remove-AriaNetworksDataSource', 'New-AriaNetworksvCenterDataSource', 'New-AriaNetworksNsxtDataSource', 'New-AriaNetworksLdapConfiguration', 'Update-AriaNetworksvCenterDataSourceCredentials', 'Update-AriaNetworksNsxtDataSourceCredentials', 'Add-AriaNetworksLdapConfiguration', 'Undo-AriaNetworksLdapConfiguration', 'Add-AriaNetworksVcenterDataSource', 'Undo-AriaNetworksVcenterDataSource', 'Add-AriaNetworksNsxDataSource', 'Undo-AriaNetworksNsxDataSource', 'Get-VrmsNetworkInterface', 'Set-VrmsNetworkInterface', 'Get-VrmsConfiguration', 'Set-VrmsConfiguration', 'Remove-VrmsConfiguration', 'Set-VrmsReplication', 'Get-VrmsVamiCertificate', 'Set-VrmsVamiCertificate', 'Request-VrmsTokenREST', 'Get-VrmsSitePairing', 'Connect-VrmsRemoteSession', 'Get-VrmsVm', 'Get-VrmsDatastore', 'Get-VrmsReplication', 'Add-VrmsReplication', 'Remove-VrmsReplication', 'Test-VrRegistration', 'Request-SrmToken', 'Get-SrmApplianceDetail', 'Set-SrmApplianceState', 'Get-SrmTask', 'Get-SrmService', 'Set-SrmService', 'Get-SrmNetworkAll', 'Get-SrmNetworkDns', 'Set-SrmNetworkDns', 'Get-SrmNetworkInterface', 'Set-SrmNetworkInterface', 'Get-SrmConfiguration', 'Set-SrmConfiguration', 'Remove-SrmConfiguration', 'Get-SrmVamiCertificate', 'Set-SrmVamiCertificate', 'Request-SrmTokenREST', 'Connect-SrmRemoteSession', 'Get-SrmSitePairing', 'Get-SrmProtectionGroup', 'Add-SrmProtectionGroup', 'Remove-SrmProtectionGroup', 'Get-SrmRecoveryPlan', 'Add-SrmRecoveryPlan', 'Remove-SrmRecoveryPlan', 'Get-SrmRecoveryPlanStep', 'Add-SrmRecoveryPlanCalloutStep', 'Get-SrmRecoveryPlanVm', 'Set-SrmRecoveryPlanVMPriority', 'Test-SrmRegistration', 'Invoke-GeneratePrivateKeyAndCsr', 'Invoke-RequestSignedCertificate', 'Get-MscaRootCertificate', 'Invoke-GenerateChainPem', 'Invoke-GeneratePKCS12', 'Show-PowerValidatedSolutionsOutput', 'Debug-ExceptionWriter', 'Test-PowerValidatedSolutionsPrereq', 'Test-PrereqDnsEntries', 'Test-EndpointConnection', 'Test-VCFConnection', 'Test-VCFAuthentication', 'Test-EsxiConnection', 'Test-EsxiAuthentication', 'Test-VsphereConnection', 'Test-VsphereAuthentication', 'Test-AriaNetworksInternalAuthentication', , 'Test-SSOConnection', 'Test-SSOAuthentication', 'Test-vSphereApiConnection', 'Test-vSphereApiAuthentication', 'Test-NSXTConnection', 'Test-NSXTAuthentication', 'Test-vRSLCMConnection', 'Test-vRSLCMAuthentication', 'Test-vROPSConnection', 'Test-vROPSAuthentication', 'Test-vRLIConnection', 'Test-vRLIAuthentication', 'Test-vRAConnection', 'Test-vRAAuthentication', 'Test-WSAConnection', 'Test-WSAAuthentication', 'Test-AriaNetworksConnection', 'Test-AriaNetworksAuthentication', 'Test-VrmsVamiConnection', 'Test-VrmsVamiAuthentication', 'Test-VrSdkAuthentication', 'Test-VrConnection', 'Test-SrmVamiConnection', 'Test-SrmVamiAuthentication', 'Test-SrmConnection', 'Test-SrmAuthentication', 'Test-SrmSdkAuthentication', 'Test-SrmAuthenticationREST', 'Test-VrmsAuthenticationREST', 'Test-WMSubnetInput', 'Test-IpAddress', 'Test-IPaddressArray', 'Test-DnsServers', 'Test-NtpServer', 'Start-ValidatedSolutionMenu') # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '*' diff --git a/PowerValidatedSolutions.psm1 b/PowerValidatedSolutions.psm1 index 309d829b..64c34d50 100644 --- a/PowerValidatedSolutions.psm1 +++ b/PowerValidatedSolutions.psm1 @@ -21799,6 +21799,12 @@ Function Test-InvPrerequisite { Test-PrereqBinaryNetworks -searchCriteria "VMware-Aria-Operations-for-Networks-$ariaOperationsForNetworksVersion" # Verify that the required binaries are available Test-PrereqLicenseKey -licenseKey $jsonInput.licenseKey -productName "VMware Aria Suite or VMware Aria Operations for Networks" # Verify a license key is present Test-PrereqDomainController -server ($jsonInput.domainControllerMachineName + "." + $jsonInput.domainFqdn) # Verify that Active Directory Domain Controllers are available in the environment + # Verify that DNS Entries are resolvable in the environment + $dnsEntries = $jsonInput.ariaNetworksPlatformNodeaFqdn, $jsonInput.ariaNetworksCollectorNodeaFqdn + $dnsServers = $jsonInput.dns -split ',' + if ($dnsEntries) { + Test-PrereqDnsEntries -dnsEntries $dnsEntries -dnsServers $dnsServers + } # Verify that the required service accounts are created in Active Directory $serviceAccounts = '[ {"user": "'+ $jsonInput.domainBindUser + '", "password": "' + $jsonInput.domainBindPass + '"}, @@ -59392,6 +59398,87 @@ Function Test-NtpServer { } Export-ModuleMember -Function Test-NtpServer +Function Test-PrereqDnsEntries { + <# + .SYNOPSIS + Checks the DNS resolution of a DNS entry or entries on a DNS server or servers. + + .DESCRIPTION + The Test-PrereqDnsEntries cmdlet checks for the resolution of a DNS record or multiple DNS records and tests the forward and reverse lookups in a DNS server or multiple DNS servers. + + .EXAMPLE + Test-PrereqDnsEntries -dnsEntries sfo-vcf01.sfo.rainpole.io, 192.168.11.41 -dnsServers rpl-ad01.rainpole.io + This example will validate the forward and reverse details of the two DNS entries and if one exists in the DNS Server it will return the corresponding value. + + .PARAMETER dnsEntries + The fully qualified domain name (FQDN) or IP address of the DNS entry or entries to check, separated by commas if checking more than one. + + .PARAMETER dnsServers + The fully qualified domain name (FQDN) or IP address of the DNS server or servers to check for the DNS entry or entries in separated by commas if checking more than one. + #> + + Param ( + [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [String[]]$dnsEntries, + [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [String[]]$dnsServers + ) + + $processedIps = @{} + $showProcessingMessage = $dnsEntries.Count -gt 1 + + foreach ($entry in $dnsEntries) { + if ($showProcessingMessage) { + Show-PowerValidatedSolutionsOutput -type "INFO" -message "Verifying DNS entry ($entry) is resolvable..." + } + + # Check if the entry is an IP address. + if ([System.Net.IPAddress]::TryParse($entry, [ref]$null)) { + # Entry is an IP address, perform reverse lookup first. + $reverseResults = Resolve-ReverseLookup -ipv4 $entry -dnsServers $dnsServers + foreach ($result in $reverseResults) { + $type = if ($result.Status -eq "SUCCESSFUL") { "INFO" } else { "ERROR" } + Show-PowerValidatedSolutionsOutput -type $type -message "Reverse Lookup: ($($result.Entry)) $($result.Message) using DNS server ($($result.Server)): $($result.Status)" + } + + $fqdn = $reverseResults | Where-Object { $_.Status -eq "SUCCESSFUL" } | Select-Object -ExpandProperty Message | ForEach-Object { + if ($_ -match 'resolved to (\S+)') { + $matches[1] + } + } | Select-Object -First 1 + + if ($fqdn) { + $forwardResults = Resolve-ForwardLookup -fqdn $fqdn -dnsServers $dnsServers + foreach ($result in $forwardResults) { + $type = if ($result.Status -eq "SUCCESSFUL") { "INFO" } else { "ERROR" } + Show-PowerValidatedSolutionsOutput -type $type -message "Forward Lookup: ($($result.Entry)) resolved to ($($result.IPAddress)) using DNS server ($($result.Server)): $($result.Status)" + } + } + + $processedIps[$entry] = $true + } else { + # Entry is a FQDN, perform forward lookup first. + $forwardResults = Resolve-ForwardLookup -fqdn $entry -dnsServers $dnsServers + foreach ($result in $forwardResults) { + $type = if ($result.Status -eq "SUCCESSFUL") { "INFO" } else { "ERROR" } + Show-PowerValidatedSolutionsOutput -type $type -message "Forward Lookup: ($($result.Entry)) resolved to ($($result.IPAddress)) using DNS server ($($result.Server)): $($result.Status)" + } + + $ipAddresses = $forwardResults | Where-Object { $_.Status -eq "SUCCESSFUL" } | Select-Object -ExpandProperty IPAddress + + foreach ($ipv4 in $ipAddresses) { + if (-not $processedIps.ContainsKey($ipv4)) { + $reverseResults = Resolve-ReverseLookup -ipv4 $ipv4 -dnsServers $dnsServers -fqdn $entry + foreach ($result in $reverseResults) { + $type = if ($result.Status -eq "SUCCESSFUL") { "INFO" } else { "ERROR" } + Show-PowerValidatedSolutionsOutput -type $type -message "Reverse Lookup: ($($result.Entry)) $($result.Message) using DNS server ($($result.Server)): $($result.Status)" + } + $processedIps[$ipv4] = $true + } + } + } + } +} +Export-ModuleMember -Function Test-PrereqDnsEntries + Function Test-PrereqWorkloadDomains { Try { if (Get-VCFWorkloadDomain | Where-Object { $_.type -eq "MANAGEMENT" }) { @@ -59734,6 +59821,55 @@ Function Test-PrereqServiceAccount { } } +Function Resolve-ReverseLookup { + Param ( + [Parameter (Mandatory = $true)] [String]$ipv4, + [Parameter (Mandatory = $true)] [String[]]$dnsServers, + [Parameter (Mandatory = $false)] [String]$fqdn + ) + + $results = @() + foreach ($dnsServer in $dnsServers) { + Try { + $ptrResult = Resolve-DnsName -Name $ipv4 -Server $dnsServer -ErrorAction Stop -Type PTR + $ptrHost = $ptrResult | Where-Object { $_.QueryType -eq 'PTR' } | Select-Object -ExpandProperty NameHost + if ($fqdn) { + if ($ptrHost -eq $fqdn) { + $results += [PSCustomObject]@{ Entry = $ipv4; Server = $dnsServer; Type = "Reverse"; Status = "SUCCESSFUL"; Message = "resolved to ($ptrHost)"; FQDN = $ptrHost } + } else { + $results += [PSCustomObject]@{ Entry = $ipv4; Server = $dnsServer; Type = "Reverse"; Status = "FAILED"; Message = "($ipv4) could not be resolved to ($fqdn)"; FQDN = $ptrHost } + } + } else { + $results += [PSCustomObject]@{ Entry = $ipv4; Server = $dnsServer; Type = "Reverse"; Status = "SUCCESSFUL"; Message = "resolved to $ptrHost"; FQDN = $ptrHost } + } + } Catch { + $errorMessage = $_.Exception.Message + $results += [PSCustomObject]@{ Entry = $ipv4; Server = $dnsServer; Type = "Reverse"; Status = "FAILED"; Message = "($ipv4) could not be resolved. Error: $errorMessage"; FQDN = $null } + } + } + return $results +} + +Function Resolve-ForwardLookup { + Param ( + [Parameter (Mandatory = $true)] [String]$fqdn, + [Parameter (Mandatory = $true)] [String[]]$dnsServers + ) + + $results = @() + foreach ($dnsServer in $dnsServers) { + Try { + $aRecord = Resolve-DnsName -Name $fqdn -Server $dnsServer -ErrorAction Stop -Type A + $ipAddress = $aRecord | Where-Object { $_.QueryType -eq 'A' } | Select-Object -ExpandProperty IPAddress + $results += [PSCustomObject]@{ Entry = $fqdn; Server = $dnsServer; Type = "Forward"; Status = "SUCCESSFUL"; IPAddress = $ipAddress } + } Catch { + $errorMessage = $_.Exception.Message + $results += [PSCustomObject]@{ Entry = $fqdn; Server = $dnsServer; Type = "Forward"; Status = "FAILED"; Message = "$fqdn could not be resolved. Error: $errorMessage" } + } + } + return $results +} + #EndRegion End of Test Functions ###### ################################################################################### diff --git a/docs/documentation/functions/supporting/Test-PrereqDnsEntries.md b/docs/documentation/functions/supporting/Test-PrereqDnsEntries.md new file mode 100644 index 00000000..0b2f6714 --- /dev/null +++ b/docs/documentation/functions/supporting/Test-PrereqDnsEntries.md @@ -0,0 +1,64 @@ +# Test-PrereqDnsEntries + +## Synopsis + +Checks the DNS resolution of a DNS entry or entries on a DNS server or servers. + +## Syntax + +```powershell +Test-PrereqDnsEntries [-dnsEntries] [-dnsServers] [] +``` + +## Description + +The `Test-PrereqDnsEntries` cmdlet checks for the resolution of a DNS record or multiple DNS records and tests the forward and reverse lookups in a DNS server or multiple DNS servers. + +## Examples + +### Example 1 + +```powershell +Test-PrereqDnsEntries -dnsEntries sfo-vcf01.sfo.rainpole.io, 192.168.11.41 -dnsServers rpl-ad01.rainpole.io +This example will validate the forward and reverse details of the two DNS entries and if one exists in the DNS Server it will return the corresponding value. +``` + +## Parameters + +### -dnsEntries + +The fully qualified domain name (FQDN) or IP address of the DNS entry or entries to check, separated by commas if checking more than one. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -dnsServers + +The fully qualified domain name (FQDN) or IP address of the DNS server or servers to check for the DNS entry or entries in separated by commas if checking more than one. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters + +This cmdlet supports the common parameters: `-Debug`, `-ErrorAction`, `-ErrorVariable`, `-InformationAction`, `-InformationVariable`, `-OutVariable`, +`-OutBuffer`, `-PipelineVariable`, `-Verbose`, `-WarningAction`, and `-WarningVariable`. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + diff --git a/mkdocs.yml b/mkdocs.yml index 5d1c6a52..d9410532 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1012,6 +1012,7 @@ nav: - documentation/functions/supporting/Test-IpAddress.md - documentation/functions/supporting/Test-IPaddressArray.md - documentation/functions/supporting/Test-NtpServer.md + - documentation/functions/supporting/Test-PrereqDnsEntries.md - documentation/functions/supporting/Test-PowerValidatedSolutionsPrereq.md - Output: - documentation/functions/supporting/Show-PowerValidatedSolutionsOutput.md