internal/functions/Get-Requirements.ps1
function Get-Requirements { <# .SYNOPSIS Checks requirements .DESCRIPTION Checks requirements .PARAMETER Requirements Lists the available Services requirements to be checked. Currently Available is 'AADConnect'. .EXAMPLE PS C:\> Get-Requirements -Requirements PSFramework, EXO Checks if PSFramework and EXO v2 modure is installed. If not, we install it. #> [CmdletBinding()] param ( [ValidateSet('AADConnect')] [String[]] $Requirements ) Switch ( $Requirements ) { AADConnect { $title = Write-PSFMessage -Level Output -Message "AD Sync status" $question = Write-PSFMessage -Level Output -Message "Did you stopped the Azure AD Connect sync cycle?" $choices = '&Yes', '&No' $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1) if ($decision -eq 0) { Write-PSFMessage -Level Output -Message "Loading parameters..." } else { Write-PSFMessage -Level Output -Message "AD sync cycle should be stopped before moving forward" $title1 = Write-PSFMessage -Level Output -Message "" $question1 = Write-PSFMessage -Level Output -Message "Type 'Yes' if you want that we automatically stop AD Sync cycle or type 'No' if you want to stop yourself" $choices1 = '&Yes', '&No' $decision1 = $Host.UI.PromptForChoice($title1, $question1, $choices1, 1) if ($decision1 -eq 0) { $AADC = Read-Host "$(Get-Date -Format "HH:mm:ss") - Please enter the Azure AD Connect server hostname" Write-PSFMessage -Level Output -Message "Disabling AD Sync cycle..." $sessionAADC = New-PSSession -ComputerName $AADC Invoke-Command { Import-Module ADSync Set-ADSyncScheduler -SyncCycleEnabled $false } -Session $sessionAADC $SynccycleStatus = Invoke-Command { Import-Module ADSync Get-ADSyncScheduler | Select-Object SyncCycleEnabled } -Session $sessionAADC if ($SynccycleStatus.SyncCycleEnabled -eq $false) { Write-PSFMessage -Level Output -Message "Azure AD sync cycle succesfully disabled." $AADCStoped = 1 } else { Write-PSFMessage -Level Output -Message "Azure AD sync cycle could not be stopped, please stop it manually with the following cmdlet: Set-ADSyncScheduler -SyncCycleEnabled 0" $AADCStoped = 0 } } else { Write-PSFMessage -Level Output -Message "Please stop the AD sync cycle and run the script again" $AADCStoped = 0 } } } } Get-PSSession | Remove-PSSession return $AADCStoped } |