diff --git a/CMPivot/CMPivot.msi b/CMPivot/CMPivot.msi new file mode 100644 index 0000000..f115327 Binary files /dev/null and b/CMPivot/CMPivot.msi differ diff --git a/CMTrace.exe b/CMTrace.exe new file mode 100644 index 0000000..d0abb2b Binary files /dev/null and b/CMTrace.exe differ diff --git a/CMUpdateReset/CMUpdateReset.exe b/CMUpdateReset/CMUpdateReset.exe new file mode 100644 index 0000000..f932f71 Binary files /dev/null and b/CMUpdateReset/CMUpdateReset.exe differ diff --git a/ClientTools/CliSpy.exe b/ClientTools/CliSpy.exe new file mode 100644 index 0000000..11e9a38 Binary files /dev/null and b/ClientTools/CliSpy.exe differ diff --git a/ClientTools/DeploymentMonitoringTool.exe b/ClientTools/DeploymentMonitoringTool.exe new file mode 100644 index 0000000..0f22859 Binary files /dev/null and b/ClientTools/DeploymentMonitoringTool.exe differ diff --git a/ClientTools/Microsoft.Diagnostics.Tracing.EventSource.dll b/ClientTools/Microsoft.Diagnostics.Tracing.EventSource.dll new file mode 100644 index 0000000..c390180 Binary files /dev/null and b/ClientTools/Microsoft.Diagnostics.Tracing.EventSource.dll differ diff --git a/ClientTools/PolicySpy.exe b/ClientTools/PolicySpy.exe new file mode 100644 index 0000000..f2018dd Binary files /dev/null and b/ClientTools/PolicySpy.exe differ diff --git a/ClientTools/PowerVwr.exe b/ClientTools/PowerVwr.exe new file mode 100644 index 0000000..9a305d9 Binary files /dev/null and b/ClientTools/PowerVwr.exe differ diff --git a/ClientTools/SendSchedule.exe b/ClientTools/SendSchedule.exe new file mode 100644 index 0000000..c9e9d3e Binary files /dev/null and b/ClientTools/SendSchedule.exe differ diff --git a/ClientTools/SendScheduleMessages.xml b/ClientTools/SendScheduleMessages.xml new file mode 100644 index 0000000..a34a7fa --- /dev/null +++ b/ClientTools/SendScheduleMessages.xml @@ -0,0 +1,298 @@ + + + + + + HARDWARE_INV_ACTION_ID + Hardware Inventory + + + + + SOFTWARE_INV_ACTION_ID + Software Inventory + + + + + DISCOVERY_INV_ACTION_ID + Discovery Inventory + + + + + FILE_COLLECTION_ACTION_ID + File Collection + + + + + IDMIF_COLLECTION_ACTION_ID + IDMIF Collection + + + + + CLIENT_MACHINE_AUTH_ACTION_ID + Client Machine Authentication + + + + + POLICYAGENT_REQUEST_MACHINE_ASSIGNMENTS_ID + Request Machine Assignments + + + + + POLICYAGENT_EVALUATE_MACHINE_POLICIES_ID + Evaluate Machine Policies + + + + + LS_SCHEDULEDCLEANUP_REFRESH_DEFAULT_MP_TASK_ID + Refresh Default MP Task + + + + + LS_SCHEDULEDCLEANUP_REFRESH_LOCATIONS_TASK_ID + LS (Location Service) Refresh Locations Task + + + + + LS_SCHEDULEDCLEANUP_TIMEOUT_REFRESH_TASK_ID + LS (Location Service) Timeout Refresh Task + + + + + POLICYAGENT_REQUEST_USER_ASSIGNMENTS_ID + Policy Agent Request Assignment (User) + + + + + POLICYAGENT_EVALUATE_USER_POLICIES_ID + Policy Agent Evaluate Assignment (User) + + + + + SWMTR_USER_REPORT_GENERATION_ID + Software Metering Generating Usage Report + + + + + SOURCE_UPDATE_MESSAGE_ID + Source Update Message + + + + + Schedule for clearing proxy settings cache + Clearing proxy settings cache + + + + + [Machine Policy schedules] PolicyAgent_Cleanup + Machine Policy Agent Cleanup + + + + + [User Policy schedules] PolicyAgent_Cleanup + User Policy Agent Cleanup + + + + + [Machine Policy schedules] PolicyAgent_RequestAssignments + Policy Agent Validate Machine Policy / Assignment + + + + + [User Policy schedules] PolicyAgent_RequestAssignments + Policy Agent Validate User Policy / Assignment + + + + + Schedule for retrying/refreshing certificates in AD on MP + Retrying/Refreshing certificates in AD on MP + + + + + PDP_STATUS_REPORTING_SCHEDULE_ID + Peer DP Status reporting + + + + + PDP_PENDING_PACKAGE_CHECK_SCHEDULE_ID + Peer DP Pending package check schedule + + + + + SUM_UPDATES_INSTALL_SCHEDULE_ID + SUM Updates install schedule + + + + + NAP_ACTION_ID + NAP action + + + + + HARDWARE_INV_POLICY_ACTION_ID + Hardware Inventory Collection Cycle + + + + + SOFTWARE_INV_POLICY_ACTION_ID + Software Inventory Collection Cycle + + + + + DISCOVERY_INV_POLICY_ACTION_ID + Discovery Data Collection Cycle + + + + + FILE_COLLECTION_POLICY_ACTION_ID + File Collection Cycle + + + + + IDMIF_COLLECTION_POLICY_ACTION_ID + IDMIF Collection Cycle + + + + + METRING_POLICY_ACTION_ID + Software Metering Usage Report Cycle + + + + + SOURCE_UPDATE_POLICY_ACTION_ID + Windows Installer Source List Update Cycle + + + + + SOFTWARE_UPDATES_POLICY_ACTION_ID + Software Updates Assignments Evaluation Cycle + + + + + PDP_MAINTENANCE_POLICY_ACTION_ID + Branch Distribution Point Maintenance Task + + + + + DCM_POLICY_ACTION_ID + DCM policy + + + + + STATE_SYSTEM_POLICY_BULKSEND_ACTION_ID + Send Unsent State Message + + + + + STATE_SYSTEM_POLICY_CACHECLEANOUT_ACTION_ID + State System policy cache cleanout + + + + + UPDATE_SOURCE_POLICY_ACTION_ID + Scan by Update Source + + + + + UPDATE_STORE_POLICY_ACTION_ID + Update Store Policy + + + + + STATE_SYSTEM_POLICY_BULKSEND_HIGH_ACTION_ID + State system policy bulk send high + + + + + STATE_SYSTEM_POLICY_BULKSEND_LOW_ACTION_ID + State system policy bulk send low + + + + + AMT_STATUS_CHECK_POLICY_ACTION_ID + AMT Status Check Policy + + + + + APPMAN_POLICY_ACTION_ID + Application manager policy action + + + + + APPMAN_USER_POLICY_ACTION_ID + Application manager user policy action + + + + + APPMAN_GLOBAL_EVALUATION_ACTION_ID + Application manager global evaluation action + + + + + PWRMGMT_START_SUMMARIZER_ID + Power management start summarizer + + + + + EP_DEPLOYMENT_REEVALUATE_ID + Endpoint deployment reevaluate + + + + + EP_AMPOLICY_REEVALUATE_ID + Endpoint AM policy reevaluate + + + + + EXTERNAL_EVENT_DETECTION_ID + External event detection + + + \ No newline at end of file diff --git a/ConfigMgrADMTemplates/ConfigMgrAssignment.adm b/ConfigMgrADMTemplates/ConfigMgrAssignment.adm new file mode 100644 index 0000000..320b909 Binary files /dev/null and b/ConfigMgrADMTemplates/ConfigMgrAssignment.adm differ diff --git a/ConfigMgrADMTemplates/ConfigMgrInstallation.adm b/ConfigMgrADMTemplates/ConfigMgrInstallation.adm new file mode 100644 index 0000000..9dc41c2 Binary files /dev/null and b/ConfigMgrADMTemplates/ConfigMgrInstallation.adm differ diff --git a/ContentLibraryCleanup/ContentLibraryCleanup.exe b/ContentLibraryCleanup/ContentLibraryCleanup.exe new file mode 100644 index 0000000..543aaa2 Binary files /dev/null and b/ContentLibraryCleanup/ContentLibraryCleanup.exe differ diff --git a/DesktopAnalyticsLogsCollector/DesktopAnalyticsLogsCollector.ps1 b/DesktopAnalyticsLogsCollector/DesktopAnalyticsLogsCollector.ps1 new file mode 100644 index 0000000..ddc9955 --- /dev/null +++ b/DesktopAnalyticsLogsCollector/DesktopAnalyticsLogsCollector.ps1 @@ -0,0 +1,1258 @@ +<# M365 Analytics Log Collector #> +#Requires -RunAsAdministrator +#---------------------------------------------------------------------------------------------------------- +# +# Parameter Declarations +# +#---------------------------------------------------------------------------------------------------------- + +Param( +# File share to store logs, the maximum length is 130 since the script would create sub folders and files +[Parameter(Position=1)] +[string]$LogPath, + +# LogMode == 0 log to console only +# LogMode == 1 log to file and console +# LogMode == 2 log to file only +[Parameter(Position=2)] +[Int16]$LogMode = 1, + +# CollectNetTrace == 0 to disable collect Net Trace, otherwise enable collect Net Trace. +[Parameter(Position=3)] +[Int16]$CollectNetTrace = 0, + +# CollectUTCTrace == 0 to disable collect UTC Trace, otherwise enable collect UTC Trace. +[Parameter(Position=4)] +[Int16]$CollectUTCTrace = 0 +) + +#---------------------------------------------------------------------------------------------------------- +# +# Startup +# +#---------------------------------------------------------------------------------------------------------- + +# Make sure we are running x64 PS on 64-bit OS. If not then start a x64 process of PowerShell +$powerShellHome = $PSHOME.ToLower() +if ([System.Environment]::Is64BitOperatingSystem -eq $true) +{ + if ([System.Environment]::Is64BitProcess -eq $false) + { + Write-Verbose "Launching x64 PowerShell" + $powerShellHome = $powerShellHome.Replace('syswow64','sysnative') + &"$powerShellHome\powershell.exe" -ExecutionPolicy AllSigned -NonInteractive -NoProfile $myInvocation.Line + exit $lastexistcode + } +} + +#---------------------------------------------------------------------------------------------------------- +# +# Parameter Intialization and Validation +# +#---------------------------------------------------------------------------------------------------------- + +# Parameter: $LogPath +if([String]::IsNullOrEmpty($LogPath) -or [String]::IsNullOrWhiteSpace($LogPath)) +{ + # Set to default value + $LogPath = "$Env:SystemDrive\M365AnalyticsLogs" +} +else +{ + Write-Verbose "Validating path length no more than 130: $LogPath" + $LogPath = $LogPath.Trim().TrimEnd('\') + if($LogPath.Length -gt 130) + { + throw "Failed to validate the length of the given path: $LogPath" + } + + # Validate parameter: $LogPath + Write-Verbose "Validating path format: $LogPath" + $validateResult = $false + + if((Test-Path $LogPath -IsValid) -eq $true) + { + $testSplitArray = $LogPath.Split(':') + + if($testSplitArray.Count -eq 1) + { + $validateResult = $true + } + elseif($testSplitArray.Count -eq 2) + { + $targetDrv = Get-PSDrive -Name $testSplitArray[0] + + if($targetDrv -ne $null) + { + $fileDrv = Get-PSProvider -PSProvider FileSystem + + if($fileDrv -ne $null) + { + if($fileDrv.Drives.Contains($targetDrv) -eq $true) + { + $validateResult = $true + } + } + } + } + } + + if($validateResult -eq $false) + { + throw "Failed to validate the format of the given path: $LogPath" + } +} + +Write-Verbose "Output Path = $LogPath" + +# Parameter: $LogMode +Write-Verbose "Validating log mode(0|1|2): $LogMode" + +if(($LogMode -ne 0) -and ($LogMode -ne 1) -and ($LogMode -ne 2)) +{ + throw "Failed to validate the given log mode: $LogMode" +} + +Write-Verbose "Log Mode = $LogMode" + +# Parameter: $CollectNetTrace +if($CollectNetTrace -eq 0) +{ + Write-Verbose "Collect Net Trace = No" +} +else +{ + Write-Verbose "Collect Net Trace = Yes" +} + +# Parameter: $CollectUTCTrace +if($CollectUTCTrace -eq 0) +{ + Write-Verbose "Collect UTC Trace = No" +} +else +{ + Write-Verbose "Collect UTC Trace = Yes" +} + + +#---------------------------------------------------------------------------------------------------------- +# +# Global Variables +# +#---------------------------------------------------------------------------------------------------------- + +# Temporary file to store providers +$global:tempProviderFile = [System.IO.Path]::GetTempFileName() + +# Providers info +$global:providersText = @" +{43ac453b-97cd-4b51-4376-db7c9bb963ac} 0 255 +{56DC463B-97E8-4B59-E836-AB7C9BB96301} 0 255 +"@ + +# Script folder root +$global:scriptRoot = Split-Path -Path $MyInvocation.MyCommand.Path + +# Set the exit code to the first exception exit code +$global:errorCode = [string]::Empty; + +# Total error count while running the script +[int]$global:errorCount = 0; + +# OS version +$global:osVersion = (Get-WmiObject Win32_OperatingSystem).Version + +# OS name +$global:operatingSystemName = (Get-WmiObject Win32_OperatingSystem).Name + +# OS Architecture +$global:osArchitecture = $ENV:Processor_Architecture + +# Global utc trace name +$global:timeStart=Get-Date +$global:timeStartString=$global:timeStart.ToString("yy_MM_dd_HH_mm_ss") +$global:utcTraceName = "utctrace" + $global:timeStartString + +#---------------------------------------------------------------------------------------------------------------- +# +# Main +# +#---------------------------------------------------------------------------------------------------------------- + +$main = { + Try + { + # Initialize provider file + InitializeProviderFile + + # Quit if System variable WINDIR is not set + Try + { + $global:windir=[System.Environment]::ExpandEnvironmentVariables("%WINDIR%") + } + Catch + { + $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult + Write-Error "Failure finding system variable WINDIR. $exceptionDetails Error 23" + [System.Environment]::Exit(23) + } + + # Get Sqm Machine Id + Get-SqmID + + # Get ConfigMgr Client Version + Get-CmClientVersion + + # Create the log file if logMode requires logging to file. + CreateLogFile + + Log "Starting M365AnalyticsLogsCollector" + Log "UTC DateTime: $global:utcDate" + Log "OS: $global:osVersion" + Log "Architecture: $global:osArchitecture" + Log "Machine Sqm Id: $global:sClientId" + Log "Configuration Manager Client Version: $global:smsClientVersion" + + # Sets VerboseMode to enable appraiser logging value to the registry + SetAppraiserVerboseMode + + # Sets RequestAllAppraiserVersions key + if($global:osBuildNumber -lt 10240) + { + SetRequestAllAppraiserVersions + } + + if($CollectNetTrace -ne 0) + { + # Start Netsh trace + StartNetworkTrace + } + + if($CollectUTCTrace -ne 0) + { + #Start UTC trace + StartUTCTrace + } + + # restart Diagtrack service + RestartDiagtrack + + # Run Connectivity Tool + RunConnectivityDiagnosis + + # Run Census + RunCensus + + if($CollectNetTrace -ne 0) + { + # Stop Netsh trace + StopNetworkTrace + } + + if($CollectUTCTrace -ne 0) + { + # Stop UTC trace + StopUTCTrace + } + + # Run Appraiser + RunAppraiser + + # Collect the logs + Try + { + Log "Running diagnose_internal to collect logs" + DiagnoseInternal $global:logFolder + } + Catch + { + Log "diagnose_internal failed with unexpected exception" "Error" "37" "diagnose_internal" $_.Exception.HResult $_.Exception.Message + } + + # Collect M365AHandler logs + CollectM365AHandlerLog + + if($global:errorCount -eq 0) + { + Log "Script finished successfully" + Exit(0) + } + } + Catch + { + Log "Unexpected error occured while executing the script" "Error" "1" "UnExpectedException" $_.Exception.HResult $_.Exception.Message + Log "Script failed" "Failure" "1" "ScriptEnd" + [System.Environment]::Exit(1) + } + Finally + { + # Disable appriaser verbose mode after running the appriaser + DisableAppraiserVerboseMode + + # Restart Diagtrack service + RestartDiagtrack + + # Cleanup temporary file + Remove-Item -Path $global:tempProviderFile + } +} + +#---------------------------------------------------------------------------------------------------------- +# +# Function Definitions +# +#---------------------------------------------------------------------------------------------------------- + +function InitializeProviderFile +{ + $global:providersText | Out-File $global:tempProviderFile -Append -Encoding ascii +} + +function DiagnoseInternal($diaLogPath) +{ + if ((test-path $diaLogPath) -eq $false) + { + New-Item -ItemType Directory -Path $diaLogPath -Force | Out-Null + } + + Get-WmiObject -Query 'select * from win32_quickfixengineering' | sort hotfixid | Out-File "$diaLogPath\installedKBs.txt" -Force + + ROBOCOPY "$env:windir\appcompat" "$diaLogPath\appcompat" *.* /E /XF *.hve* /R:1 | Out-Null + + regedit /e "$diaLogPath\RegAppCompatFlags.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags" + regedit /e "$diaLogPath\RegCensus.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Census" + regedit /e "$diaLogPath\RegSQM.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQMClient" + regedit /e "$diaLogPath\RegDiagTrack.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack" + regedit /e "$diaLogPath\RegPoliciesDataCollection.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" + regedit /e "$diaLogPath\RegDataCollection.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection" +} + +function Get-SqmID +{ + Try + { + $sqmID = (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SQMClient -Name MachineId).MachineId + $global:sClientId = "s:" + $sqmID.Substring(1).Replace("}", "") + } + Catch + { + $hexHresult = "{0:X}" -f $_.Exception.HResult + $exceptionMessage = $_.Exception.Message + Write-Error "Get-SqmID failed with unexpected exception.`nException: $exceptionMessage HResult: 0x$hexHresult" + [System.Environment]::Exit(38) + } +} + +function Get-CmClientVersion +{ + try { + $propertyPath = "HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client" + $propertyName = "SmsClientVersion" + if (Test-Path -Path $propertyPath) + { + $property = Get-ItemProperty -Path $propertyPath -Name $propertyName -ErrorAction SilentlyContinue + if ($null -eq $property) + { + Log "Get-CmClientVersion: Could not find registry value $propertyName at path $propertyPath" "Warning" + } + else { + $global:smsClientVersion = $property.SmsClientVersion + } + } + else + { + Log "Get-CmClientVersion: Could not find registry key $propertyPath" "Warning" + } + } + catch { + Log "Get-CmClientVersion: Error getting $propertyName registry value at path $propertyPath" "Warning" $null "Get-CmClientVersion" $_.Exception.HResult $_.Exception.Message + } +} + +function CreateLogFile +{ + Write-Verbose "Creating output folder" + $timeStart=Get-Date + $timeStartString=$timeStart.ToString("yy_MM_dd_HH_mm_ss") + $logFolderName = "M365AnalyticsLogs_" + $timeStartString + $global:logFolder = $logPath +"\"+$logFolderName + + Try + { + $outputFolder = New-Item $global:logFolder -type directory + Write-Host "Output folder created successfully: $outputFolder" + } + Catch + { + $hexHresult = "{0:X}" -f $_.Exception.HResult + $exceptionMessage = $_.Exception.Message + Write-Error "Could not create output folder at the given logPath: $LogPath`nException: $exceptionMessage HResult: 0x$hexHresult" + [System.Environment]::Exit(28) + } + + if($LogMode -ne 0) + { + Write-Verbose "Creating Log File" + $fileName = $logFolderName+".txt" + $global:logFile=$global:logFolder+"\"+$fileName + + Try + { + New-Item $global:logFile -type file | Out-Null + Write-Verbose "Log File created successfully: $global:logFile" + } + Catch + { + $hexHresult = "{0:X}" -f $_.Exception.HResult + $exceptionMessage = $_.Exception.Message + Write-Error "Could not create log file at the given logPath: $LogPath`nException: $exceptionMessage HResult: 0x$hexHresult" + [System.Environment]::Exit(28) + } + } +} + +function StartNetworkTrace +{ + Try + { + Log "Start: StartNetworkTrace" + netsh trace start capture=yes scenario=InternetClient provider=Microsoft-Windows-CAPI2 traceFile="$global:logFolder\nettrace.etl" | Out-Null + Log "Passed: StartNetworkTrace" + } + Catch + { + Log "StartNetworkTrace failed with an unexpected exception." "Error" "2001" "StartNetworkTrace" $_.Exception.HResult $_.Exception.Message + } +} + +function StartUTCTrace +{ + Try + { + Log "Start: StartUTCTrace" + + $logmanFolder = $null + if($global:osArchitecture.contains("64")) + { + $logmanFolder = "$global:windir\system32\" + } + else + { + $logmanFolder = "$global:windir\system32\" + } + + & logman start $global:utcTraceName -pf "$global:tempProviderFile" -bs 32768 -nb 128 -ets -o "$global:logFolder\DAUTCtrace.etl" | Out-Null + + Log "Passed: StartUTCTrace" + } + Catch + { + Log "StartUTCTrace failed with an unexpected exception." "Error" "2003" "StartUTCTrace" $_.Exception.HResult $_.Exception.Message + } +} + +function StopNetworkTrace +{ + Try + { + Log "Start: StopNetworkTrace" + netsh trace stop | Out-Null + Log "Passed: StopNetworkTrace" + } + Catch + { + Log "StopNetworkTrace failed with an unexpected exception." "Error" "2002" "StopNetworkTrace" $_.Exception.HResult $_.Exception.Message + } +} + +function StopUTCTrace +{ + Try + { + Log "Start: StopUTCTrace" + + $logmanFolder = $null + if($global:osArchitecture.contains("64")) + { + $logmanFolder = "$global:windir\system32\" + } + else + { + $logmanFolder = "$global:windir\system32\" + } + + & logman.exe stop $global:utcTraceName -ets | Out-Null + + Log "Passed: StopUTCTrace" + Log "Collect DownloadedSettings to log folder" + & takeown -f "$Env:ProgramData\Microsoft\Diagnosis\DownloadedSettings\*" | Out-Null + & icacls "$Env:ProgramData\Microsoft\Diagnosis\DownloadedSettings\*" /grant administrators:f | Out-Null + New-Item $global:logFolder\DownloadedSettings -type directory | Out-Null + Copy-Item "$Env:ProgramData\Microsoft\Diagnosis\DownloadedSettings\*" -Destination $global:logFolder\DownloadedSettings | Out-Null + } + Catch + { + Log "StopUTCTrace failed with an unexpected exception." "Error" "2004" "StopUTCTrace" $_.Exception.HResult $_.Exception.Message + } + +} + +function RestartDiagtrack +{ + Log "Start: RestartDiagtrack" + Try + { + & Net stop diagtrack | Out-Null + & Reg add hklm\software\microsoft\windows\currentversion\diagnostics\diagtrack\testhooks /v ResetEventStore /t REG_DWORD /d 1 /f | Out-Null + & Net start diagtrack | Out-Null + & Reg delete hklm\software\microsoft\windows\currentversion\diagnostics\diagtrack\testhooks /v ResetEventStore /f | Out-Null + Log "Passed: RestartDiagtrack" + } + Catch + { + Log "RestartDiagtrack failed to execute - script will continue." "Warning" $null "RestartDiagtrack" $_.Exception.HResult $_.Exception.Message + return + } +} + +function RunConnectivityDiagnosis +{ + Log "Start: RunConnectivityDiagnosis" + Try + { + $propertyPath = "HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" + if(Test-Path -Path $propertyPath) + { + if ((Get-ItemProperty -Path $propertyPath -Name LogDirectory -ErrorAction SilentlyContinue) -eq $null) + { + Log "Could not find registry key LogDirectory at path HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" + } + else + { + Try + { + $logDirectoryKeyM365 = Get-ItemProperty -Path $propertyPath -Name LogDirectory + $logDirectoryM365 = $logDirectoryKeyM365.LogDirectory + $connectivitydiagnosis = $logDirectoryM365.ToString().Replace("Logs", "settingsplugins\connectivitydiagnosis.exe") + + if((Test-Path -Path $connectivitydiagnosis) -eq $False) + { + $connectivitydiagnosis = $logDirectoryM365.ToString().Replace("Logs", "connectivitydiagnosis.exe") + } + + #Log $connectivitydiagnosis + #Log $logDirectoryM365 + $currentDirectory = $global:scriptRoot + & cd $global:logFolder + & timeout 5 | Out-Null + & $connectivitydiagnosis -verbose > ConnectivityDiagnosis.txt + & timeout 5 | Out-Null + & cd $currentDirectory + Log "Passed: RunConnectivityDiagnosis" + } + Catch + { + Log "Error running RunConnectivityDiagnosis" "Warning" $null "RunConnectivityDiagnosis" $_.Exception.HResult $_.Exception.Message + return + } + } + } + } + Catch + { + Log "Error running RunConnectivityDiagnosis" "Warning" $null "RunConnectivityDiagnosis" $_.Exception.HResult $_.Exception.Message + } +} + +function SetAppraiserVerboseMode +{ + Log "Start: SetAppraiserVerboseMode" + Try + { + $vAppraiserPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Appraiser" + Log "Enabling Appraiser logs for debugging by setting VerboseMode property to 1 at the registry key path: $vAppraiserPath" + if ((Get-ItemProperty -Path $vAppraiserPath -Name VerboseMode -ErrorAction SilentlyContinue) -eq $null) + { + Try + { + New-ItemProperty -Path $vAppraiserPath -Name VerboseMode -PropertyType DWord -Value 1 | Out-Null + } + Catch + { + Log "SetAppraiserVerboseMode failed to write the VerboseMode property at registry key $vAppraiserPath. This is not fatal, script will continue." "Warning" $null "SetAppraiserVerboseMode" $_.Exception.HResult $_.Exception.Message + return + } + } + else + { + Log "Appraiser verbose mode is already enabled" + } + + Log "Enabling Appraiser logs for debugging by setting TestHooksEnabled property to 1 at the registry key path: $vAppraiserPath" + if ((Get-ItemProperty -Path $vAppraiserPath -Name TestHooksEnabled -ErrorAction SilentlyContinue) -eq $null) + { + Try + { + New-ItemProperty -Path $vAppraiserPath -Name TestHooksEnabled -PropertyType DWord -Value 1 | Out-Null + } + Catch + { + Log "SetAppraiserVerboseMode failed to write the TestHooksEnabled property at registry key $vAppraiserPath. This is not fatal, script will continue." "Warning" $null "SetAppraiserVerboseMode" $_.Exception.HResult $_.Exception.Message + return + } + } + else + { + Log "Appraiser TestHooksEnabled property is already set" + } + + Log "Passed: SetAppraiserVerboseMode" + } + Catch + { + Log "SetAppraiserVerboseMode failed with unexpected exception. This is not fatal, script will continue." "Warning" $null "SetAppraiserVerboseMode" $_.Exception.HResult $_.Exception.Message + } +} + +function DisableAppraiserVerboseMode +{ + Log "Start: DisableAppraiserVerboseMode" + Try + { + $vAppraiserPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Appraiser" + if ((Get-ItemProperty -Path $vAppraiserPath -Name VerboseMode -ErrorAction SilentlyContinue) -ne $null) + { + Try + { + Remove-ItemProperty -Path $vAppraiserPath -Name VerboseMode + } + Catch + { + Log "DisableAppraiserVerboseMode failed deleting VerboseMode property at registry key path: $vAppraiserPath. This is not fatal, script will continue." "Warning" $null "DisableAppraiserVerboseMode" $_.Exception.HResult $_.Exception.Message + } + } + else + { + Log "Appraiser VerboseMode key already deleted" + } + + Log "Passed: DisableAppraiserVerboseMode" + } + Catch + { + Log "DisableAppraiserVerboseMode failed with unexpected exception. This is not fatal, script will continue." "Warning" $null "DisableAppraiserVerboseMode" $_.Exception.HResult $_.Exception.Message + } +} + +function SetRequestAllAppraiserVersions +{ + Log "Start: SetRequestAllAppraiserVersions" + Try + { + $propertyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" + $propertyGPOPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" + if(Test-Path -Path $propertyPath) + { + if ((Get-ItemProperty -Path $propertyPath -Name RequestAllAppraiserVersions -ErrorAction SilentlyContinue) -eq $null) + { + Try + { + New-ItemProperty -Path $propertyPath -Name RequestAllAppraiserVersions -PropertyType DWord -Value 1 | Out-Null + } + Catch + { + Log "SetRequestAllAppraiserVersions failed setting RequestAllAppraiserVersions property at registry key path: $propertyPath" "Error" "20" "SetRequestAllAppraiserVersions" $_.Exception.HResult $_.Exception.Message + return + } + } + else + { + Try + { + Set-ItemProperty -Path $propertyPath -Name RequestAllAppraiserVersions -Value 1 + } + Catch + { + Log "SetRequestAllAppraiserVersions failed setting RequestAllAppraiserVersions property at registry key path: $propertyPath" "Error" "20" "SetRequestAllAppraiserVersions" $_.Exception.HResult $_.Exception.Message + return + } + } + } + + if(Test-Path -Path $propertyGPOPath) + { + if ((Get-ItemProperty -Path $propertyGPOPath -Name RequestAllAppraiserVersions -ErrorAction SilentlyContinue) -eq $null) + { + Try + { + New-ItemProperty -Path $propertyGPOPath -Name RequestAllAppraiserVersions -PropertyType DWord -Value 1 | Out-Null + } + Catch + { + Log "SetRequestAllAppraiserVersions failed setting RequestAllAppraiserVersions property at registry key path: $propertyGPOPath" "Error" "20" "SetRequestAllAppraiserVersions" $_.Exception.HResult $_.Exception.Message + return + } + } + else + { + Try + { + Set-ItemProperty -Path $propertyPath -Name RequestAllAppraiserVersions -Value 1 + } + Catch + { + Log "SetRequestAllAppraiserVersions failed setting RequestAllAppraiserVersions property at registry key path: $propertyGPOPath" "Error" "20" "SetRequestAllAppraiserVersions" $_.Exception.HResult $_.Exception.Message + return + } + } + } + + Log "Passed: SetRequestAllAppraiserVersions" + } + Catch + { + Log "SetRequestAllAppraiserVersions failed with unexpected exception." "Error" "21" "SetRequestAllAppraiserVersions" $_.Exception.HResult $_.Exception.Message + } +} + +function RunAppraiser +{ + Try + { + Log "Start: RunAppraiser" + Log "Attempting to run inventory...This may take a few minutes to complete, please do not cancel the script." + + do + { + CompatTelRunner.exe -m:appraiser.dll -f:DoScheduledTelemetryRun ent | out-null + $appraiserLastExitCode = $LASTEXITCODE + $appraiserLastExitCodeHex = "{0:X}" -f $appraiserLastExitCode + + if($appraiserLastExitCode -eq 0x80070021) + { + Log "RunAppraiser needs to run CompatTelRunner.exe, but it is already running. Waiting for 60 seconds before retry." + Start-Sleep -Seconds 60 + } + else + { + break + } + + $NoOfAppraiserRetries = $NoOfAppraiserRetries - 1 + + }While($NoOfAppraiserRetries -gt 0) + + if ($appraiserLastExitCode -ne 0x0) + { + if ($appraiserLastExitCode -lt 0x0) + { + Log "RunAppraiser failed. CompatTelRunner.exe exited with last error code: 0x$appraiserLastExitCodeHex." "Error" "33" "RunAppraiser" "0x$appraiserLastExitCodeHex" "CompatTelRunner.exe returned with an error code." + } + else + { + Log "RunAppraiser succeeded with a return code: 0x$appraiserLastExitCodeHex." + } + } + else + { + Log "Passed: RunAppraiser" + } + } + Catch + { + Log "RunAppraiser failed with unexpected exception." "Error" "22" "RunAppraiser" $_.Exception.HResult $_.Exception.Message + } +} + +function RunCensus +{ + Log "Start: RunCensus" + Try + { + $censusRunRegKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Census" + + if($(Test-Path $censusRunRegKey) -eq $false) + { + New-Item -Path $censusRunRegKey -ItemType Key | Out-Null + } + + # Turn Census FullSync mode on + Log "Setting property: FullSync to value 1 at registry key path $censusRunRegKey to turn on Census FullSync mode" + if ((Get-ItemProperty -Path $censusRunRegKey -Name FullSync -ErrorAction SilentlyContinue) -eq $null) + { + New-ItemProperty -Path $censusRunRegKey -Name FullSync -PropertyType DWord -Value 1 | Out-Null + } + else + { + Set-ItemProperty -Path $censusRunRegKey -Name FullSync -Value 1 + } + + + # Run Census and validate the run + # Census invocation commands are different for Windows 10 and Downlevel + [int] $runCounterBefore = (Get-ItemProperty -Path $censusRunRegKey).RunCounter + + if($runCounterBefore -eq $null) + { + New-ItemProperty -Path $censusRunRegKey -Name RunCounter -PropertyType DWord -Value 0 | Out-Null + } + + if($global:operatingSystemName.ToLower().Contains("windows 10")) + { + $censusExe = "$global:windir\system32\devicecensus.exe" + if(Test-Path -Path $censusExe) + { + Log "Running $censusExe" + & $censusExe | Out-Null + } + else + { + Log "$censusExe path not found" "Error" "52" "RunCensus" + return + } + } + else + { + CompatTelRunner.exe -m:generaltel.dll -f:DoCensusRun | Out-Null + } + + [int] $runCounterAfter = (Get-ItemProperty -Path $censusRunRegKey).RunCounter + $returnCode = (Get-ItemProperty -Path $censusRunRegKey).ReturnCode + $startTime = Get-Date (Get-ItemProperty -Path $censusRunRegKey).StartTime + $endTime = Get-Date (Get-ItemProperty -Path $censusRunRegKey).EndTime + + if($returnCode -eq 0) + { + if($runCounterAfter -gt $runCounterBefore -and $endTime -gt $startTime) + { + Log "Passed: RunCensus" + } + else + { + Log "Census did not run correctly. Registray data at $censusRunRegKey are: RunCounter Before trying to run Census:$runCounterBefore, RunCounter after trying to run Census:$runCounterAfter, ReturnCode:$returnCode, UTC StartTime:$startTime, UTC EndTime:$endTime" "Warning" $null "RunCensus" + } + } + else + { + Log "Census returned a non zero ReturnCode:$returnCode" "Warning" $null "RunCensus" + } + + # Turn Census FullSync mode off + Log "Resetting property: FullSync to value 0 at registry key path $censusRunRegKey to turn off Census FullSync mode" + Set-ItemProperty -Path $censusRunRegKey -Name FullSync -Value 0 + + } + Catch + { + Log "RunCensus failed with unexpected exception" "Error" "51" "RunCensus" $_.Exception.HResult $_.Exception.Message + } +} + +function CollectM365AHandlerLog +{ + Log "Start: CollectM365AHandlerLog" + Try + { + $propertyPath = "HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" + if(Test-Path -Path $propertyPath) + { + if ((Get-ItemProperty -Path $propertyPath -Name LogDirectory -ErrorAction SilentlyContinue) -eq $null) + { + Log "Could not find registry key LogDirectory at path HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" + } + else + { + Try + { + $logDirectoryKeyM365 = Get-ItemProperty -Path $propertyPath -Name LogDirectory + $logDirectoryM365 = $logDirectoryKeyM365.LogDirectory + Copy-Item "$logDirectoryM365\M365AHandler.log" -Destination $global:logFolder | Out-Null + Log "Passed: CollectM365AHandlerLog" + } + Catch + { + Log "Error getting logs at registry key LogDirectory at path HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" "Warning" $null "CollectM365AHandlerLog" $_.Exception.HResult $_.Exception.Message + return + } + } + } + } + Catch + { + Log "Error getting logs at registry key LogDirectory at path HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" "Warning" $null "CollectM365AHandlerLog" $_.Exception.HResult $_.Exception.Message + } + +} + +function Log($logMessage, $logLevel, $errorCode, $operation, $exceptionHresult, $exceptionMessage) +{ + $global:logDate = Get-Date -Format s + $global:utcDate = ((Get-Date).ToUniversalTime()).ToString("yyyy-MM-ddTHH:mm:ssZ") + $logMessageForAppInsights = $logMessage + + if(($logLevel -eq $null) -or ($logLevel -eq [string]::Empty)) + { + $logLevel = "Info" + } + + if($logLevel -eq "Error") + { + # check and update the errorCode (the script will exit with the first errorCode) + if(($errorCode -ne $null) -and ($errorCode -ne [string]::Empty)) + { + if(($global:errorCode -eq $null) -or ($global:errorCode -eq [string]::Empty)) + { + $global:errorCode = $errorCode + } + + $logMessage = "ErrorCode " + $errorCode + " : " + $logMessage + } + + if($exceptionHresult -ne $null) + { + $logMessage = $logMessage + " HResult: " + $exceptionHresult + } + + if($exceptionMessage -ne $null) + { + $logMessage = $logMessage + " ExceptionMessage: " + $exceptionMessage + } + + $global:errorCount++ + } + elseif($logLevel -eq "Exception") + { + if($exceptionHresult -ne $null) + { + $logMessage = $logMessage + " HResult: " + $exceptionHresult + } + + if($exceptionMessage -ne $null) + { + $logMessage = $logMessage + " ExceptionMessage: " + $exceptionMessage + } + } + elseif($logLevel -eq "Warning") + { + if($exceptionHresult -ne $null) + { + $logMessage = $logMessage + " HResult: " + $exceptionHresult + } + + if($exceptionMessage -ne $null) + { + $logMessage = $logMessage + " ExceptionMessage: " + $exceptionMessage + } + } + + if ($LogMode -eq 0) + { + Try + { + WriteLogToConsole $logLevel $logMessage + } + Catch + { + # Error when logging to console + $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult + $message = "Error when logging to consloe." + Write-Error "$message`n$exceptionDetails" + SendEventToAppInsights "logging" $message "Failure" $global:utcDate "2" $_.Exception.HResult $_.Exception.Message + [System.Environment]::Exit(2) + } + } + elseif ($LogMode -eq 1) + { + Try + { + WriteLogToConsole $logLevel $logMessage + Add-Content $global:logFile "$global:logDate : $logLevel : $logMessage" + } + Catch + { + # Error when logging to console and file + $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult + $message = "Error when logging to consloe and file." + Write-Error "$message`n$exceptionDetails" + SendEventToAppInsights "logging" $message "Failure" $global:utcDate "3" $_.Exception.HResult $_.Exception.Message + [System.Environment]::Exit(3) + } + } + elseif ($LogMode -eq 2) + { + Try + { + Add-Content $global:logFile "$global:logDate : $logLevel : $logMessage" + } + Catch + { + # Error when logging to file + $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult + $message = "Error when logging to file." + Write-Error "$message`n$exceptionDetails" + SendEventToAppInsights "logging" $message "Failure" $global:utcDate "4" $_.Exception.HResult $_.Exception.Message + [System.Environment]::Exit(4) + } + } + else + { + Try + { + WriteLogToConsole $logLevel $logMessage + Add-Content $global:logFile "$global:logDate : $logLevel : $logMessage" + } + Catch + { + # Error when logging to console and file + $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult + $message = "Error when logging to consloe and file." + Write-Error "$message`n$exceptionDetails" + SendEventToAppInsights "logging" $message "Failure" $global:utcDate "5" $_.Exception.HResult $_.Exception.Message + [System.Environment]::Exit(5) + } + } +} + +function WriteLogToConsole($logLevel, $logMessage) +{ + switch ($logLevel) + { + "Error" + { + Write-Error "$global:logDate : $logMessage"; Break + } + "Exception" + { + Write-Error "$global:logDate : $logMessage"; Break + } + "Warning" + { + Write-Warning "$global:logDate : $logMessage"; Break + } + default + { + Write-Host "$global:logDate : $logMessage"; Break + } + } +} + +# Calling the main function +&$main + +# SIG # Begin signature block +# MIIoAgYJKoZIhvcNAQcCoIIn8zCCJ+8CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBIE+lkqmSnrxsW +# 2upP9cl3n3z3Xa6n76xQ00V6M5n8n6CCDYUwggYDMIID66ADAgECAhMzAAADri01 +# UchTj1UdAAAAAAOuMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwODU5WhcNMjQxMTE0MTkwODU5WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQD0IPymNjfDEKg+YyE6SjDvJwKW1+pieqTjAY0CnOHZ1Nj5irGjNZPMlQ4HfxXG +# yAVCZcEWE4x2sZgam872R1s0+TAelOtbqFmoW4suJHAYoTHhkznNVKpscm5fZ899 +# QnReZv5WtWwbD8HAFXbPPStW2JKCqPcZ54Y6wbuWV9bKtKPImqbkMcTejTgEAj82 +# 6GQc6/Th66Koka8cUIvz59e/IP04DGrh9wkq2jIFvQ8EDegw1B4KyJTIs76+hmpV +# M5SwBZjRs3liOQrierkNVo11WuujB3kBf2CbPoP9MlOyyezqkMIbTRj4OHeKlamd +# WaSFhwHLJRIQpfc8sLwOSIBBAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhx/vdKmXhwc4WiWXbsf0I53h8T8w +# VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh +# dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMTgzNjAfBgNVHSMEGDAW +# gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw +# MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov +# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx +# XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB +# AGrJYDUS7s8o0yNprGXRXuAnRcHKxSjFmW4wclcUTYsQZkhnbMwthWM6cAYb/h2W +# 5GNKtlmj/y/CThe3y/o0EH2h+jwfU/9eJ0fK1ZO/2WD0xi777qU+a7l8KjMPdwjY +# 0tk9bYEGEZfYPRHy1AGPQVuZlG4i5ymJDsMrcIcqV8pxzsw/yk/O4y/nlOjHz4oV +# APU0br5t9tgD8E08GSDi3I6H57Ftod9w26h0MlQiOr10Xqhr5iPLS7SlQwj8HW37 +# ybqsmjQpKhmWul6xiXSNGGm36GarHy4Q1egYlxhlUnk3ZKSr3QtWIo1GGL03hT57 +# xzjL25fKiZQX/q+II8nuG5M0Qmjvl6Egltr4hZ3e3FQRzRHfLoNPq3ELpxbWdH8t +# Nuj0j/x9Crnfwbki8n57mJKI5JVWRWTSLmbTcDDLkTZlJLg9V1BIJwXGY3i2kR9i +# 5HsADL8YlW0gMWVSlKB1eiSlK6LmFi0rVH16dde+j5T/EaQtFz6qngN7d1lvO7uk +# 6rtX+MLKG4LDRsQgBTi6sIYiKntMjoYFHMPvI/OMUip5ljtLitVbkFGfagSqmbxK +# 7rJMhC8wiTzHanBg1Rrbff1niBbnFbbV4UDmYumjs1FIpFCazk6AADXxoKCo5TsO +# zSHqr9gHgGYQC2hMyX9MGLIpowYCURx3L7kUiGbOiMwaMIIHejCCBWKgAwIBAgIK +# YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV +# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv +# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm +# aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw +# OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE +# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD +# VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG +# 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la +# UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc +# 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D +# dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ +# lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk +# kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 +# A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd +# X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL +# 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd +# sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 +# T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS +# 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI +# bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL +# BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD +# uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv +# c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF +# BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h +# cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA +# YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn +# 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 +# v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b +# pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ +# KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy +# CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp +# mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi +# hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb +# BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS +# oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL +# gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX +# cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGdMwghnPAgEBMIGVMH4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p +# Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAAOuLTVRyFOPVR0AAAAA +# A64wDQYJYIZIAWUDBAIBBQCggd4wGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw +# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIMK3 +# faqKQD4G7qVdjnlYCcOT7ptJNIWBvSzhUCNnblNkMHIGCisGAQQBgjcCAQwxZDBi +# oESAQgBEAGUAcwBrAHQAbwBwAEEAbgBhAGwAeQB0AGkAYwBzAEwAbwBnAHMAQwBv +# AGwAbABlAGMAdABvAHIALgBwAHMAMaEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20wDQYJKoZIhvcNAQEBBQAEggEAzypMT9O9UC3+hJ4aqyj63LA4eG1yjOHc/Y2J +# OtqortoqXycVSI8rjfLYH9xu84U77YschS9f5nPEGfXhgf2dcMNbpva0ANbOMytn +# rMKEhWgz8WZeWhiKOskP6rRil365jjrEzaw3xXQIsvoaEys5+WzKd/pVMTX3HMms +# vDemXn/JPnXLQGPovGw8md8AtyM+Zo53pvVpu6ZJf7czXQpRXeLz12QIE9m+uY78 +# 1RfJFg2R2kn1zkAedPPsVL5szITAY8t8oUjZyEd71xTw22rkD6ak0rgcgPiBNTC9 +# hINCJHV0pdcQs3wt4X02Mc1+X7au7GDhBuQy3HLAPNFzrOjeDqGCFy0wghcpBgor +# BgEEAYI3AwMBMYIXGTCCFxUGCSqGSIb3DQEHAqCCFwYwghcCAgEDMQ8wDQYJYIZI +# AWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFEMIIBQAIBAQYKKwYBBAGE +# WQoDATAxMA0GCWCGSAFlAwQCAQUABCChl/7qbI6omZ+csG323sGjozGE77HHxLRe +# Xw+WY9dnOAIGZjOhcVduGBMyMDI0MDUwMjIwNTU1Mi40NTVaMASAAgH0oIHYpIHV +# MIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQL +# EyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsT +# HVRoYWxlcyBUU1MgRVNOOjJBRDQtNEI5Mi1GQTAxMSUwIwYDVQQDExxNaWNyb3Nv +# ZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRfDCCBycwggUPoAMCAQICEzMAAAHenkie +# lp8oRD0AAQAAAd4wDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNV +# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv +# c29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg +# UENBIDIwMTAwHhcNMjMxMDEyMTkwNzEyWhcNMjUwMTEwMTkwNzEyWjCB0jELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9z +# b2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMg +# VFNTIEVTTjoyQUQ0LTRCOTItRkEwMTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALSB +# 9ByF9UIDhA6xFrOniw/xsDl8sSi9rOCOXSSO4VMQjnNGAo5VHx0iijMEMH9LY2SU +# IBkVQS0Ml6kR+TagkUPbaEpwjhQ1mprhRgJT/jlSnic42VDAo0en4JI6xnXoAoWo +# KySY8/ROIKdpphgI7OJb4XHk1P3sX2pNZ32LDY1ktchK1/hWyPlblaXAHRu0E3yn +# vwrS8/bcorANO6DjuysyS9zUmr+w3H3AEvSgs2ReuLj2pkBcfW1UPCFudLd7IPZ2 +# RC4odQcEPnY12jypYPnS6yZAs0pLpq0KRFUyB1x6x6OU73sudiHON16mE0l6LLT9 +# OmGo0S94Bxg3N/3aE6fUbnVoemVc7FkFLum8KkZcbQ7cOHSAWGJxdCvo5OtUtRdS +# qf85FklCXIIkg4sm7nM9TktUVfO0kp6kx7mysgD0Qrxx6/5oaqnwOTWLNzK+BCi1 +# G7nUD1pteuXvQp8fE1KpTjnG/1OJeehwKNNPjGt98V0BmogZTe3SxBkOeOQyLA++ +# 5Hyg/L68pe+DrZoZPXJaGU/iBiFmL+ul/Oi3d83zLAHlHQmH/VGNBfRwP+ixvqhy +# k/EebwuXVJY+rTyfbRfuh9n0AaMhhNxxg6tGKyZS4EAEiDxrF9mAZEy8e8rf6dlK +# IX5d3aQLo9fDda1ZTOw+XAcAvj2/N3DLVGZlHnHlAgMBAAGjggFJMIIBRTAdBgNV +# HQ4EFgQUazAmbxseaapgdxzK8Os+naPQEsgwHwYDVR0jBBgwFoAUn6cVXQBeYl2D +# 9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUy +# MDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDov +# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1l +# LVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB +# Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQAD +# ggIBAOKUwHsXDacGOvUIgs5HDgPs0LZ1qyHS6C6wfKlLaD36tZfbWt1x+GMiazSu +# y+GsxiVHzkhMW+FqK8gruLQWN/sOCX+fGUgT9LT21cRIpcZj4/ZFIvwtkBcsCz1X +# EUsXYOSJUPitY7E8bbldmmhYZ29p+XQpIcsG/q+YjkqBW9mw0ru1MfxMTQs9MTDi +# D28gAVGrPA3NykiSChvdqS7VX+/LcEz9Ubzto/w28WA8HOCHqBTbDRHmiP7MIj+S +# QmI9VIayYsIGRjvelmNa0OvbU9CJSz/NfMEgf2NHMZUYW8KqWEjIjPfHIKxWlNMY +# huWfWRSHZCKyIANA0aJL4soHQtzzZ2MnNfjYY851wHYjGgwUj/hlLRgQO5S30Zx7 +# 8GqBKfylp25aOWJ/qPhC+DXM2gXajIXbl+jpGcVANwtFFujCJRdZbeH1R+Q41Fjg +# Bg4m3OTFDGot5DSuVkQgjku7pOVPtldE46QlDg/2WhPpTQxXH64sP1GfkAwUtt6r +# rZM/PCwRG6girYmnTRLLsicBhoYLh+EEFjVviXAGTk6pnu8jx/4WPWu0jsz7yFzg +# 82/FMqCk9wK3LvyLAyDHN+FxbHAxtgwad7oLQPM0WGERdB1umPCIiYsSf/j79EqH +# doNwQYROVm+ZX10RX3n6bRmAnskeNhi0wnVaeVogLMdGD+nqMIIHcTCCBVmgAwIB +# AgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UE +# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc +# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0 +# IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1 +# WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCC +# AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O +# 1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZn +# hUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t +# 1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxq +# D89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmP +# frVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSW +# rAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv +# 231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zb +# r17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYcten +# IPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQc +# xWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17a +# j54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQAB +# MCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQU +# n6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEw +# QTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9E +# b2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQB +# gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/ +# MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJ +# oEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p +# Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYB +# BQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9v +# Q2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3h +# LB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x +# 5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74p +# y27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1A +# oL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbC +# HcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB +# 9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNt +# yo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3 +# rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcV +# v7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A24 +# 5oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lw +# Y1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtgwggJBAgEBMIIBAKGB2KSB1TCB +# 0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl +# ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMk +# TWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1U +# aGFsZXMgVFNTIEVTTjoyQUQ0LTRCOTItRkEwMTElMCMGA1UEAxMcTWljcm9zb2Z0 +# IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUAaKBSisy4y86pl8Xy +# 22CJZExE2vOggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN +# BgkqhkiG9w0BAQUFAAIFAOneH+MwIhgPMjAyNDA1MDIyMjIxMjNaGA8yMDI0MDUw +# MzIyMjEyM1oweDA+BgorBgEEAYRZCgQBMTAwLjAKAgUA6d4f4wIBADALAgEAAgMB +# HHgCAf8wBwIBAAICE/YwCgIFAOnfcWMCAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYK +# KwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQUF +# AAOBgQChqUVzyjSvZsd79JUJddw2P0vHrT2Azx/D5Nh33MUFAU0AUMRWx6pqbyHD +# 7Gf0OYljwMdX8TLfsorsODpvMVFyLQQhANBQMzScn6JVYUyJWGlXEFf3zEVmoXzf +# Y3wtQnrDdUVaeg9NoY9ttFqPtJamKUBRZnfPO8xtfvRBgfm8rjGCBA0wggQJAgEB +# MIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH +# EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNV +# BAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB3p5InpafKEQ9 +# AAEAAAHeMA0GCWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcN +# AQkQAQQwLwYJKoZIhvcNAQkEMSIEIEOH7oT0feHVIo2VpC5Q0ldGCYZmSyaDyjpn +# TKCg8LKyMIH6BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCBvQQgjj4jnw3BXhAQSQJ/ +# 5gtzIK0+cP1Ns/NS2A+OB3N+HXswgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEG +# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj +# cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt +# cCBQQ0EgMjAxMAITMwAAAd6eSJ6WnyhEPQABAAAB3jAiBCCqlMZRRFgGINs4+HhX +# dMQi8+rUCVp+3udHqe8NfDTWAjANBgkqhkiG9w0BAQsFAASCAgBGwl1+0uDZseka +# q/ceaXwJ8/fp/4Er6cxJrm7/+0ENEAkRzho/tajjVen5+RftqjYY7tdjWw01s1xw +# MEOik/nqqzCtEBqMZrGS1p67cnJBpUVpONW+inXHh7CPnOrZTQ/4olXp1UVWFczR +# rs3cFyOgrtRTL1a7/EprXVFjRWXRY+dHGho/5+C46g5rp4HR2h8ucIABrbrQ880H +# PC73+Nr7g30XgKkRkD2eUH/McZICsfi+7ONLvDMJQyUsZML6MwQtSm2jjWNe4gIw +# 2xy1RgfaJV5w0ve9hx1MU+WcjxX7Z3M1IaG+XGxf+4FpNBczzd0BY0dY5iOSCuqp +# aEDuu3DIZ9bLyN8VoFaI98plJkbba9J/nRnSRSTxbg6UoUQTiMBRLhfrEVbfGVw4 +# u1ABt1mFaBX70UXhLZYYQxHG1GQnm6MSLklihtZu57yxY/VhyfH8Z3hRfAfxbyen +# HpCS5AmKJpHiRSeTC2bDlfaWGOFXwcAufxXvgu+EWNgukuXKLwtT8blZv/VxuXUs +# eq+YToI4oHcU9+hlFQ3+9pVH+xlppa8HJcIeqhY0WA9wMvIh4eIa97iAusIsiRh4 +# xeeqxdppBFpIzQhRkK14sLggRZeJs7ayVQWTRbFyA5ZAxa9H+eJ3UA7WknMwh7g1 +# vEFP+/1yvj66y7dD3Mv1nYRkpHizHQ== +# SIG # End signature block diff --git a/ExtendMigrateToAzure/AdminUI.SmsTraceListener.dll b/ExtendMigrateToAzure/AdminUI.SmsTraceListener.dll new file mode 100644 index 0000000..5b7c032 Binary files /dev/null and b/ExtendMigrateToAzure/AdminUI.SmsTraceListener.dll differ diff --git a/ExtendMigrateToAzure/ExtendMigrateToAzure.exe b/ExtendMigrateToAzure/ExtendMigrateToAzure.exe new file mode 100644 index 0000000..4011198 Binary files /dev/null and b/ExtendMigrateToAzure/ExtendMigrateToAzure.exe differ diff --git a/ExtendMigrateToAzure/ExtendMigrateToAzure.exe.config b/ExtendMigrateToAzure/ExtendMigrateToAzure.exe.config new file mode 100644 index 0000000..c7de67b --- /dev/null +++ b/ExtendMigrateToAzure/ExtendMigrateToAzure.exe.config @@ -0,0 +1,115 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ExtendMigrateToAzure/Hyak.Common.dll b/ExtendMigrateToAzure/Hyak.Common.dll new file mode 100644 index 0000000..1974439 Binary files /dev/null and b/ExtendMigrateToAzure/Hyak.Common.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Azure.Common.dll b/ExtendMigrateToAzure/Microsoft.Azure.Common.dll new file mode 100644 index 0000000..e4768a0 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Azure.Common.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Azure.ResourceManager.dll b/ExtendMigrateToAzure/Microsoft.Azure.ResourceManager.dll new file mode 100644 index 0000000..fe2a6ca Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Azure.ResourceManager.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.Feedback.Common.dll b/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.Feedback.Common.dll new file mode 100644 index 0000000..e67d32d Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.Feedback.Common.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.ManagementProvider.dll b/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.ManagementProvider.dll new file mode 100644 index 0000000..c36476b Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.ConfigurationManagement.ManagementProvider.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.ConfigurationManager.AzureManagement.dll b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.AzureManagement.dll new file mode 100644 index 0000000..e0342ed Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.AzureManagement.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.ConfigurationManager.CommonUI.dll b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.CommonUI.dll new file mode 100644 index 0000000..9618701 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.CommonUI.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.ConfigurationManager.ManagedBase.dll b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.ManagedBase.dll new file mode 100644 index 0000000..bda298d Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.ConfigurationManager.ManagedBase.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.EnterpriseManagement.UI.Controls.dll b/ExtendMigrateToAzure/Microsoft.EnterpriseManagement.UI.Controls.dll new file mode 100644 index 0000000..e0c16c9 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.EnterpriseManagement.UI.Controls.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Identity.Client.Extensions.Msal.dll b/ExtendMigrateToAzure/Microsoft.Identity.Client.Extensions.Msal.dll new file mode 100644 index 0000000..661af6d Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Identity.Client.Extensions.Msal.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Identity.Client.dll b/ExtendMigrateToAzure/Microsoft.Identity.Client.dll new file mode 100644 index 0000000..07e8186 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Identity.Client.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.Desktop.dll b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.Desktop.dll new file mode 100644 index 0000000..1288a17 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.Desktop.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.dll b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.dll new file mode 100644 index 0000000..4d862e1 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.Extensions.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.Threading.Tasks.dll b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.dll new file mode 100644 index 0000000..8438577 Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.Threading.Tasks.dll differ diff --git a/ExtendMigrateToAzure/Microsoft.WindowsAzure.Storage.dll b/ExtendMigrateToAzure/Microsoft.WindowsAzure.Storage.dll new file mode 100644 index 0000000..d25230b Binary files /dev/null and b/ExtendMigrateToAzure/Microsoft.WindowsAzure.Storage.dll differ diff --git a/ExtendMigrateToAzure/Newtonsoft.Json.dll b/ExtendMigrateToAzure/Newtonsoft.Json.dll new file mode 100644 index 0000000..31c2f52 Binary files /dev/null and b/ExtendMigrateToAzure/Newtonsoft.Json.dll differ diff --git a/ExtendMigrateToAzure/System.Management.Automation.dll b/ExtendMigrateToAzure/System.Management.Automation.dll new file mode 100644 index 0000000..109753c Binary files /dev/null and b/ExtendMigrateToAzure/System.Management.Automation.dll differ diff --git a/ExtendMigrateToAzure/System.ValueTuple.dll b/ExtendMigrateToAzure/System.ValueTuple.dll new file mode 100644 index 0000000..4ce28fd Binary files /dev/null and b/ExtendMigrateToAzure/System.ValueTuple.dll differ diff --git a/ExtendMigrateToAzure/Template/CreateExtension.json b/ExtendMigrateToAzure/Template/CreateExtension.json new file mode 100644 index 0000000..b8f9d69 --- /dev/null +++ b/ExtendMigrateToAzure/Template/CreateExtension.json @@ -0,0 +1,108 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "machineName": { + "defaultValue": "", + "type": "string", + "minLength": 1, + "maxLength": 15, + "metadata": { + "description": "The name of the virtual machine. " + } + }, + "deployname": { + "type": "string" + }, + "existingStorageUrl": { + "type": "string", + "metadata": { + "description": "The storage Url. Example is like https://{storageaccountname}.blob.core.windows.net/{containername}/{blobname}. " + } + }, + "existingSASKey": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access existingStorageUrl. It requires read and write permissions to save some temp data. " + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "RoleType": { + "type": "string", + "defaultValue": "Passive", + "allowedValues": [ + "DP", + "MP", + "SUP" + ], + "metadata": { + "description": "Role type of VM." + } + } + }, + "variables": { + "Quotes": "\"" + }, + "resources": [ + { + "condition": "[equals(parameters('RoleType'),'MP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-MP',parameters('deployname'))]", + "location": "[parameters('location')]", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "MPConfigurationExist.ps1\\MPconfigurationExist" + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'DP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-DP',parameters('deployname'))]", + "location": "[parameters('location')]", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "DPConfigurationExist.ps1\\DPconfigurationExist" + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'SUP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-SUP',parameters('deployname'))]", + "location": "[parameters('location')]", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "SUPConfigurationExist.ps1\\SUPconfigurationExist" + } + } + } + ], + "outputs": { + + } +} diff --git a/ExtendMigrateToAzure/Template/CreateExtension.parameters.json b/ExtendMigrateToAzure/Template/CreateExtension.parameters.json new file mode 100644 index 0000000..96a6c3e --- /dev/null +++ b/ExtendMigrateToAzure/Template/CreateExtension.parameters.json @@ -0,0 +1,20 @@ +"parameters": { + "machineName": { + "value": "__MachineName__" + }, + "existingStorageUrl": { + "value": "__StorageContainer__" + }, + "existingSASKey": { + "value": "__sasKey__" + }, + "location": { + "value": "__Location__" + }, + "deployname": { + "value": "__FolderName__" + }, + "RoleType": { + "value": "__RoleType__" + } +} diff --git a/ExtendMigrateToAzure/Template/WindowsVirtualMachine.json b/ExtendMigrateToAzure/Template/WindowsVirtualMachine.json new file mode 100644 index 0000000..959db9b --- /dev/null +++ b/ExtendMigrateToAzure/Template/WindowsVirtualMachine.json @@ -0,0 +1,395 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "machineName": { + "defaultValue": "", + "type": "string", + "minLength": 1, + "maxLength": 15, + "metadata": { + "description": "The name of the virtual machine. " + } + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "diskType": { + "type": "string" + }, + "exsitingVnetName": { + "type": "string", + "metadata": { + "description": "Existing VNET that contains the domain controller" + } + }, + "vmSize": { + "type": "string" + }, + "existingSubnetName": { + "defaultValue": "Subnet-1", + "type": "string", + "metadata": { + "description": "Existing subnet that contains the domain controller." + } + }, + "existingPrimaryName": { + "type": "string", + "metadata": { + "description": "Computer name for the primary site server. " + } + }, + "existingDomainFQDN": { + "type": "string", + "metadata": { + "description": "DomainName on the AD domain. " + } + }, + "existingDomainAdminUsername": { + "type": "string", + "metadata": { + "description": "Username of the account on the AD domain. " + } + }, + "existingDomainAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password of the account on the AD domain" + } + }, + "existingStorageUrl": { + "type": "string", + "metadata": { + "description": "The storage Url. Example is like https://{storageaccountname}.blob.core.windows.net/{containername}/{blobname}. " + } + }, + "existingSASKey": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access existingStorageUrl. It requires read and write permissions to save some temp data. " + } + }, + "existingVnetResourcegroup": { + "type": "string", + "metadata": { + "description": "Existing azure virtual network resource group. " + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "RoleType": { + "type": "string", + "defaultValue": "Passive", + "allowedValues": [ + "Passive", + "DP", + "MP", + "SUP", + "General" + ], + "metadata": { + "description": "Role type of VM." + } + } + }, + "variables": { + "Quotes": "\"", + "vnetId": "[resourceId(parameters('existingVnetResourcegroup'), 'Microsoft.Network/virtualNetworks', parameters('exsitingVnetName'))]", + "networkSettings": { + "subnetRef": "[concat(variables('vnetId'), '/subnets/',parameters('existingSubnetName'))]", + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4" + }, + "securityGroupRule": { + "name": "default-allow-rdp", + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2018-06-01", + "name": "[parameters('machineName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', toLower(parameters('machineName')), '-ni')]" + ], + "properties": { + "osProfile": { + "computerName": "[parameters('machineName')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "hardwareProfile": { + "vmSize": "[parameters('vmSize')]" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "name": "[concat(parameters('machineName'),'-OsDisk')]", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "[parameters('diskType')]" + }, + "diskSizeGB": 150 + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(toLower(parameters('machineName')), '-ni'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": false + } + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'Passive')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-Passive')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "PassiveConfiguration.ps1\\Passiveconfiguration", + "Properties": { + "DomainName": "[parameters('existingDomainFQDN')]", + "AdminCreds": { + "UserName": "[parameters('existingDomainAdminUsername')]", + "Password": "PrivateSettingsRef:DomainAdminPassword" + }, + "Primaryname": "[parameters('existingPrimaryName')]" + } + }, + "protectedSettings": { + "Items": { + "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" + } + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'MP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-MP')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "MPConfiguration.ps1\\MPconfiguration", + "Properties": { + "DomainName": "[parameters('existingDomainFQDN')]", + "AdminCreds": { + "UserName": "[parameters('existingDomainAdminUsername')]", + "Password": "PrivateSettingsRef:DomainAdminPassword" + }, + "PrimaryName": "[parameters('existingPrimaryName')]" + } + }, + "protectedSettings": { + "Items": { + "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" + } + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'DP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-DP')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "DPConfiguration.ps1\\DPconfiguration", + "Properties": { + "DomainName": "[parameters('existingDomainFQDN')]", + "AdminCreds": { + "UserName": "[parameters('existingDomainAdminUsername')]", + "Password": "PrivateSettingsRef:DomainAdminPassword" + }, + "Primaryname": "[parameters('existingPrimaryName')]" + } + }, + "protectedSettings": { + "Items": { + "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" + } + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'SUP')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-SUP')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "SUPConfiguration.ps1\\SUPconfiguration", + "Properties": { + "DomainName": "[parameters('existingDomainFQDN')]", + "AdminCreds": { + "UserName": "[parameters('existingDomainAdminUsername')]", + "Password": "PrivateSettingsRef:DomainAdminPassword" + }, + "Primaryname": "[parameters('existingPrimaryName')]" + } + }, + "protectedSettings": { + "Items": { + "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" + } + } + } + }, + { + "condition": "[equals(parameters('RoleType'),'General')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2018-06-01", + "name": "[concat(parameters('machineName'),'/WorkFlow-General')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", + "configurationFunction": "GeneralConfiguration.ps1\\Generalconfiguration", + "Properties": { + "DomainName": "[parameters('existingDomainFQDN')]", + "AdminCreds": { + "UserName": "[parameters('existingDomainAdminUsername')]", + "Password": "PrivateSettingsRef:DomainAdminPassword" + }, + "Primaryname": "[parameters('existingPrimaryName')]" + } + }, + "protectedSettings": { + "Items": { + "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2018-08-01", + "name": "[concat(toLower(parameters('machineName')), '-ni')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', parameters('machineName'), '-nsg')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[variables('networkSettings').subnetRef]" + }, + "privateIPAllocationMethod": "[variables('networkSettings').privateIPAllocationMethod]", + "privateIPAddressVersion": "[variables('networkSettings').privateIPAddressVersion]" + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', concat(parameters('machineName'), '-nsg'))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2018-08-01", + "name": "[concat(parameters('machineName'), '-nsg')]", + "location": "[parameters('location')]", + "properties": { + "securityRules": [ + { + "name": "[variables('securityGroupRule').name]", + "properties": { + "priority": "[variables('securityGroupRule').priority]", + "sourceAddressPrefix": "[variables('securityGroupRule').sourceAddressPrefix]", + "protocol": "[variables('securityGroupRule').protocol]", + "destinationPortRange": "[variables('securityGroupRule').destinationPortRange]", + "access": "[variables('securityGroupRule').access]", + "direction": "[variables('securityGroupRule').direction]", + "sourcePortRange": "[variables('securityGroupRule').sourcePortRange]", + "destinationAddressPrefix": "[variables('securityGroupRule').destinationAddressPrefix]" + } + } + ] + } + } + ], + "outputs": { + + } +} diff --git a/ExtendMigrateToAzure/Template/WindowsVirtualMachine.parameters.json b/ExtendMigrateToAzure/Template/WindowsVirtualMachine.parameters.json new file mode 100644 index 0000000..b1eabd1 --- /dev/null +++ b/ExtendMigrateToAzure/Template/WindowsVirtualMachine.parameters.json @@ -0,0 +1,60 @@ +"parameters": { + "machineName": { + "value": "__MachineName__" + }, + "adminUsername": { + "value": "__AdminUsername__" + }, + "adminPassword": { + "reference": { + "KeyVault": { + "id": "__AdminVaultID__" + }, + "secretName": "__AdminSecureName__" + } + }, + "diskType": { + "value": "Premium_LRS" + }, + "exsitingVnetName": { + "value": "__VirtualNetwork__" + }, + "existingVnetResourcegroup": { + "value": "__VirtualNetworkResourceGroup__" + }, + "vmSize": { + "value": "__VMSize__" + }, + "existingSubnetName": { + "value": "__SubNet__" + }, + "existingPrimaryName": { + "value": "__PrimaryName__" + }, + "existingDomainFQDN": { + "value": "__DomainName__" + }, + "existingDomainAdminUsername": { + "value": "__DomainUser__" + }, + "existingDomainAdminPassword": { + "reference": { + "KeyVault": { + "id": "__DomainVaultID__" + }, + "secretName": "__DomainSecureName__" + } + }, + "existingStorageUrl": { + "value": "__StorageContainer__" + }, + "existingSASKey": { + "value": "__sasKey__" + }, + "location": { + "value": "__Location__" + }, + "RoleType": { + "value": "__RoleType__" + } +} diff --git a/ExtendMigrateToAzure/postscripts/AddDP.ps1 b/ExtendMigrateToAzure/postscripts/AddDP.ps1 new file mode 100644 index 0000000..67cde19 --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddDP.ps1 @@ -0,0 +1,282 @@ + +$LogList = @() +$LogList += "Start running add distribution point script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((get-cmdistributionpoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Distribution Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $Date = [DateTime]::Now.AddYears(30) + $LogList += "Adding distribution point on $MachineName ..." + $LogList += Add-CMDistributionPoint -InputObject $SystemServer -CertificateExpirationTimeUtc $Date + $LogList += "Finished adding distribution point on $MachineName ..." + + + if((get-cmdistributionpoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} +# SIG # Begin signature block +# MIIn4QYJKoZIhvcNAQcCoIIn0jCCJ84CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCNu7zXOpsNWcfS +# d4SaGj3wAjATvE3KwAvi1uvRC++40aCCDXYwggX0MIID3KADAgECAhMzAAADrzBA +# DkyjTQVBAAAAAAOvMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwOTAwWhcNMjQxMTE0MTkwOTAwWjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOS8s1ra6f0YGtg0OhEaQa/t3Q+q1MEHhWJhqQVuO5amYXQpy8MDPNoJYk+FWA +# hePP5LxwcSge5aen+f5Q6WNPd6EDxGzotvVpNi5ve0H97S3F7C/axDfKxyNh21MG +# 0W8Sb0vxi/vorcLHOL9i+t2D6yvvDzLlEefUCbQV/zGCBjXGlYJcUj6RAzXyeNAN +# xSpKXAGd7Fh+ocGHPPphcD9LQTOJgG7Y7aYztHqBLJiQQ4eAgZNU4ac6+8LnEGAL +# go1ydC5BJEuJQjYKbNTy959HrKSu7LO3Ws0w8jw6pYdC1IMpdTkk2puTgY2PDNzB +# tLM4evG7FYer3WX+8t1UMYNTAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQURxxxNPIEPGSO8kqz+bgCAQWGXsEw +# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW +# MBQGA1UEBRMNMjMwMDEyKzUwMTgyNjAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci +# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG +# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu +# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 +# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAISxFt/zR2frTFPB45Yd +# mhZpB2nNJoOoi+qlgcTlnO4QwlYN1w/vYwbDy/oFJolD5r6FMJd0RGcgEM8q9TgQ +# 2OC7gQEmhweVJ7yuKJlQBH7P7Pg5RiqgV3cSonJ+OM4kFHbP3gPLiyzssSQdRuPY +# 1mIWoGg9i7Y4ZC8ST7WhpSyc0pns2XsUe1XsIjaUcGu7zd7gg97eCUiLRdVklPmp +# XobH9CEAWakRUGNICYN2AgjhRTC4j3KJfqMkU04R6Toyh4/Toswm1uoDcGr5laYn +# TfcX3u5WnJqJLhuPe8Uj9kGAOcyo0O1mNwDa+LhFEzB6CB32+wfJMumfr6degvLT +# e8x55urQLeTjimBQgS49BSUkhFN7ois3cZyNpnrMca5AZaC7pLI72vuqSsSlLalG +# OcZmPHZGYJqZ0BacN274OZ80Q8B11iNokns9Od348bMb5Z4fihxaBWebl8kWEi2O +# PvQImOAeq3nt7UWJBzJYLAGEpfasaA3ZQgIcEXdD+uwo6ymMzDY6UamFOfYqYWXk +# ntxDGu7ngD2ugKUuccYKJJRiiz+LAUcj90BVcSHRLQop9N8zoALr/1sJuwPrVAtx +# HNEgSW+AKBqIxYWM4Ev32l6agSUAezLMbq5f3d8x9qzT031jMDT+sUAoCw0M5wVt +# CUQcqINPuYjbS1WgJyZIiEkBMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq +# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x +# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg +# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 +# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr +# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg +# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy +# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 +# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh +# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k +# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB +# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn +# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 +# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w +# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o +# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD +# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa +# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny +# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG +# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV +# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG +# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl +# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb +# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l +# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 +# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 +# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 +# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam +# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa +# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah +# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA +# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt +# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr +# /Xmfwb1tbWrJUnMTDXpQzTGCGcEwghm9AgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp +# Z25pbmcgUENBIDIwMTECEzMAAAOvMEAOTKNNBUEAAAAAA68wDQYJYIZIAWUDBAIB +# BQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO +# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIB7C1PCGIegnemn6gD1SFzAj +# SVPITm9aHySFVGmzHcMgMGAGCisGAQQBgjcCAQwxUjBQoDKAMABFAHgAdABlAG4A +# ZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBlAHgAZaEagBhodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEAxsHHK3YEkyaA1E/T +# YIdVaS5rGzS7hIwI5lWVMF+hnF86ahjDrvxyZn3PkTnby9z3xQbmNRL8/wDhoD0R +# iYGP5i/uCkzBouhaBZDFTGi+VhtcVK7xUDdasDlEJ+z98lH2xpVVIRJLeim/SAW9 +# rYIHr6f9amOjlxXhVh48XPI+CKDFc1/YL2au8UctPtuYf8KTfwOUyTkp8nsq2Wey +# 7L6+EhMdYmIVSKdxqtTSlJ//+k3mdxkNR5FP40VTeUCYIjjEi2rZzeYZvx6KVFzZ +# pEqAuYIvxZmD/0tnXLYiM7oobDDoG7LNwXGPk19C4KN/fezj8YReBolMoED1Y1le +# 75B/qKGCFy0wghcpBgorBgEEAYI3AwMBMYIXGTCCFxUGCSqGSIb3DQEHAqCCFwYw +# ghcCAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFE +# MIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCCwgwS5buPUmU1e +# n7zG4x2tQvtsWGWssEK2Uy8q9nFpwgIGZjOhcWg+GBMyMDI0MDUwMjIwNTgwOS45 +# MjZaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExp +# bWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjJBRDQtNEI5Mi1GQTAxMSUw +# IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRfDCCBycwggUP +# oAMCAQICEzMAAAHenkielp8oRD0AAQAAAd4wDQYJKoZIhvcNAQELBQAwfDELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z +# b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEyMTkwNzEyWhcNMjUwMTEw +# MTkwNzEyWjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEt +# MCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYw +# JAYDVQQLEx1UaGFsZXMgVFNTIEVTTjoyQUQ0LTRCOTItRkEwMTElMCMGA1UEAxMc +# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBALSB9ByF9UIDhA6xFrOniw/xsDl8sSi9rOCOXSSO4VMQjnNG +# Ao5VHx0iijMEMH9LY2SUIBkVQS0Ml6kR+TagkUPbaEpwjhQ1mprhRgJT/jlSnic4 +# 2VDAo0en4JI6xnXoAoWoKySY8/ROIKdpphgI7OJb4XHk1P3sX2pNZ32LDY1ktchK +# 1/hWyPlblaXAHRu0E3ynvwrS8/bcorANO6DjuysyS9zUmr+w3H3AEvSgs2ReuLj2 +# pkBcfW1UPCFudLd7IPZ2RC4odQcEPnY12jypYPnS6yZAs0pLpq0KRFUyB1x6x6OU +# 73sudiHON16mE0l6LLT9OmGo0S94Bxg3N/3aE6fUbnVoemVc7FkFLum8KkZcbQ7c +# OHSAWGJxdCvo5OtUtRdSqf85FklCXIIkg4sm7nM9TktUVfO0kp6kx7mysgD0Qrxx +# 6/5oaqnwOTWLNzK+BCi1G7nUD1pteuXvQp8fE1KpTjnG/1OJeehwKNNPjGt98V0B +# mogZTe3SxBkOeOQyLA++5Hyg/L68pe+DrZoZPXJaGU/iBiFmL+ul/Oi3d83zLAHl +# HQmH/VGNBfRwP+ixvqhyk/EebwuXVJY+rTyfbRfuh9n0AaMhhNxxg6tGKyZS4EAE +# iDxrF9mAZEy8e8rf6dlKIX5d3aQLo9fDda1ZTOw+XAcAvj2/N3DLVGZlHnHlAgMB +# AAGjggFJMIIBRTAdBgNVHQ4EFgQUazAmbxseaapgdxzK8Os+naPQEsgwHwYDVR0j +# BBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggr +# BgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N +# aWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0T +# AQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw +# DQYJKoZIhvcNAQELBQADggIBAOKUwHsXDacGOvUIgs5HDgPs0LZ1qyHS6C6wfKlL +# aD36tZfbWt1x+GMiazSuy+GsxiVHzkhMW+FqK8gruLQWN/sOCX+fGUgT9LT21cRI +# pcZj4/ZFIvwtkBcsCz1XEUsXYOSJUPitY7E8bbldmmhYZ29p+XQpIcsG/q+YjkqB +# W9mw0ru1MfxMTQs9MTDiD28gAVGrPA3NykiSChvdqS7VX+/LcEz9Ubzto/w28WA8 +# HOCHqBTbDRHmiP7MIj+SQmI9VIayYsIGRjvelmNa0OvbU9CJSz/NfMEgf2NHMZUY +# W8KqWEjIjPfHIKxWlNMYhuWfWRSHZCKyIANA0aJL4soHQtzzZ2MnNfjYY851wHYj +# GgwUj/hlLRgQO5S30Zx78GqBKfylp25aOWJ/qPhC+DXM2gXajIXbl+jpGcVANwtF +# FujCJRdZbeH1R+Q41FjgBg4m3OTFDGot5DSuVkQgjku7pOVPtldE46QlDg/2WhPp +# TQxXH64sP1GfkAwUtt6rrZM/PCwRG6girYmnTRLLsicBhoYLh+EEFjVviXAGTk6p +# nu8jx/4WPWu0jsz7yFzg82/FMqCk9wK3LvyLAyDHN+FxbHAxtgwad7oLQPM0WGER +# dB1umPCIiYsSf/j79EqHdoNwQYROVm+ZX10RX3n6bRmAnskeNhi0wnVaeVogLMdG +# D+nqMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0B +# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG +# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw +# HhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh +# pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xP +# x2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ +# 3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt +# gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYt +# cI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXA +# hjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0S +# idb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSC +# D/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEB +# c8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh +# 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8Fdsa +# N8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr +# BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q +# /y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBR +# BgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP +# BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjE +# MFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv +# Y3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEF +# BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +# a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEB +# CwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX +# wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOw +# Bb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jf +# ZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ +# 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ +# ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgs +# sU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6 +# OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p +# /cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6 +# TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784 +# cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtgwggJB +# AgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1p +# dGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjoyQUQ0LTRCOTItRkEwMTElMCMG +# A1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIa +# AxUAaKBSisy4y86pl8Xy22CJZExE2vOggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOneH+MwIhgPMjAyNDA1MDIy +# MjIxMjNaGA8yMDI0MDUwMzIyMjEyM1oweDA+BgorBgEEAYRZCgQBMTAwLjAKAgUA +# 6d4f4wIBADALAgEAAgMBHHgCAf8wBwIBAAICE/YwCgIFAOnfcWMCAQAwNgYKKwYB +# BAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGG +# oDANBgkqhkiG9w0BAQUFAAOBgQChqUVzyjSvZsd79JUJddw2P0vHrT2Azx/D5Nh3 +# 3MUFAU0AUMRWx6pqbyHD7Gf0OYljwMdX8TLfsorsODpvMVFyLQQhANBQMzScn6JV +# YUyJWGlXEFf3zEVmoXzfY3wtQnrDdUVaeg9NoY9ttFqPtJamKUBRZnfPO8xtfvRB +# gfm8rjGCBA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# AhMzAAAB3p5InpafKEQ9AAEAAAHeMA0GCWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG +# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIPwY1dgN5VvcvTqV +# 5plQyevnS1e+fgC1iSBzw5dUCuhTMIH6BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCB +# vQQgjj4jnw3BXhAQSQJ/5gtzIK0+cP1Ns/NS2A+OB3N+HXswgZgwgYCkfjB8MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy +# b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAd6eSJ6WnyhEPQABAAAB3jAi +# BCCqlMZRRFgGINs4+HhXdMQi8+rUCVp+3udHqe8NfDTWAjANBgkqhkiG9w0BAQsF +# AASCAgBcMhgTYN26v6I3JV7eJs/o66WmKPuFe1TK+vbymc5SXRQfupknTCo/PSAK +# vcjYzEnjCDaUP4Qt/xdn6rEVKyhgMXqabsWYEHuE9my+4+FwEYLGiuo95B9TemkI +# cZX+KLC8zDpuscI72lWIDt1057lP+LZ6PY1VSk+F7w0vA60CekwN3XlGT7Ba+IQN +# XInDLnTgYIy2xCRn6t3S+mMWR79sMZ0ONo2kQmGn/JgpaWsnQ4+Nll5Hmr4SWLXi +# 4Co/1ntTqxzP4o1KuYXnzIbH7WGYcucy/+n3vo+AZqfBGPsitw0ScQepvNx4fJ8/ +# inyhKqLhpE/TgJlOncBBiDuQeXCwZ8yx/QW9j9r7fjadg1NMszxSIcArlwL9DWRb +# KPR/KlckJmH2RyfYw3aK/gEEASIP9B+XV/EYrHDOqMH0+L5zqpmc4mFKvXhRtm9f +# mFSv6d0h4CTOsuDi+KngVmgLFoDzVy5zMmJsPocRIJ+hTKkmpHDOvRWlRYndgMXV +# oBuZMmSJqQPNg4TPq5PqMnxFX7gMjedeQwR0pxS27jIsIw0XMUf99gKMf4+lPqGN +# 9n+RupRcvUkL5JcovhwKNc3ywwwYxxc+r7+h7UOB089+6UPKa4RFrgJWGd0p30XU +# XbOINxoKRalc52ksWLsJcZVpygvOxA41ytTTUnUnsRmYs16bDg== +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddDPHTTPS.ps1 b/ExtendMigrateToAzure/postscripts/AddDPHTTPS.ps1 new file mode 100644 index 0000000..84a7703 --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddDPHTTPS.ps1 @@ -0,0 +1,289 @@ + +#ClientCommunication:__HTTPSORNOT__ +#ClientConnectionType:__ClientConnectionType__ + +$LogList = @() +$LogList += "Start running add distribution point (HTTPS) script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$Communication = "__HTTPSORNOT__" +$ClientConnectionType = "__ClientConnectionType__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((get-cmdistributionpoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Distribution Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $Date = [DateTime]::Now.AddYears(30) + $Date = [DateTime]::Now.AddYears(30) + $LogList += "Adding distribution point on $MachineName ..." + $LogList += Add-CMDistributionPoint -InputObject $SystemServer -CertificateExpirationTimeUtc $Date + $LogList += Set-CMDistributionPoint -SiteSystemServerName $MachineName -ClientCommunicationType $Communication -ClientConnectionType $ClientConnectionType + $LogList += "Finished adding distribution point on $MachineName ..." + + + if((get-cmdistributionpoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} +# SIG # Begin signature block +# MIIn4QYJKoZIhvcNAQcCoIIn0jCCJ84CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCC4Gje702+lN5Fh +# /qA4BxVde4fI/mlnB6ByjHBEkPbVaKCCDXYwggX0MIID3KADAgECAhMzAAADrzBA +# DkyjTQVBAAAAAAOvMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwOTAwWhcNMjQxMTE0MTkwOTAwWjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOS8s1ra6f0YGtg0OhEaQa/t3Q+q1MEHhWJhqQVuO5amYXQpy8MDPNoJYk+FWA +# hePP5LxwcSge5aen+f5Q6WNPd6EDxGzotvVpNi5ve0H97S3F7C/axDfKxyNh21MG +# 0W8Sb0vxi/vorcLHOL9i+t2D6yvvDzLlEefUCbQV/zGCBjXGlYJcUj6RAzXyeNAN +# xSpKXAGd7Fh+ocGHPPphcD9LQTOJgG7Y7aYztHqBLJiQQ4eAgZNU4ac6+8LnEGAL +# go1ydC5BJEuJQjYKbNTy959HrKSu7LO3Ws0w8jw6pYdC1IMpdTkk2puTgY2PDNzB +# tLM4evG7FYer3WX+8t1UMYNTAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQURxxxNPIEPGSO8kqz+bgCAQWGXsEw +# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW +# MBQGA1UEBRMNMjMwMDEyKzUwMTgyNjAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci +# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG +# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu +# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 +# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAISxFt/zR2frTFPB45Yd +# mhZpB2nNJoOoi+qlgcTlnO4QwlYN1w/vYwbDy/oFJolD5r6FMJd0RGcgEM8q9TgQ +# 2OC7gQEmhweVJ7yuKJlQBH7P7Pg5RiqgV3cSonJ+OM4kFHbP3gPLiyzssSQdRuPY +# 1mIWoGg9i7Y4ZC8ST7WhpSyc0pns2XsUe1XsIjaUcGu7zd7gg97eCUiLRdVklPmp +# XobH9CEAWakRUGNICYN2AgjhRTC4j3KJfqMkU04R6Toyh4/Toswm1uoDcGr5laYn +# TfcX3u5WnJqJLhuPe8Uj9kGAOcyo0O1mNwDa+LhFEzB6CB32+wfJMumfr6degvLT +# e8x55urQLeTjimBQgS49BSUkhFN7ois3cZyNpnrMca5AZaC7pLI72vuqSsSlLalG +# OcZmPHZGYJqZ0BacN274OZ80Q8B11iNokns9Od348bMb5Z4fihxaBWebl8kWEi2O +# PvQImOAeq3nt7UWJBzJYLAGEpfasaA3ZQgIcEXdD+uwo6ymMzDY6UamFOfYqYWXk +# ntxDGu7ngD2ugKUuccYKJJRiiz+LAUcj90BVcSHRLQop9N8zoALr/1sJuwPrVAtx +# HNEgSW+AKBqIxYWM4Ev32l6agSUAezLMbq5f3d8x9qzT031jMDT+sUAoCw0M5wVt +# CUQcqINPuYjbS1WgJyZIiEkBMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq +# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x +# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg +# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 +# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr +# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg +# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy +# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 +# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh +# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k +# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB +# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn +# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 +# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w +# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o +# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD +# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa +# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny +# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG +# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV +# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG +# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl +# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb +# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l +# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 +# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 +# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 +# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam +# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa +# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah +# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA +# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt +# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr +# /Xmfwb1tbWrJUnMTDXpQzTGCGcEwghm9AgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp +# Z25pbmcgUENBIDIwMTECEzMAAAOvMEAOTKNNBUEAAAAAA68wDQYJYIZIAWUDBAIB +# BQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO +# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEINkqFDyuVu0yU1IG2uh806Cg +# w60aknbPtwQDniR88xIEMGAGCisGAQQBgjcCAQwxUjBQoDKAMABFAHgAdABlAG4A +# ZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBlAHgAZaEagBhodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEAQAgdlWNNkZs5lUb9 +# UACCowE+4KpvVwAqsNK8I3TW0i9Cig54s++KtnrQmCv+hviKumTl3ZO+e8ttqVn+ +# djFaLgJP7POblkqFO/RssZzGaNfIBvO9nMgADVI0c2I0QGASTDrs5DSdze8WMHax +# HqjGtUjgAmCqs5pzJGm9Dzcdtue4PqWRAUbiLqOkQYJAcRG5Bd4XZoMEPhexPsvI +# 8/wTSehsDco5qNChVPBVMHlGt0XdhET0QDwwPIrzd965k8yZJb6KuDX8Twij+LBU +# VEmPFsnt8iaF6hNAjzdUFkvtHjhLwvozZgthmvToJw9clEYcxieng4I9/cSTLmUB +# 5VSfXKGCFy0wghcpBgorBgEEAYI3AwMBMYIXGTCCFxUGCSqGSIb3DQEHAqCCFwYw +# ghcCAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFE +# MIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCDfuMFanQiVZsOP +# gsa3scnTk3Xv+dB7ZS26tuwjN9xRoQIGZjOqeGCYGBMyMDI0MDUwMjIwNTgwOS41 +# ODdaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExp +# bWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjg2REYtNEJCQy05MzM1MSUw +# IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRfDCCBycwggUP +# oAMCAQICEzMAAAHdXVcdldStqhsAAQAAAd0wDQYJKoZIhvcNAQELBQAwfDELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z +# b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEyMTkwNzA5WhcNMjUwMTEw +# MTkwNzA5WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEt +# MCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYw +# JAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4NkRGLTRCQkMtOTMzNTElMCMGA1UEAxMc +# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAKhOA5RE6i53nHURH4lnfKLp+9JvipuTtctairCxMUSrPSy5 +# CWK2DtriQP+T52HXbN2g7AktQ1pQZbTDGFzK6d03vYYNrCPuJK+PRsP2FPVDjBXy +# 5mrLRFzIHHLaiAaobE5vFJuoxZ0ZWdKMCs8acjhHUmfaY+79/CR7uN+B4+xjJqwv +# dpU/mp0mAq3earyH+AKmv6lkrQN8zgrcbCgHwsqvvqT6lEFqYpi7uKn7MAYbSeLe +# 0pMdatV5EW6NVnXMYOTRKuGPfyfBKdShualLo88kG7qa2mbA5l77+X06JAesMkoy +# Yr4/9CgDFjHUpcHSODujlFBKMi168zRdLerdpW0bBX9EDux2zBMMaEK8NyxawCEu +# Aq7++7ktFAbl3hUKtuzYC1FUZuUl2Bq6U17S4CKsqR3itLT9qNcb2pAJ4jrIDdll +# 5Tgoqef5gpv+YcvBM834bXFNwytd3ujDD24P9Dd8xfVJvumjsBQQkK5T/qy3HrQJ +# 8ud1nHSvtFVi5Sa/ubGuYEpS8gF6GDWN5/KbveFkdsoTVIPo8pkWhjPs0Q7nA5+u +# BxQB4zljEjKz5WW7BA4wpmFm24fhBmRjV4Nbp+n78cgAjvDSfTlA6DYBcv2kx1JH +# 2dIhaRnSeOXePT6hMF0Il598LMu0rw35ViUWcAQkUNUTxRnqGFxz5w+ZusMDAgMB +# AAGjggFJMIIBRTAdBgNVHQ4EFgQUbqL1toyPUdpFyyHSDKWj0I4lw/EwHwYDVR0j +# BBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggr +# BgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N +# aWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0T +# AQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw +# DQYJKoZIhvcNAQELBQADggIBAC5U2bINLgXIHWbMcqVuf9jkUT/K8zyLBvu5h8Jr +# qYR2z/eaO2yo1Ooc9Shyvxbe9GZDu7kkUzxSyJ1IZksZZw6FDq6yZNT3PEjAEnRE +# pRBL8S+mbXg+O4VLS0LSmb8XIZiLsaqZ0fDEcv3HeA+/y/qKnCQWkXghpaEMwGMQ +# zRkhGwcGdXr1zGpQ7HTxvfu57xFxZX1MkKnWFENJ6urd+4teUgXj0ngIOx//l3XM +# K3Ht8T2+zvGJNAF+5/5qBk7nr079zICbFXvxtidNN5eoXdW+9rAIkS+UGD19AZdB +# rtt6dZ+OdAquBiDkYQ5kVfUMKS31yHQOGgmFxuCOzTpWHalrqpdIllsy8KNsj5U9 +# sONiWAd9PNlyEHHbQZDmi9/BNlOYyTt0YehLbDovmZUNazk79Od/A917mqCdTqrE +# xwBGUPbMP+/vdYUqaJspupBnUtjOf/76DAhVy8e/e6zR98PkplmliO2brL3Q3rD6 +# +ZCVdrGM9Rm6hUDBBkvYh+YjmGdcQ5HB6WT9Rec8+qDHmbhLhX4Zdaard5/OXeLb +# gx2f7L4QQQj3KgqjqDOWInVhNE1gYtTWLHe4882d/k7Lui0K1g8EZrKD7maOrsJL +# KPKlegceJ9FCqY1sDUKUhRa0EHUW+ZkKLlohKrS7FwjdrINWkPBgbQznCjdE2m47 +# QjTbMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0B +# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG +# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw +# HhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh +# pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xP +# x2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ +# 3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt +# gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYt +# cI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXA +# hjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0S +# idb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSC +# D/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEB +# c8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh +# 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8Fdsa +# N8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr +# BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q +# /y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBR +# BgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP +# BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjE +# MFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv +# Y3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEF +# BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +# a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEB +# CwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX +# wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOw +# Bb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jf +# ZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ +# 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ +# ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgs +# sU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6 +# OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p +# /cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6 +# TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784 +# cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtgwggJB +# AgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1p +# dGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4NkRGLTRCQkMtOTMzNTElMCMG +# A1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIa +# AxUANiNHGWXbNaDPxnyiDbEOciSjFhCggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOneKPAwIhgPMjAyNDA1MDIy +# MzAwMDBaGA8yMDI0MDUwMzIzMDAwMFoweDA+BgorBgEEAYRZCgQBMTAwLjAKAgUA +# 6d4o8AIBADALAgEAAgMChb4CAf8wBwIBAAICEW0wCgIFAOnfenACAQAwNgYKKwYB +# BAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGG +# oDANBgkqhkiG9w0BAQUFAAOBgQAWrWoEheXdsNh6F10GV75SmZSzO+e6KlIJAz4a +# 9gNkA/iIWl2FkI71JTedkFnajtOt61x8eAgXtyTi2A2CRZcZna8aeU8Cut9WP1aQ +# j2Bqoxfu64NcU/HJFqOQ5oLCzel2bH+U8hLDGsm0ZwaILlhRMaIy66vpbtQdyXm0 +# byFhTDGCBA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# AhMzAAAB3V1XHZXUraobAAEAAAHdMA0GCWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG +# 9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEILvlmdRXhBkJXZJL +# 2qPw5GQtdqTqMK3w9LZh3Upda7XSMIH6BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCB +# vQQgYf8OLZplrE94mZx7R9FZN+1AjdNpUcWPkYjjesAxY2YwgZgwgYCkfjB8MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy +# b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAd1dVx2V1K2qGwABAAAB3TAi +# BCA/lBI100BkxEB55UhYNh+4YF70NoCY+GK2hItManwfXjANBgkqhkiG9w0BAQsF +# AASCAgCKbDM4ZEmMLmqiPd+s8fS1HienNsQqbRZihXX4UH1PGEaARdruOVcMtoEM +# Dlip4SmsfBYFgxhim2cs4zmJiQX0YINJrC+/ATZKSQayN2N2ju4cfNrxpsIZTQr9 +# yUrE7u2ClF8IN29UMAknFEckNu6pqpRZPnGxJvZc4hfQqU+kLezgrRtUaa4rDV44 +# 0B4ONXJL4uDpM/1BkOoE699QkYAnNroKCgaP4SzHiJ3h1Dg/MUdlNQCA/9A8X/T4 +# WtsDRXyDvDnsl/8zXCpZXxXRca7oEraoXt/hyo2MAghjLiNiHxFzDkNmd1y4nkEf +# GDd9zZy3vvHIDGTDDz898cDSRyWtZSRKrm8qxJsdupkEmVNXK+LVzCJEY3Eww4jN +# wNHvVhWAAKgUtIG8QMveGS5E3uJjAe4uD5afcwjaqpzA+NeBsmmr0v8FXcl3D2lW +# L1FygSH1MBhN5RLuI8qa1yRECA/jKIcUm4qKofVuMqQczbEF3QJ8xkLzZXvaE2QI +# 7A150kDl79tIocFdeiIcoq6xJHwXefIM9zZJPg8PesLwfdZ8jwk3H1jKtkEZju9n +# 5IRFtTd//sFQoRPQMyn9Z/376HNF5PsQs0M66r1tSfYooxz1lOwX2zLfTDGqVDY4 +# X8z/IvUjEByYjOtp4dyPBJZEJ1WeLlbJmx/dOkNpLUbt1l1q6Q== +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddEmptySiteServer.ps1 b/ExtendMigrateToAzure/postscripts/AddEmptySiteServer.ps1 new file mode 100644 index 0000000..bd32e95 --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddEmptySiteServer.ps1 @@ -0,0 +1,268 @@ + +$LogList = @() +$LogList += "Start runnng add site server script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +if(!(Get-CMSiteSystemServer -SiteSystemServerName $MachineName)) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." + + + if((Get-CMSiteSystemServer -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} +else +{ + $LogList += "$MachineName is already a Site System Server , skip running this script." + $LogList += 1 + return $LogList +} + +# SIG # Begin signature block +# MIIn6wYJKoZIhvcNAQcCoIIn3DCCJ9gCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA1zu8mJJuylrTN +# 2VB1pf0T8HXVMXJLp0WvyEAlFo15+6CCDYUwggYDMIID66ADAgECAhMzAAADri01 +# UchTj1UdAAAAAAOuMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwODU5WhcNMjQxMTE0MTkwODU5WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQD0IPymNjfDEKg+YyE6SjDvJwKW1+pieqTjAY0CnOHZ1Nj5irGjNZPMlQ4HfxXG +# yAVCZcEWE4x2sZgam872R1s0+TAelOtbqFmoW4suJHAYoTHhkznNVKpscm5fZ899 +# QnReZv5WtWwbD8HAFXbPPStW2JKCqPcZ54Y6wbuWV9bKtKPImqbkMcTejTgEAj82 +# 6GQc6/Th66Koka8cUIvz59e/IP04DGrh9wkq2jIFvQ8EDegw1B4KyJTIs76+hmpV +# M5SwBZjRs3liOQrierkNVo11WuujB3kBf2CbPoP9MlOyyezqkMIbTRj4OHeKlamd +# WaSFhwHLJRIQpfc8sLwOSIBBAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhx/vdKmXhwc4WiWXbsf0I53h8T8w +# VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh +# dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMTgzNjAfBgNVHSMEGDAW +# gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw +# MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov +# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx +# XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB +# AGrJYDUS7s8o0yNprGXRXuAnRcHKxSjFmW4wclcUTYsQZkhnbMwthWM6cAYb/h2W +# 5GNKtlmj/y/CThe3y/o0EH2h+jwfU/9eJ0fK1ZO/2WD0xi777qU+a7l8KjMPdwjY +# 0tk9bYEGEZfYPRHy1AGPQVuZlG4i5ymJDsMrcIcqV8pxzsw/yk/O4y/nlOjHz4oV +# APU0br5t9tgD8E08GSDi3I6H57Ftod9w26h0MlQiOr10Xqhr5iPLS7SlQwj8HW37 +# ybqsmjQpKhmWul6xiXSNGGm36GarHy4Q1egYlxhlUnk3ZKSr3QtWIo1GGL03hT57 +# xzjL25fKiZQX/q+II8nuG5M0Qmjvl6Egltr4hZ3e3FQRzRHfLoNPq3ELpxbWdH8t +# Nuj0j/x9Crnfwbki8n57mJKI5JVWRWTSLmbTcDDLkTZlJLg9V1BIJwXGY3i2kR9i +# 5HsADL8YlW0gMWVSlKB1eiSlK6LmFi0rVH16dde+j5T/EaQtFz6qngN7d1lvO7uk +# 6rtX+MLKG4LDRsQgBTi6sIYiKntMjoYFHMPvI/OMUip5ljtLitVbkFGfagSqmbxK +# 7rJMhC8wiTzHanBg1Rrbff1niBbnFbbV4UDmYumjs1FIpFCazk6AADXxoKCo5TsO +# zSHqr9gHgGYQC2hMyX9MGLIpowYCURx3L7kUiGbOiMwaMIIHejCCBWKgAwIBAgIK +# YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV +# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv +# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm +# aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw +# OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE +# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD +# VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG +# 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la +# UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc +# 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D +# dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ +# lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk +# kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 +# A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd +# X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL +# 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd +# sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 +# T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS +# 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI +# bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL +# BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD +# uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv +# c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF +# BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h +# cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA +# YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn +# 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 +# v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b +# pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ +# KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy +# CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp +# mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi +# hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb +# BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS +# oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL +# gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX +# cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGbwwghm4AgEBMIGVMH4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p +# Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAAOuLTVRyFOPVR0AAAAA +# A64wDQYJYIZIAWUDBAIBBQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw +# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIIPd +# 0o2GyQDNlhJ3uIS8EaD9QgU7M8R7CiOOXwxC6MQDMGAGCisGAQQBgjcCAQwxUjBQ +# oDKAMABFAHgAdABlAG4AZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBl +# AHgAZaEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAE +# ggEA6iJCYRgWxznRTa+CrZluZpUTU9ib7zvOUdiRQePPjxp9WqnnO7UIky8UO60U +# SDXRTavAnaH6Bpfr4hPwXJ+RGV/AFXMbEfn35WJGtX0X1kJ4jVnIN2o3Z5n9NLaP +# QyXqO1/Q3ZyKIh3kGjPhaMwImCPPw55o7gf5mnQTf5femFu01UMm2fJdEw7sjl5O +# SSDV4SH5HHh7VthzJ8YK72Rssu3+kUnj+URtACvxq47mIynBoFToGSlIWEpKKN3V +# u3lccjD8nNEPSsUsppFs0DzN1K1N42Rw7GQhKaWHYVws1DAt4+n80taERK4kOcwA +# 5GJAxftt9zSE62Fg5ia5Xy4TtqGCFygwghckBgorBgEEAYI3AwMBMYIXFDCCFxAG +# CSqGSIb3DQEHAqCCFwEwghb9AgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG +# 9w0BCRABBKCCAUgEggFEMIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQC +# AQUABCCnI9bK/pLOF3rDNH3d+9Rv5tNb2pxl5PfBhxVunPXr5AIGZjOoiKMnGBMy +# MDI0MDUwMjIwNTgwNi40MDRaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFu +# ZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjA4 +# NDItNEJFNi1DMjlBMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2 +# aWNloIIRdzCCBycwggUPoAMCAQICEzMAAAHajtXJWgDREbEAAQAAAdowDQYJKoZI +# hvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm +# MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEy +# MTkwNjU5WhcNMjUwMTEwMTkwNjU5WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgT +# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m +# dCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0 +# aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjowODQyLTRCRTYt +# QzI5QTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIw +# DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJOQBgh2tVFR1j8jQA4NDf8bcVrX +# SN080CNKPSQo7S57sCnPU0FKF47w2L6qHtwm4EnClF2cruXFp/l7PpMQg25E7X8x +# Dmvxr8BBE6iASAPCfrTebuvAsZWcJYhy7prgCuBf7OidXpgsW1y8p6Vs7sD2aup/ +# 0uveYxeXlKtsPjMCplHkk0ba+HgLho0J68Kdji3DM2K59wHy9xrtsYK+X9erbDGZ +# 2mmX3765aS5Q7/ugDxMVgzyj80yJn6ULnknD9i4kUQxVhqV1dc/DF6UBeuzfukkM +# ed7trzUEZMRyla7qhvwUeQlgzCQhpZjz+zsQgpXlPczvGd0iqr7lACwfVGog5plI +# zdExvt1TA8Jmef819aTKwH1IVEIwYLA6uvS8kRdA6RxvMcb//ulNjIuGceyykMAX +# EynVrLG9VvK4rfrCsGL3j30Lmidug+owrcCjQagYmrGk1hBykXilo9YB8Qyy5Q1K +# hGuH65V3zFy8a0kwbKBRs8VR4HtoPYw9z1DdcJfZBO2dhzX3yAMipCGm6Smvmvav +# RsXhy805jiApDyN+s0/b7os2z8iRWGJk6M9uuT2493gFV/9JLGg5YJJCJXI+yxkO +# /OXnZJsuGt0+zWLdHS4XIXBG17oPu5KsFfRTHREloR2dI6GwaaxIyDySHYOtvIyd +# la7u4lfnfCjY/qKTAgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUoXyNyVE9ZhOVizEU +# VwhNgL8PX0UwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0f +# BFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv +# TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsG +# AQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAx +# MCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO +# BgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBALmDVdTtuI0jAEt41O2O +# M8CU237TGMyhrGr7FzKCEFaXxtoqk/IObQriq1caHVh2vyuQ24nz3TdOBv7rcs/q +# nPjOxnXFLyZPeaWLsNuARVmUViyVYXjXYB5DwzaWZgScY8GKL7yGjyWrh78WJUgh +# 7rE1+5VD5h0/6rs9dBRqAzI9fhZz7spsjt8vnx50WExbBSSH7rfabHendpeqbTmW +# /RfcaT+GFIsT+g2ej7wRKIq/QhnsoF8mpFNPHV1q/WK/rF/ChovkhJMDvlqtETWi +# 97GolOSKamZC9bYgcPKfz28ed25WJy10VtQ9P5+C/2dOfDaz1RmeOb27Kbegha0S +# fPcriTfORVvqPDSa3n9N7dhTY7+49I8evoad9hdZ8CfIOPftwt3xTX2RhMZJCVoF +# labHcvfb84raFM6cz5EYk+x1aVEiXtgK6R0xn1wjMXHf0AWlSjqRkzvSnRKzFsZw +# El74VahlKVhI+Ci9RT9+6Gc0xWzJ7zQIUFE3Jiix5+7KL8ArHfBY9UFLz4snboJ7 +# Qip3IADbkU4ZL0iQ8j8Ixra7aSYfToUefmct3dM69ff4Eeh2Kh9NsKiiph589Ap/ +# xS1jESlrfjL/g/ZboaS5d9a2fA598mubDvLD5x5PP37700vm/Y+PIhmp2fTvuS2s +# ndeZBmyTqcUNHRNmCk+njV3nMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAA +# AAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +# c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +# b3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUg +# QXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8 +# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk +# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N +# aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2 +# AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpS +# g0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2r +# rPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k +# 45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSu +# eik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09 +# /SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR +# 6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxC +# aC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaD +# IV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMUR +# HXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMB +# AAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQq +# p1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ +# 6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt +# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBB +# MAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP +# 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWlj +# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2 +# LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu +# Y3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2 +# Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03d +# mLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1Tk +# eFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kp +# icO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKp +# W99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrY +# UP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QB +# jloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkB +# RH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0V +# iY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq +# 0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1V +# M1izoXBm8qGCAtMwggI8AgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzAR +# BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p +# Y3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQg +# T3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjowODQy +# LTRCRTYtQzI5QTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZaIjCgEBMAcGBSsOAwIaAxUAQqIfIYljHUbNoY0/wjhXRn/sSA2ggYMwgYCkfjB8 +# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk +# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N +# aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOne +# JwEwIhgPMjAyNDA1MDIyMjUxNDVaGA8yMDI0MDUwMzIyNTE0NVowczA5BgorBgEE +# AYRZCgQBMSswKTAKAgUA6d4nAQIBADAGAgEAAgEBMAcCAQACAhF8MAoCBQDp33iB +# AgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSCh +# CjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAlP7F7476ERx/Koai3iTLGxIE +# LfX2VyNk4jCOuPZBXtPM43X5gNvcZ/LCoM9GubinKzDRwnrDaZMd4UgRErlEgo9J +# 3IbfpJ9aWd/6ogsHQiBIx+l5P7leoUdJEXE4oou2j5WAsIsE5x2t10Ivqjftbew0 +# 2vV9jrMTwCXC5rZ43z4xggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEG +# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj +# cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt +# cCBQQ0EgMjAxMAITMwAAAdqO1claANERsQABAAAB2jANBglghkgBZQMEAgEFAKCC +# AUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCDu +# hMMZ58R5rorc3GfntcE4XqWmQ0PAsp8jPhI2woQOgzCB+gYLKoZIhvcNAQkQAi8x +# geowgecwgeQwgb0EICKlo2liwO+epN73kOPULT3TbQjmWOJutb+d0gI7GD3GMIGY +# MIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG +# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAHajtXJWgDR +# EbEAAQAAAdowIgQgmlMqiaLTb5oLMJOwPthPz45EzH0UVQd3ZScbOaPhzaUwDQYJ +# KoZIhvcNAQELBQAEggIAJfoIrXjVn5FXyrQeJWrLv3sOKCgQ382p8sdq8zbfZkRW +# 7iU8Nxaq7TEuRoOzDRHLQukEp04HuxmmM71ZX7XrTPhs2lmBhNF/qatgs6bDaI4D +# /rVra7s0Oho4y35oSo+TbLR4ziGd1+SmDCDGCX0YnmuKq3+ugebWure3RNhdIoJq +# p4mRKYlyfbLquJGAM+YmxOaVYdZ0xS3anCfn71bMKiNo7gyOkzc/HDAqTZS2bm6V +# NcWTQr8O5QvvDqyTCq3O39r9aVeBR+hvhgD28axjo+FcEa+U74VgeJKIMO8nFrs0 +# sG6ts467z/GRwQpr7Drh9qXMwR/g0GbvpWVIod+xC6qVm+67RZpMGTxIGoFJqKDo +# R3gxlNjoGQktN/OqmbE+1le+HAaWyXmlW1ExoHlCx2N4R39a7fGgehbSh5Sa9iQQ +# bwVjpJpcFrxvhnZzpSpCSAlFQHygvo65qVilx74noaiEYEvtlrWhm2hTf1oXVxL+ +# mxAZEpXSA6e3kBqq9bkVQza5gUFOocfC3hVlP0a8IBTIoTSfEBrTtCQQMaj55Dq0 +# gVe1HJG1oSsXNwelX1WbSe47YBSPNe/T3p0zxy1GBgxvsHmb5DVkvDIjpqkZR9EM +# VuXrb2U/2dBdNd27KLL3edKoHpymsgQIy1wiXQFerb7HbO+mzcTQYLxhQvh/zP8= +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddMP.ps1 b/ExtendMigrateToAzure/postscripts/AddMP.ps1 new file mode 100644 index 0000000..fb4a565 --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddMP.ps1 @@ -0,0 +1,281 @@ + +$LogList = @() +$LogList += "Start running add management point script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((Get-CMManagementPoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Management Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Adding management point on $MachineName ..." + $LogList += Add-CMManagementPoint -InputObject $SystemServer -CommunicationType Http + $LogList += "Finished adding management point on $MachineName ..." + + if((Get-CMManagementPoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} + +# SIG # Begin signature block +# MIIn3AYJKoZIhvcNAQcCoIInzTCCJ8kCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCagjnjMFJf8jsP +# Ni8CcZhN5R2J02481POPn4RpnhJFZKCCDXYwggX0MIID3KADAgECAhMzAAADrzBA +# DkyjTQVBAAAAAAOvMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwOTAwWhcNMjQxMTE0MTkwOTAwWjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOS8s1ra6f0YGtg0OhEaQa/t3Q+q1MEHhWJhqQVuO5amYXQpy8MDPNoJYk+FWA +# hePP5LxwcSge5aen+f5Q6WNPd6EDxGzotvVpNi5ve0H97S3F7C/axDfKxyNh21MG +# 0W8Sb0vxi/vorcLHOL9i+t2D6yvvDzLlEefUCbQV/zGCBjXGlYJcUj6RAzXyeNAN +# xSpKXAGd7Fh+ocGHPPphcD9LQTOJgG7Y7aYztHqBLJiQQ4eAgZNU4ac6+8LnEGAL +# go1ydC5BJEuJQjYKbNTy959HrKSu7LO3Ws0w8jw6pYdC1IMpdTkk2puTgY2PDNzB +# tLM4evG7FYer3WX+8t1UMYNTAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQURxxxNPIEPGSO8kqz+bgCAQWGXsEw +# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW +# MBQGA1UEBRMNMjMwMDEyKzUwMTgyNjAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci +# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG +# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu +# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 +# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAISxFt/zR2frTFPB45Yd +# mhZpB2nNJoOoi+qlgcTlnO4QwlYN1w/vYwbDy/oFJolD5r6FMJd0RGcgEM8q9TgQ +# 2OC7gQEmhweVJ7yuKJlQBH7P7Pg5RiqgV3cSonJ+OM4kFHbP3gPLiyzssSQdRuPY +# 1mIWoGg9i7Y4ZC8ST7WhpSyc0pns2XsUe1XsIjaUcGu7zd7gg97eCUiLRdVklPmp +# XobH9CEAWakRUGNICYN2AgjhRTC4j3KJfqMkU04R6Toyh4/Toswm1uoDcGr5laYn +# TfcX3u5WnJqJLhuPe8Uj9kGAOcyo0O1mNwDa+LhFEzB6CB32+wfJMumfr6degvLT +# e8x55urQLeTjimBQgS49BSUkhFN7ois3cZyNpnrMca5AZaC7pLI72vuqSsSlLalG +# OcZmPHZGYJqZ0BacN274OZ80Q8B11iNokns9Od348bMb5Z4fihxaBWebl8kWEi2O +# PvQImOAeq3nt7UWJBzJYLAGEpfasaA3ZQgIcEXdD+uwo6ymMzDY6UamFOfYqYWXk +# ntxDGu7ngD2ugKUuccYKJJRiiz+LAUcj90BVcSHRLQop9N8zoALr/1sJuwPrVAtx +# HNEgSW+AKBqIxYWM4Ev32l6agSUAezLMbq5f3d8x9qzT031jMDT+sUAoCw0M5wVt +# CUQcqINPuYjbS1WgJyZIiEkBMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq +# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x +# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg +# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 +# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr +# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg +# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy +# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 +# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh +# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k +# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB +# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn +# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 +# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w +# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o +# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD +# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa +# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny +# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG +# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV +# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG +# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl +# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb +# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l +# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 +# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 +# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 +# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam +# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa +# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah +# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA +# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt +# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr +# /Xmfwb1tbWrJUnMTDXpQzTGCGbwwghm4AgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp +# Z25pbmcgUENBIDIwMTECEzMAAAOvMEAOTKNNBUEAAAAAA68wDQYJYIZIAWUDBAIB +# BQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO +# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIEXFqYV5XPzd6R/W5myPo0Ba +# P2RsR2vh8zn5QaK8d7LVMGAGCisGAQQBgjcCAQwxUjBQoDKAMABFAHgAdABlAG4A +# ZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBlAHgAZaEagBhodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEAboSoqf+rGQ/KwqPg +# o5gpqFxNOtuZjC32nuFCNkwMAJLF0DMmqfhCW8cJ71Rb5VoWjn1S7MaNdRCmB/ol +# +f5anm6OdfdPxaTSRKaMLMCVa0bONoRlci2aujcTDe8cM2lyoz6Ysk5JdSQmUW/u +# 0Tq+u+e3Lp01ris7JQ47psBnJNz13ENNieJnmy+XuMxVVCAZy9UAaFME7UlFEPni +# 2btQnZMaFGDb5Rp614J0b+L3yoKksoFQCYFD7tE28s374oj5SPQXfDdNCXwOwpUP +# B/l+DTFNU2QLDJCG08yL6potA2hk7ESh6qRdJ1IVH1lM7YXQx8nMqICQOL1BHqYT +# n9JPb6GCFygwghckBgorBgEEAYI3AwMBMYIXFDCCFxAGCSqGSIb3DQEHAqCCFwEw +# ghb9AgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFE +# MIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCChWfjjzobJVlbt +# /N1dEQeXRtVdITdudMFy5Rshru9bjwIGZjOpymoMGBMyMDI0MDUwMjIwNTgwOC45 +# MjVaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExp +# bWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjE3OUUtNEJCMC04MjQ2MSUw +# IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRdzCCBycwggUP +# oAMCAQICEzMAAAHg1PwfExUffl0AAQAAAeAwDQYJKoZIhvcNAQELBQAwfDELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z +# b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEyMTkwNzE5WhcNMjUwMTEw +# MTkwNzE5WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEt +# MCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYw +# JAYDVQQLEx1UaGFsZXMgVFNTIEVTTjoxNzlFLTRCQjAtODI0NjElMCMGA1UEAxMc +# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAKyHnPOhxbvRATnGjb/6fuBhh3ZLzotAxAgdLaZ/zkRFUdeS +# KzyNt3tqorMK7GDvcXdKs+qIMUbvenlH+w53ssPa6rYP760ZuFrABrfserf0kFay +# NXVzwT7jarJOEjnFMBp+yi+uwQ2TnJuxczceG5FDHrII6sF6F879lP6ydY0BBZkZ +# 9t39e/svNRieA5gUnv/YcM/bIMY/QYmd9F0B+ebFYi+PH4AkXahNkFgK85OIaRrD +# GvhnxOa/5zGL7Oiii7+J9/QHkdJGlfnRfbQ3QXM/5/umBOKG4JoFY1niZ5RVH5PT +# 0+uCjwcqhTbnvUtfK+N+yB2b9rEZvp2Tv4ZwYzEd9A9VsYMuZiCSbaFMk77LwVbk +# lpnw4aHWJXJkEYmJvxRbcThE8FQyOoVkSuKc5OWZ2+WM/j50oblA0tCU53AauvUO +# ZRoQBh89nHK+m5pOXKXdYMJ+ceuLYF8h5y/cXLQMOmqLJz5l7MLqGwU0zHV+MEO8 +# L1Fo2zEEQ4iL4BX8YknKXonHGQacSCaLZot2kyJVRsFSxn0PlPvHVp0YdsCMzdei +# w9jAZ7K9s1WxsZGEBrK/obipX6uxjEpyUA9mbVPljlb3R4MWI0E2xI/NM6F4Ac8C +# eax3YWLT+aWCZeqiIMLxyyWZg+i1KY8ZEzMeNTKCEI5wF1wxqr6T1/MQo+8tAgMB +# AAGjggFJMIIBRTAdBgNVHQ4EFgQUcF4XP26dV+8SusoA1XXQ2TDSmdIwHwYDVR0j +# BBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggr +# BgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N +# aWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0T +# AQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw +# DQYJKoZIhvcNAQELBQADggIBAMATzg6R/A0ldO7MqGxD1VJji5yVA1hHb0Hc0Yjt +# v7WkxQ8iwfflulX5Us64tD3+3NT1JkphWzaAWf2wKdAw35RxtQG1iON3HEZ0X23n +# de4Kg/Wfbx5rEHkZ9bzKnR/2N5A16+w/1pbwJzdfRcnJT3cLyawr/kYjMWd63OP0 +# Glq70ua4WUE/Po5pU7rQRbWEoQozY24hAqOcwuRcm6Cb0JBeTOCeRBntEKgjKep4 +# pRaQt7b9vusT97WeJcfaVosmmPtsZsawgnpIjbBa55tHfuk0vDkZtbIXjU4mr5dn +# s9dnanBdBS2PY3N3hIfCPEOszquwHLkfkFZ/9bxw8/eRJldtoukHo16afE/AqP/s +# mmGJh5ZR0pmgW6QcX+61rdi5kDJTzCFaoMyYzUS0SEbyrDZ/p2KOuKAYNngljiOl +# llct0uJVz2agfczGjjsKi2AS1WaXvOhgZNmGw42SFB1qaloa8Kaux9Q2HHLE8gee +# /5rgOnx9zSbfVUc7IcRNodq6R7v+Rz+P6XKtOgyCqW/+rhPmp/n7Fq2BGTRkcy// +# hmS32p6qyglr2K4OoJDJXxFs6lwc8D86qlUeGjUyo7hVy5VvyA+y0mGnEAuA85ts +# OcUPlzwWF5sv+B5fz35OW3X4Spk5SiNulnLFRPM5XCsSHqvcbC8R3qwj2w1evPhZ +# xDuNMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0B +# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG +# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw +# HhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh +# pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xP +# x2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ +# 3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt +# gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYt +# cI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXA +# hjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0S +# idb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSC +# D/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEB +# c8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh +# 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8Fdsa +# N8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr +# BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q +# /y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBR +# BgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP +# BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjE +# MFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv +# Y3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEF +# BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +# a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEB +# CwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX +# wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOw +# Bb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jf +# ZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ +# 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ +# ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgs +# sU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6 +# OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p +# /cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6 +# TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784 +# cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtMwggI8 +# AgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1p +# dGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjoxNzlFLTRCQjAtODI0NjElMCMG +# A1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIa +# AxUAbfPR1fBX6HxYfyPx8zYzJU5fIQyggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOneKEIwIhgPMjAyNDA1MDIy +# MjU3MDZaGA8yMDI0MDUwMzIyNTcwNlowczA5BgorBgEEAYRZCgQBMSswKTAKAgUA +# 6d4oQgIBADAGAgEAAgECMAcCAQACAhGaMAoCBQDp33nCAgEAMDYGCisGAQQBhFkK +# BAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJ +# KoZIhvcNAQEFBQADgYEAl7oE6xsRC+tKSaM+AOP/8WG8b7+wNMv5TeQRWHXDYUMt +# wcVy6UPZJX2SYYXsTu2wC1ufEusy8tyZP7riGeNi2+RBmPuz935+Yg/czioe26sR +# togcFjKufQMd3/LXtXB//uc9ujbht5n5KToz8RD3X156hxlXOeQVw7dnGPHD8/Ax +# ggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAA +# AeDU/B8TFR9+XQABAAAB4DANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkD +# MQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCD35YvWZ+jkCMdZ6ldt0Liw +# lMXt56wgCrjvs7mhxYJR9TCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EIOPu +# Ur/yOeVtOM+9zvsMIJJvhNkClj2cmbnCGwr/aQrBMIGYMIGApH4wfDELMAkGA1UE +# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc +# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0 +# IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAHg1PwfExUffl0AAQAAAeAwIgQgzXkB +# yXtxfH6F+xGCgYG9VWKAxj4m3diicLlVPw8kxoQwDQYJKoZIhvcNAQELBQAEggIA +# HgLsWiCDwk5eNg9POJk328IbGYjMJh+PorOe0rWR99h0W0pYpHeG+KBGAtWIGYJd +# X7C4vL9Y50va9TLZz3ODl2vNDluE+R0R+lvDLATwRvVSOnkQop74/PipijHiodpZ +# eWJp236TCoOrL9yB89gfjc3CTYDINmDr3syBthbkZ3W8E6FNVPspOadCn4dwlpF6 +# HgYV1t4lpvxqlzkBryUvqETAKVoKPAw/hSzZlrCr8k09Iuzhuvv6pkwz9oKaacS7 +# lm02sRVzgrNIBpK6Z2Csd18HzoVlfpMifYruPyDpKQx1ygV1l5uIjGNXLAp+BCcx +# DBYEnaBkK93t0n1OFmYbny8CfXSArWdq7PPChOU0F+Fqui1tk1rDE27SASJxPwYi +# PSyL+OmW3eXTfT4RZdpM+H7X32yULF5kbLzK4MIYCvzlrqsDpydXeqDoELkA/DWP +# X4qoMSz8SYDOMGIUqZhzGoHP0lCJZLp9NCf/DldjFqYHubW2fkyQDQUAGeAgN5w8 +# 3QNe3lFcgoPcii1ChCj1WaG1A/jGtb2uWnwxXT9cvJtGjMh4POXJWGgLmKBoflV4 +# x3dv8QvXAScwUFMm+GGJVDIzwsom7j3DPN1zYEeIUNSRQlYF2TSErR0yH8UL5OiM +# 3dbPu+sUtc9rX7LWH72wwYS5Bb+J+/ZqxYaCB8PTegE= +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddMPHTTPS.ps1 b/ExtendMigrateToAzure/postscripts/AddMPHTTPS.ps1 new file mode 100644 index 0000000..6e8d27c --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddMPHTTPS.ps1 @@ -0,0 +1,286 @@ + +#ClientCommunication:__HTTPSORNOT__ +#ClientConnectionType:__ClientConnectionType__ + +$LogList = @() +$LogList += "Start running add management point (HTTPS) script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$Communication = "__HTTPSORNOT__" +$ClientConnectionType = "__ClientConnectionType__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((Get-CMManagementPoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Management Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Adding management point on $MachineName ..." + $LogList += Add-CMManagementPoint -InputObject $SystemServer -CommunicationType $Communication -ClientConnectionType $ClientConnectionType + $LogList += "Finished adding management point on $MachineName ..." + + if((Get-CMManagementPoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} + +# SIG # Begin signature block +# MIIn3wYJKoZIhvcNAQcCoIIn0DCCJ8wCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBwOZe3OlmWKN45 +# PgYjBnXedqr8HwtOZTbqlwSgFwX5HaCCDXYwggX0MIID3KADAgECAhMzAAADrzBA +# DkyjTQVBAAAAAAOvMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwOTAwWhcNMjQxMTE0MTkwOTAwWjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOS8s1ra6f0YGtg0OhEaQa/t3Q+q1MEHhWJhqQVuO5amYXQpy8MDPNoJYk+FWA +# hePP5LxwcSge5aen+f5Q6WNPd6EDxGzotvVpNi5ve0H97S3F7C/axDfKxyNh21MG +# 0W8Sb0vxi/vorcLHOL9i+t2D6yvvDzLlEefUCbQV/zGCBjXGlYJcUj6RAzXyeNAN +# xSpKXAGd7Fh+ocGHPPphcD9LQTOJgG7Y7aYztHqBLJiQQ4eAgZNU4ac6+8LnEGAL +# go1ydC5BJEuJQjYKbNTy959HrKSu7LO3Ws0w8jw6pYdC1IMpdTkk2puTgY2PDNzB +# tLM4evG7FYer3WX+8t1UMYNTAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQURxxxNPIEPGSO8kqz+bgCAQWGXsEw +# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW +# MBQGA1UEBRMNMjMwMDEyKzUwMTgyNjAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci +# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG +# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu +# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 +# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAISxFt/zR2frTFPB45Yd +# mhZpB2nNJoOoi+qlgcTlnO4QwlYN1w/vYwbDy/oFJolD5r6FMJd0RGcgEM8q9TgQ +# 2OC7gQEmhweVJ7yuKJlQBH7P7Pg5RiqgV3cSonJ+OM4kFHbP3gPLiyzssSQdRuPY +# 1mIWoGg9i7Y4ZC8ST7WhpSyc0pns2XsUe1XsIjaUcGu7zd7gg97eCUiLRdVklPmp +# XobH9CEAWakRUGNICYN2AgjhRTC4j3KJfqMkU04R6Toyh4/Toswm1uoDcGr5laYn +# TfcX3u5WnJqJLhuPe8Uj9kGAOcyo0O1mNwDa+LhFEzB6CB32+wfJMumfr6degvLT +# e8x55urQLeTjimBQgS49BSUkhFN7ois3cZyNpnrMca5AZaC7pLI72vuqSsSlLalG +# OcZmPHZGYJqZ0BacN274OZ80Q8B11iNokns9Od348bMb5Z4fihxaBWebl8kWEi2O +# PvQImOAeq3nt7UWJBzJYLAGEpfasaA3ZQgIcEXdD+uwo6ymMzDY6UamFOfYqYWXk +# ntxDGu7ngD2ugKUuccYKJJRiiz+LAUcj90BVcSHRLQop9N8zoALr/1sJuwPrVAtx +# HNEgSW+AKBqIxYWM4Ev32l6agSUAezLMbq5f3d8x9qzT031jMDT+sUAoCw0M5wVt +# CUQcqINPuYjbS1WgJyZIiEkBMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq +# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x +# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg +# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 +# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr +# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg +# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy +# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 +# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh +# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k +# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB +# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn +# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 +# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w +# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o +# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD +# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa +# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny +# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG +# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV +# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG +# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl +# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb +# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l +# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 +# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 +# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 +# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam +# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa +# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah +# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA +# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt +# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr +# /Xmfwb1tbWrJUnMTDXpQzTGCGb8wghm7AgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp +# Z25pbmcgUENBIDIwMTECEzMAAAOvMEAOTKNNBUEAAAAAA68wDQYJYIZIAWUDBAIB +# BQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO +# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIJ7nIBGEB8kpKYm/WQVsNRuy +# tWm1gxcJuQcGSdPIEA79MGAGCisGAQQBgjcCAQwxUjBQoDKAMABFAHgAdABlAG4A +# ZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBlAHgAZaEagBhodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEAamNcWCqirVx4chmc +# OItiP+wn1jbo0Z/TOY3aqX2crdogwC4Vp/86mgWop2R0UdV0nk6CiteqgBzH8NQm +# cqeq3hagPI8MEownzOYDUGbXQsPWDCC7kpUkiICjpzWvVeHgi8wXf/rK4sT2Zmet +# j6SZKKKrWfzviFnApLF/oAfbJlFYspJYWbXlccb+/Pxd/yLiShKh2/aZypmIA0pn +# oZT3CLhKVWDlVx5pKQgkjtDziNF2FPzTxS2Hlhkc1Jj7khn89Owqa/EDK0t3FiVE +# 7owJTevj7HTtkYmD/tz8v7k3X++ls0ae6YIuqIwjfRk0ZxoaX/TYs4wHT2Ts2vft +# aFjllaGCFyswghcnBgorBgEEAYI3AwMBMYIXFzCCFxMGCSqGSIb3DQEHAqCCFwQw +# ghcAAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFE +# MIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCDr0ary4OBw7VOc +# 66nuOMCUQ+Ur3Nt2eteO/h+UPLndFQIGZjOr8DoMGBMyMDI0MDUwMjIwNTgwOS44 +# NzlaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExp +# bWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkQwODItNEJGRC1FRUJBMSUw +# IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRejCCBycwggUP +# oAMCAQICEzMAAAHcweCMwl9YXo4AAQAAAdwwDQYJKoZIhvcNAQELBQAwfDELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z +# b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEyMTkwNzA2WhcNMjUwMTEw +# MTkwNzA2WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEt +# MCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYw +# JAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpEMDgyLTRCRkQtRUVCQTElMCMGA1UEAxMc +# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAIvIsyA1sjg9kSKJzelrUWF5ShqYWL83amn3SE5JyIVPUC7F +# 6qTcLphhHZ9idf21f0RaGrU8EHydF8NxPMR2KVNiAtCGPJa8kV1CGvn3beGB2m2l +# tmqJanG71mAywrkKATYniwKLPQLJ00EkXw5TSwfmJXbdgQLFlHyfA5Kg+pUsJXzq +# umkIvEr0DXPvptAGqkdFLKwo4BTlEgnvzeTfXukzX8vQtTALfVJuTUgRU7zoP/RF +# Wt3WagahZ6UloI0FC8XlBQDVDX5JeMEsx7jgJDdEnK44Y8gHuEWRDq+SG9Xo0GIO +# jiuTWD5uv3vlEmIAyR/7rSFvcLnwAqMdqcy/iqQPMlDOcd0AbniP8ia1BQEUnfZT +# 3UxyK9rLB/SRiKPyHDlg8oWwXyiv3+bGB6dmdM61ur6nUtfDf51lPcKhK4Vo83pO +# E1/niWlVnEHQV9NJ5/DbUSqW2RqTUa2O2KuvsyRGMEgjGJA12/SqrRqlvE2fiN5Z +# mZVtqSPWaIasx7a0GB+fdTw+geRn6Mo2S6+/bZEwS/0IJ5gcKGinNbfyQ1xrvWXP +# tXzKOfjkh75iRuXourGVPRqkmz5UYz+R5ybMJWj+mfcGqz2hXV8iZnCZDBrrnZiv +# nErCMh5Flfg8496pT0phjUTH2GChHIvE4SDSk2hwWP/uHB9gEs8p/9Pe/mt9AgMB +# AAGjggFJMIIBRTAdBgNVHQ4EFgQU6HPSBd0OfEX3uNWsdkSraUGe3dswHwYDVR0j +# BBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggr +# BgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N +# aWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0T +# AQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw +# DQYJKoZIhvcNAQELBQADggIBANnrb8Ewr8eX/H1sKt3rnwTDx4AqgHbkMNQo+kUG +# wCINXS3y1GUcdqsK/R1g6Tf7tNx1q0NpKk1JTupUJfHdExKtkuhHA+82lT7yISp/ +# Y74dqJ03RCT4Q+8ooQXTMzxiewfErVLt8WefebncST0i6ypKv87pCYkxM24bbqbM +# /V+M5VBppCUs7R+cETiz/zEA1AbZL/viXtHmryA0CGd+Pt9c+adsYfm7qe5UMnS0 +# f/YJmEEMkEqGXCzyLK+dh+UsFi0d4lkdcE+Zq5JNjIHesX1wztGVAtvX0DYDZdN2 +# WZ1kk+hOMblUV/L8n1YWzhP/5XQnYl03AfXErn+1Eatylifzd3ChJ1xuGG76YbWg +# iRXnDvCiwDqvUJevVRY1qy4y4vlVKaShtbdfgPyGeeJ/YcSBONOc0DNTWbjMbL50 +# qeIEC0lHSpL2rRYNVu3hsHzG8n5u5CQajPwx9PzpsZIeFTNHyVF6kujI4Vo9NvO/ +# zF8Ot44IMj4M7UX9Za4QwGf5B71x57OjaX53gxT4vzoHvEBXF9qCmHRgXBLbRomJ +# fDn60alzv7dpCVQIuQ062nyIZKnsXxzuKFb0TjXWw6OFpG1bsjXpOo5DMHkysrib +# xHor4Yz5dZjVyHANyKo0bSrAlVeihcaG5F74SZT8FtyHAW6IgLc5w/3D+R1obDhK +# Z21WMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0B +# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG +# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw +# HhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh +# pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xP +# x2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ +# 3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt +# gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYt +# cI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXA +# hjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0S +# idb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSC +# D/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEB +# c8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh +# 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8Fdsa +# N8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr +# BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q +# /y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBR +# BgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP +# BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjE +# MFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv +# Y3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEF +# BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +# a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEB +# CwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX +# wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOw +# Bb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jf +# ZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ +# 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ +# ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgs +# sU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6 +# OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p +# /cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6 +# TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784 +# cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtYwggI/ +# AgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1p +# dGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpEMDgyLTRCRkQtRUVCQTElMCMG +# A1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIa +# AxUAHDn/cz+3yRkIUCJfSbL3djnQEqaggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOneKmgwIhgPMjAyNDA1MDIy +# MzA2MTZaGA8yMDI0MDUwMzIzMDYxNlowdjA8BgorBgEEAYRZCgQBMS4wLDAKAgUA +# 6d4qaAIBADAJAgEAAgEEAgH/MAcCAQACAhFIMAoCBQDp33voAgEAMDYGCisGAQQB +# hFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAw +# DQYJKoZIhvcNAQEFBQADgYEAiubm29f2iT06hWs6k5a7wm+FGMIWHUNtdUtXYfLU +# kWX5T6b2NCPrtjW36ZJ2DzWHtvQhwv28aLrIBKIRl6xWTegDr+dP9jiNdeENFh7b +# Bpw+de/rqZ7mGSYahh55B6abM0qWJEL3TP2YsRYroObe+TzG0lVf5GNGpujUYlhZ +# GgkxggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAIT +# MwAAAdzB4IzCX1hejgABAAAB3DANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcN +# AQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCDxHpWzpU5mJSk/I1fm +# EIFiXQF5XzhS4vDTp48t9QP7ADCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0E +# IFOnF4pq2UQ/jLypnOO5YvQ67QirEQsOFfZMvKXEgg03MIGYMIGApH4wfDELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9z +# b2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAHcweCMwl9YXo4AAQAAAdwwIgQg +# UVHBIVYOFnQ1cv4Qc63cwpMd10yTxbVYUkHgZLg03b0wDQYJKoZIhvcNAQELBQAE +# ggIAOjCSjqgA5CRpSZetqrtvJzOMYqacu0f75IA4XDkEzugXmhk764+cOR2VlK5m +# GfG2KWQd8aKKZWeStObODXXI9d87D/NPFkSgbqWvO5bCX5hltw030ZwsaV/7jG2Q +# L+z0+DURyx7x/DQYssoEcMqtYXwvCUgX7GhO1jk+ZT2irF+8GopqQ8bHNgYiJqYk +# aGpau+Ma+H/KFq+TavTgrpoDAFOCxEPwpXf+DHpAS+yFh3O4ZUsx5brwEL0sQa4/ +# 6/QNHJ4MoeN9OXsNaJAYV4GMhwstwTLcQIkJGS/BEKorGDRX6R4jjN7xtVvRZ9QI +# rAD1O4t7bdIF4LZm6mYaWIscZ0RM1nPKar7jFVLDWDv1NJy3o3RviBH70m1SUM5j +# AA4f6+f9UTeIgsh4Hv34mQkrELk/A4YLR4VrOH/ivQyWEe0OuYA7k+NvZMrsdor+ +# 8AvswFcuNXeQctKrY5Jtfb5TGswcINd2w/QwNVe48CU1SUgAeBeN8OpfI+aEZZC0 +# QUVnYzlZjOmd4UHBp8iGXTYQ+x8foWoMdRlSueQC8FXSrRLw1YoLYhOPJx7WcL+7 +# WKUG7GYLyfrlQztO0REUgofh3W2Me8mu6sYEvBVkOcugdsvzqhDZXmH36OwVJHGR +# fDhjz25g9puC77G6EkPRMJWO3xvi1cPot0X03jf3tn9xZ+Y= +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddPassiveSite.ps1 b/ExtendMigrateToAzure/postscripts/AddPassiveSite.ps1 new file mode 100644 index 0000000..29be5a9 --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddPassiveSite.ps1 @@ -0,0 +1,293 @@ + +$LogList = @() +$LogList += "Start running add passive site script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") + +Import-Module "$uiInstallPath\bin\ConfigurationManager.psd1" + +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") + +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$NALPath = "[""Display=\\$($MachineName)\""]MSWNET:[""SMS_SITE=$($SiteCode)""]\\$($MachineName)\" + +#Add primary site server to administrators +$idx = $MachineName.IndexOf(".") +$psname = $MachineName.SubString(0, $idx) +"$" +$domainname = $MachineName.SubString($idx + 1) +$dname = $env:userdomain +$AdminGroupName = (Get-WmiObject -Class Win32_Group -Filter 'LocalAccount = True AND SID = "S-1-5-32-544"').Name +$GroupObj = [ADSI]"WinNT://$env:COMPUTERNAME/$AdminGroupName" +if($GroupObj.IsMember("WinNT://$dname/$psname") -eq $false) +{ + $GroupObj.Add("WinNT://$dname/$psname") | out-null +} +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$ActiveSiteServer = Get-CMSiteRole -RoleName "SMS Site Server" -SiteCode $SiteCode + +if($ActiveSiteServer.Count -ne 1) +{ + # there is passive site server already + $LogList += "$MachineName is already a passive site server , skip running this script." + $LogList += 1 + return $LogList +} + +$LogList += "Creating cm site system server..." +# Create SMS Site system +New-CMSiteSystemServer -SiteSystemServerName $MachineName -SiteCode $SiteCode -FdmOperation $True + +$LogList += "Finished creating cm site system server." + +$LogList += "Creating passive site server role on $MachineName ..." +# Create passive site server role +Add-CMPassiveSite -SiteCode $SiteCode -SiteSystemServerName $MachineName -InstallDirectory "C:\sms" -SourceFilePathOption CopySourceFileFromActiveSite + +$LogList += "Finished Creating passive site server role on $MachineName ..." + +$query = "SELECT * FROM SMS_SCI_SysResUse WHERE SiteCode = '$SiteCode' AND RoleName = 'SMS Site Server'" +if((Invoke-CMWmiQuery -Query $query | ?{$_.SiteSystemStatus -eq 0}).count -eq 1) +{ + $LogList += "Finished running the script." + $LogList += 0 + return $LogList +} +else +{ + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList +} +# SIG # Begin signature block +# MIIoSwYJKoZIhvcNAQcCoIIoPDCCKDgCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAEIrBii5ilmJSD +# IobZYUuBmVJuBEOXmkIOrnFsP9wyI6CCDXYwggX0MIID3KADAgECAhMzAAADrzBA +# DkyjTQVBAAAAAAOvMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwOTAwWhcNMjQxMTE0MTkwOTAwWjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOS8s1ra6f0YGtg0OhEaQa/t3Q+q1MEHhWJhqQVuO5amYXQpy8MDPNoJYk+FWA +# hePP5LxwcSge5aen+f5Q6WNPd6EDxGzotvVpNi5ve0H97S3F7C/axDfKxyNh21MG +# 0W8Sb0vxi/vorcLHOL9i+t2D6yvvDzLlEefUCbQV/zGCBjXGlYJcUj6RAzXyeNAN +# xSpKXAGd7Fh+ocGHPPphcD9LQTOJgG7Y7aYztHqBLJiQQ4eAgZNU4ac6+8LnEGAL +# go1ydC5BJEuJQjYKbNTy959HrKSu7LO3Ws0w8jw6pYdC1IMpdTkk2puTgY2PDNzB +# tLM4evG7FYer3WX+8t1UMYNTAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQURxxxNPIEPGSO8kqz+bgCAQWGXsEw +# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW +# MBQGA1UEBRMNMjMwMDEyKzUwMTgyNjAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci +# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG +# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu +# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 +# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAISxFt/zR2frTFPB45Yd +# mhZpB2nNJoOoi+qlgcTlnO4QwlYN1w/vYwbDy/oFJolD5r6FMJd0RGcgEM8q9TgQ +# 2OC7gQEmhweVJ7yuKJlQBH7P7Pg5RiqgV3cSonJ+OM4kFHbP3gPLiyzssSQdRuPY +# 1mIWoGg9i7Y4ZC8ST7WhpSyc0pns2XsUe1XsIjaUcGu7zd7gg97eCUiLRdVklPmp +# XobH9CEAWakRUGNICYN2AgjhRTC4j3KJfqMkU04R6Toyh4/Toswm1uoDcGr5laYn +# TfcX3u5WnJqJLhuPe8Uj9kGAOcyo0O1mNwDa+LhFEzB6CB32+wfJMumfr6degvLT +# e8x55urQLeTjimBQgS49BSUkhFN7ois3cZyNpnrMca5AZaC7pLI72vuqSsSlLalG +# OcZmPHZGYJqZ0BacN274OZ80Q8B11iNokns9Od348bMb5Z4fihxaBWebl8kWEi2O +# PvQImOAeq3nt7UWJBzJYLAGEpfasaA3ZQgIcEXdD+uwo6ymMzDY6UamFOfYqYWXk +# ntxDGu7ngD2ugKUuccYKJJRiiz+LAUcj90BVcSHRLQop9N8zoALr/1sJuwPrVAtx +# HNEgSW+AKBqIxYWM4Ev32l6agSUAezLMbq5f3d8x9qzT031jMDT+sUAoCw0M5wVt +# CUQcqINPuYjbS1WgJyZIiEkBMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq +# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x +# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg +# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 +# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr +# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg +# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy +# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 +# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh +# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k +# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB +# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn +# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 +# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w +# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o +# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD +# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa +# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny +# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG +# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV +# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG +# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl +# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb +# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l +# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 +# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 +# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 +# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam +# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa +# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah +# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA +# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt +# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr +# /Xmfwb1tbWrJUnMTDXpQzTGCGiswghonAgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp +# Z25pbmcgUENBIDIwMTECEzMAAAOvMEAOTKNNBUEAAAAAA68wDQYJYIZIAWUDBAIB +# BQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO +# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIIa5Skku2agyNtUs5jPD7zbY +# OJqD2uT2KcqQaEhrxbMSMGAGCisGAQQBgjcCAQwxUjBQoDKAMABFAHgAdABlAG4A +# ZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBlAHgAZaEagBhodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEABSKgzkk0m7zyT3aT +# 2Ol+kBA2u4vX43s/Tx6De9IGMyGSFkQl8+EKG9Ic/I+5M60qZdi46gUp1QTXfv1u +# 6uzZP3SgCEaCT/Gcb4pjkeqULgypdBeya/bwFCjBGZVPjkQAZ9foHpfR2JNwWdQ/ +# M+SM6XvGcLOO6vCm/yxmf1t9cbt/hVuR8Ioyq9W6k2ECOjgKM3lK+6qApK9id0I0 +# hYzNWeW4buX/vxOm/hdxDd1xDWZCvUV8PFz58OGOzR5GF1co9DJuYUXxlPMI1vcm +# 2vPzf/9Matx5m8Y2eD0CSYB+v2e47J7wc5u6OoXKmek6zyT0ZwaFtC7N/lbZsKLD +# HkEdD6GCF5cwgheTBgorBgEEAYI3AwMBMYIXgzCCF38GCSqGSIb3DQEHAqCCF3Aw +# ghdsAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFSBgsqhkiG9w0BCRABBKCCAUEEggE9 +# MIIBOQIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCAT3OEAdBdkIswx +# w4gz8PBeZgmKbkAZzMwViHdeT4XMqwIGZjK+tVKNGBMyMDI0MDUwMjIwNTgwNi4w +# MDZaMASAAgH0oIHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu +# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +# cmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScw +# JQYDVQQLEx5uU2hpZWxkIFRTUyBFU046QTAwMC0wNUUwLUQ5NDcxJTAjBgNVBAMT +# HE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WgghHtMIIHIDCCBQigAwIBAgIT +# MwAAAevgGGy1tu847QABAAAB6zANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJV +# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE +# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt +# ZS1TdGFtcCBQQ0EgMjAxMDAeFw0yMzEyMDYxODQ1MzRaFw0yNTAzMDUxODQ1MzRa +# MIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQL +# ExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxk +# IFRTUyBFU046QTAwMC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1l +# LVN0YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDB +# FWgh2lbgV3eJp01oqiaFBuYbNc7hSKmktvJ15NrB/DBboUow8WPOTPxbn7gcmIOG +# mwJkd+TyFx7KOnzrxnoB3huvv91fZuUugIsKTnAvg2BU/nfN7Zzn9Kk1mpuJ27S6 +# xUDH4odFiX51ICcKl6EG4cxKgcDAinihT8xroJWVATL7p8bbfnwsc1pihZmcvIuY +# Gnb1TY9tnpdChWr9EARuCo3TiRGjM2Lp4piT2lD5hnd3VaGTepNqyakpkCGV0+cK +# 8Vu/HkIZdvy+z5EL3ojTdFLL5vJ9IAogWf3XAu3d7SpFaaoeix0e1q55AD94ZwDP +# +izqLadsBR3tzjq2RfrCNL+Tmi/jalRto/J6bh4fPhHETnDC78T1yfXUQdGtmJ/u +# tI/ANxi7HV8gAPzid9TYjMPbYqG8y5xz+gI/SFyj+aKtHHWmKzEXPttXzAcexJ1E +# H7wbuiVk3sErPK9MLg1Xb6hM5HIWA0jEAZhKEyd5hH2XMibzakbp2s2EJQWasQc4 +# DMaF1EsQ1CzgClDYIYG6rUhudfI7k8L9KKCEufRbK5ldRYNAqddr/ySJfuZv3PS3 +# +vtD6X6q1H4UOmjDKdjoW3qs7JRMZmH9fkFkMzb6YSzr6eX1LoYm3PrO1Jea43SY +# zlB3Tz84OvuVSV7NcidVtNqiZeWWpVjfavR+Jj/JOQIDAQABo4IBSTCCAUUwHQYD +# VR0OBBYEFHSeBazWVcxu4qT9O5jT2B+qAerhMB8GA1UdIwQYMBaAFJ+nFV0AXmJd +# g/Tl0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9z +# b2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0El +# MjAyMDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6 +# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0l +# AQH/BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA +# A4ICAQCDdN8voPd8C+VWZP3+W87c/QbdbWK0sOt9Z4kEOWng7Kmh+WD2LnPJTJKI +# EaxniOct9wMgJ8yQywR8WHgDOvbwqdqsLUaM4NrertI6FI9rhjheaKxNNnBZzHZL +# DwlkL9vCEDe9Rc0dGSVd5Bg3CWknV3uvVau14F55ESTWIBNaQS9Cpo2Opz3cRgAY +# VfaLFGbArNcRvSWvSUbeI2IDqRxC4xBbRiNQ+1qHXDCPn0hGsXfL+ynDZncCfszN +# rlgZT24XghvTzYMHcXioLVYo/2Hkyow6dI7uULJbKxLX8wHhsiwriXIDCnjLVsG0 +# E5bR82QgcseEhxbU2d1RVHcQtkUE7W9zxZqZ6/jPmaojZgXQO33XjxOHYYVa/BXc +# Iuu8SMzPjjAAbujwTawpazLBv997LRB0ZObNckJYyQQpETSflN36jW+z7R/nGyJq +# RZ3HtZ1lXW1f6zECAeP+9dy6nmcCrVcOqbQHX7Zr8WPcghHJAADlm5ExPh5xi1tN +# Rk+i6F2a9SpTeQnZXP50w+JoTxISQq7vBij2nitAsSLaVeMqoPi+NXlTUNZ2Ndtb +# Fr6Iir9ZK9ufaz3FxfvDZo365vLOozmQOe/Z+pu4vY5zPmtNiVIcQnFy7JZOiZVD +# I5bIdwQRai2quHKJ6ltUdsi3HjNnieuE72fT4eWhxtmnN5HYCDCCB3EwggVZoAMC +# AQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNV +# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w +# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29m +# dCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIy +# NVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp +# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw +# b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw +# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9 +# DtWC0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2 +# Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N +# 7dcP2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXc +# ag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJ +# j361VI/c+gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjk +# lqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37Zy +# L9t9X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M +# 269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLX +# pyDwwvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLU +# HMVr9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode +# 2o+eFnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEA +# ATAjBgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYE +# FJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEB +# MEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv +# RG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEE +# AYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +# /zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEug +# SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N +# aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsG +# AQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jv +# b0NlckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt +# 4SwfZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsP +# MeTCj/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++ +# Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9 +# QKC/GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2 +# wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aR +# AfbOxnT99kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5z +# bcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nx +# t67I6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3 +# Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+AN +# uOaMmdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/Z +# cGNTTY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNQMIICOAIBATCB+aGB0aSBzjCB +# yzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl +# ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMc +# TWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBU +# U1MgRVNOOkEwMDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1T +# dGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQCABol1u1wwwYgUtUowMnqYvbul +# 3qCBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw +# DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x +# JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3 +# DQEBCwUAAgUA6d3l5zAiGA8yMDI0MDUwMjEwMTM1OVoYDzIwMjQwNTAzMTAxMzU5 +# WjB3MD0GCisGAQQBhFkKBAExLzAtMAoCBQDp3eXnAgEAMAoCAQACAhbTAgH/MAcC +# AQACAhN7MAoCBQDp3zdnAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkK +# AwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBAIIC +# EvxdwRQjcNmb61aKj9zC8C9BSs1bDd6lb1wVMfIaMXmwH/2eC5YAbSeR0JPWLE18 +# eBpmEDOLkqe0Ndz4MKZ0M2YIusmysNMpKAWYGuUdORORF49O0WDo82hip+5aDs+T +# dChyaIfzL+VWs3A3KgJuWJcX7dDrhEXHdduV8lfBHr9WeCXNfbOQA8jWLB77xcQm +# lfn9rcMy3vVQy4oCiiTP1l5MQZPvdWliftOSXIA1lkS1mN0/Qy5kqfiC7v7VCTT/ +# ErHaccwhWuUSQLV8NOzqhVU96DTRmYWRKplReXd+dQrPCd4cvt5lP4L3WAleouuI +# 5shN7lH9FDb19Wun+7UxggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEG +# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj +# cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt +# cCBQQ0EgMjAxMAITMwAAAevgGGy1tu847QABAAAB6zANBglghkgBZQMEAgEFAKCC +# AUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCDg +# ia2fxymvh8+FQNhLsF51iZEFHE5QptZP9SOV9rUIqjCB+gYLKoZIhvcNAQkQAi8x +# geowgecwgeQwgb0EIM63a75faQPhf8SBDTtk2DSUgIbdizXsz76h1JdhLCz4MIGY +# MIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG +# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAHr4Bhstbbv +# OO0AAQAAAeswIgQgd7N7LfdMdkVHirHNFdiwGnHRp9pVLZqGxQpoeLqwOx8wDQYJ +# KoZIhvcNAQELBQAEggIABXp0lUKY2JJOUExYqEUFpCFqXosCQON0pYskCL8xeqmS +# SpxP8/inC2ztvOoWVKZeg9gd78Q+SIzkF2Vwhf9uf3tXYQs9obz+GulRlg2HHeGk +# mq94ULp5COWplIx5gajh2R1WS7whLroT5HJCsL8Pj29MKca5L2WyWk5VBBD/NGmZ +# dWrsOfSBDyE1k24QUgoFRAd6GF4vFxgJ5hrskf/g8V/JNHi3APCnJ138plzYi12G +# tVw2cqmr2YPXqKTZnNwrb3yuMpgzRkwwhMqXcrDk7cUFdlTwSj3IozoDQfhFmvmx +# nxEXj6TPK+HFjCTq7392BX6H1T+LyQ6qjgbBF2rHvBvl/cX9hIBGzDyCLNNm1nC/ +# 5spXb9Klbt/Cwwd2oEKx8Lb22wOVhCnB2ChOUMYfAMoq+yWkBJXqiUD+d0HVivgB +# 2VxNXp+JogXtQ4O55Z21C/i0Xk5ctwRsKnVz2A2GuofEcr6HXMJmW1IrrzPuJ4/u +# 1s66RSlR1hiX8UqFDvqMikng+SSq4Hi0NXNbXAC+jwDRrxuf07HXtOP8wt2esaDk +# 5SiM6m+CqWz6YX/cA3/7NYcE6VWyTWFCEbLHCp5OsceYlaOfeYFAZPW3ol2dpWMx +# G0sxnbEvbT6+wnGkYRv/K7QMTnfTTKyGpzwl6gBKlbmdIDNBJSJB9JulCgnxVHM= +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddSUP.ps1 b/ExtendMigrateToAzure/postscripts/AddSUP.ps1 new file mode 100644 index 0000000..83a85eb --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddSUP.ps1 @@ -0,0 +1,283 @@ + +$LogList = @() +$LogList += "Start running add software update point script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((Get-CMSoftwareUpdatePoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Software Update Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Adding cm software update point on $MachineName ..." + $LogList += Add-CMSoftwareUpdatePoint -InputObject $SystemServer -WsusIisPort 8530 -WsusIisSslPort 8531 + $LogList += "Finished adding cm software update point on $MachineName ..." + + if((Get-CMSoftwareUpdatePoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} +# SIG # Begin signature block +# MIIoWQYJKoZIhvcNAQcCoIIoSjCCKEYCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAwcFNnF2nB1vNp +# bAekZjZB667FxboAEpt7F4XnRc39XaCCDYUwggYDMIID66ADAgECAhMzAAADri01 +# UchTj1UdAAAAAAOuMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwODU5WhcNMjQxMTE0MTkwODU5WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQD0IPymNjfDEKg+YyE6SjDvJwKW1+pieqTjAY0CnOHZ1Nj5irGjNZPMlQ4HfxXG +# yAVCZcEWE4x2sZgam872R1s0+TAelOtbqFmoW4suJHAYoTHhkznNVKpscm5fZ899 +# QnReZv5WtWwbD8HAFXbPPStW2JKCqPcZ54Y6wbuWV9bKtKPImqbkMcTejTgEAj82 +# 6GQc6/Th66Koka8cUIvz59e/IP04DGrh9wkq2jIFvQ8EDegw1B4KyJTIs76+hmpV +# M5SwBZjRs3liOQrierkNVo11WuujB3kBf2CbPoP9MlOyyezqkMIbTRj4OHeKlamd +# WaSFhwHLJRIQpfc8sLwOSIBBAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhx/vdKmXhwc4WiWXbsf0I53h8T8w +# VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh +# dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMTgzNjAfBgNVHSMEGDAW +# gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw +# MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov +# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx +# XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB +# AGrJYDUS7s8o0yNprGXRXuAnRcHKxSjFmW4wclcUTYsQZkhnbMwthWM6cAYb/h2W +# 5GNKtlmj/y/CThe3y/o0EH2h+jwfU/9eJ0fK1ZO/2WD0xi777qU+a7l8KjMPdwjY +# 0tk9bYEGEZfYPRHy1AGPQVuZlG4i5ymJDsMrcIcqV8pxzsw/yk/O4y/nlOjHz4oV +# APU0br5t9tgD8E08GSDi3I6H57Ftod9w26h0MlQiOr10Xqhr5iPLS7SlQwj8HW37 +# ybqsmjQpKhmWul6xiXSNGGm36GarHy4Q1egYlxhlUnk3ZKSr3QtWIo1GGL03hT57 +# xzjL25fKiZQX/q+II8nuG5M0Qmjvl6Egltr4hZ3e3FQRzRHfLoNPq3ELpxbWdH8t +# Nuj0j/x9Crnfwbki8n57mJKI5JVWRWTSLmbTcDDLkTZlJLg9V1BIJwXGY3i2kR9i +# 5HsADL8YlW0gMWVSlKB1eiSlK6LmFi0rVH16dde+j5T/EaQtFz6qngN7d1lvO7uk +# 6rtX+MLKG4LDRsQgBTi6sIYiKntMjoYFHMPvI/OMUip5ljtLitVbkFGfagSqmbxK +# 7rJMhC8wiTzHanBg1Rrbff1niBbnFbbV4UDmYumjs1FIpFCazk6AADXxoKCo5TsO +# zSHqr9gHgGYQC2hMyX9MGLIpowYCURx3L7kUiGbOiMwaMIIHejCCBWKgAwIBAgIK +# YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV +# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv +# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm +# aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw +# OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE +# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD +# VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG +# 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la +# UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc +# 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D +# dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ +# lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk +# kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 +# A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd +# X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL +# 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd +# sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 +# T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS +# 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI +# bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL +# BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD +# uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv +# c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF +# BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h +# cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA +# YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn +# 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 +# v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b +# pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ +# KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy +# CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp +# mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi +# hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb +# BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS +# oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL +# gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX +# cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGiowghomAgEBMIGVMH4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p +# Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAAOuLTVRyFOPVR0AAAAA +# A64wDQYJYIZIAWUDBAIBBQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw +# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIHQR +# Stq/0gv7LHfV89lSQM1WjydWDhoe9iadz2py03pCMGAGCisGAQQBgjcCAQwxUjBQ +# oDKAMABFAHgAdABlAG4AZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBl +# AHgAZaEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAE +# ggEAAsH2XOebmJVQJ6gV29KRSRPoeK4/J7ECU/qIh7SYI0YtceQcEKql9Seyl/7u +# 21L+XaXehmtLcfLzZRlz5a2EOXxZ5aOi8RTAOl8AKfmhmcVMCWX/QELdsI28kt7D +# CSv0YbRfspmgGGHtBAUqqbYlvBbBfbTo3JuoJ9Aoqd0vo6ytxjF7292nP9biLttv +# RfR8FKtCUecwWwleUzD0Dnw+lGtrkhtgHYqtgMERikoIh1Z9J30JDPxd8w+IzQez +# GPhpt/iolw0/eJw+M2BYNeLvjP9KbbEmIprxCQdwIxSbp+GsrrbGafCvRQKK0iRi +# pTdpT7SW9rqCQArcUr5OLjeDfqGCF5YwgheSBgorBgEEAYI3AwMBMYIXgjCCF34G +# CSqGSIb3DQEHAqCCF28wghdrAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFRBgsqhkiG +# 9w0BCRABBKCCAUAEggE8MIIBOAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQC +# AQUABCB3Aa1TOgtxoBCYTP4s4atljAIQ2clPHC1Z+BJ5nSRaMwIGZjK+tVKpGBIy +# MDI0MDUwMjIwNTgxMS41M1owBIACAfSggdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMw +# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN +# aWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNh +# IE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjpBMDAwLTA1RTAt +# RDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCEe0w +# ggcgMIIFCKADAgECAhMzAAAB6+AYbLW27zjtAAEAAAHrMA0GCSqGSIb3DQEBCwUA +# MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT +# HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTIwNjE4NDUzNFoX +# DTI1MDMwNTE4NDUzNFowgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n +# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +# YXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAl +# BgNVBAsTHm5TaGllbGQgVFNTIEVTTjpBMDAwLTA1RTAtRDk0NzElMCMGA1UEAxMc +# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAMEVaCHaVuBXd4mnTWiqJoUG5hs1zuFIqaS28nXk2sH8MFuh +# SjDxY85M/FufuByYg4abAmR35PIXHso6fOvGegHeG6+/3V9m5S6AiwpOcC+DYFT+ +# d83tnOf0qTWam4nbtLrFQMfih0WJfnUgJwqXoQbhzEqBwMCKeKFPzGuglZUBMvun +# xtt+fCxzWmKFmZy8i5gadvVNj22el0KFav0QBG4KjdOJEaMzYunimJPaUPmGd3dV +# oZN6k2rJqSmQIZXT5wrxW78eQhl2/L7PkQveiNN0Usvm8n0gCiBZ/dcC7d3tKkVp +# qh6LHR7WrnkAP3hnAM/6LOotp2wFHe3OOrZF+sI0v5OaL+NqVG2j8npuHh8+EcRO +# cMLvxPXJ9dRB0a2Yn+60j8A3GLsdXyAA/OJ31NiMw9tiobzLnHP6Aj9IXKP5oq0c +# daYrMRc+21fMBx7EnUQfvBu6JWTewSs8r0wuDVdvqEzkchYDSMQBmEoTJ3mEfZcy +# JvNqRunazYQlBZqxBzgMxoXUSxDULOAKUNghgbqtSG518juTwv0ooIS59FsrmV1F +# g0Cp12v/JIl+5m/c9Lf6+0PpfqrUfhQ6aMMp2OhbeqzslExmYf1+QWQzNvphLOvp +# 5fUuhibc+s7Ul5rjdJjOUHdPPzg6+5VJXs1yJ1W02qJl5ZalWN9q9H4mP8k5AgMB +# AAGjggFJMIIBRTAdBgNVHQ4EFgQUdJ4FrNZVzG7ipP07mNPYH6oB6uEwHwYDVR0j +# BBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGlt +# ZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggr +# BgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N +# aWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0T +# AQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw +# DQYJKoZIhvcNAQELBQADggIBAIN03y+g93wL5VZk/f5bztz9Bt1tYrSw631niQQ5 +# aeDsqaH5YPYuc8lMkogRrGeI5y33AyAnzJDLBHxYeAM69vCp2qwtRozg2t6u0joU +# j2uGOF5orE02cFnMdksPCWQv28IQN71FzR0ZJV3kGDcJaSdXe69Vq7XgXnkRJNYg +# E1pBL0KmjY6nPdxGABhV9osUZsCs1xG9Ja9JRt4jYgOpHELjEFtGI1D7WodcMI+f +# SEaxd8v7KcNmdwJ+zM2uWBlPbheCG9PNgwdxeKgtVij/YeTKjDp0ju5QslsrEtfz +# AeGyLCuJcgMKeMtWwbQTltHzZCByx4SHFtTZ3VFUdxC2RQTtb3PFmpnr+M+ZqiNm +# BdA7fdePE4dhhVr8Fdwi67xIzM+OMABu6PBNrClrMsG/33stEHRk5s1yQljJBCkR +# NJ+U3fqNb7PtH+cbImpFnce1nWVdbV/rMQIB4/713LqeZwKtVw6ptAdftmvxY9yC +# EckAAOWbkTE+HnGLW01GT6LoXZr1KlN5Cdlc/nTD4mhPEhJCru8GKPaeK0CxItpV +# 4yqg+L41eVNQ1nY121sWvoiKv1kr259rPcXF+8Nmjfrm8s6jOZA579n6m7i9jnM+ +# a02JUhxCcXLslk6JlUMjlsh3BBFqLaq4conqW1R2yLceM2eJ64TvZ9Ph5aHG2ac3 +# kdgIMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0B +# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG +# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw +# HhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T +# dGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh +# pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xP +# x2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ +# 3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt +# gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYt +# cI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXA +# hjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0S +# idb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSC +# D/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEB +# c8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh +# 8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8Fdsa +# N8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr +# BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q +# /y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBR +# BgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv +# ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP +# BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjE +# MFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kv +# Y3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEF +# BQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +# a2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEB +# CwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX +# wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOw +# Bb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jf +# ZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ +# 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ +# ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgs +# sU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6 +# OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p +# /cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6 +# TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784 +# cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCA1AwggI4 +# AgEBMIH5oYHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYD +# VQQLEx5uU2hpZWxkIFRTUyBFU046QTAwMC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1p +# Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMVAIAGiXW7 +# XDDBiBS1SjAyepi9u6XeoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m +# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB +# IDIwMTAwDQYJKoZIhvcNAQELBQACBQDp3eXnMCIYDzIwMjQwNTAyMTAxMzU5WhgP +# MjAyNDA1MDMxMDEzNTlaMHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFAOnd5ecCAQAw +# CgIBAAICFtMCAf8wBwIBAAICE3swCgIFAOnfN2cCAQAwNgYKKwYBBAGEWQoEAjEo +# MCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG +# 9w0BAQsFAAOCAQEAggIS/F3BFCNw2ZvrVoqP3MLwL0FKzVsN3qVvXBUx8hoxebAf +# /Z4LlgBtJ5HQk9YsTXx4GmYQM4uSp7Q13PgwpnQzZgi6ybKw0ykoBZga5R05E5EX +# j07RYOjzaGKn7loOz5N0KHJoh/Mv5VazcDcqAm5Ylxft0OuERcd125XyV8Eev1Z4 +# Jc19s5ADyNYsHvvFxCaV+f2twzLe9VDLigKKJM/WXkxBk+91aWJ+05JcgDWWRLWY +# 3T9DLmSp+ILu/tUJNP8SsdpxzCFa5RJAtXw07OqFVT3oNNGZhZEqmVF5d351Cs8J +# 3hy+3mU/gvdYCV6i64jmyE3uUf0UNvX1a6f7tTGCBA0wggQJAgEBMIGTMHwxCzAJ +# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k +# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv +# c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB6+AYbLW27zjtAAEAAAHrMA0G +# CWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJ +# KoZIhvcNAQkEMSIEIGcPcUhmHJBONXZvJSJrqbjyBegRLHgkXIJryOeirEjUMIH6 +# BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCBvQQgzrdrvl9pA+F/xIENO2TYNJSAht2L +# NezPvqHUl2EsLPgwgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz +# aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv +# cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx +# MAITMwAAAevgGGy1tu847QABAAAB6zAiBCB3s3st90x2RUeKsc0V2LAacdGn2lUt +# mobFCmh4urA7HzANBgkqhkiG9w0BAQsFAASCAgCkrNCee8+q+c3PUrhHPcfmu8D7 +# 0WksVyRH6SWecfE1pvcRpVeHUAwGJYZrUZIH8GaCNqCpFgFIZk50/i08AFJ/cjZq +# 3kFs7KbMLQjoV40QdxBOb62rkHtBWqLdKoOl85O5ty83a+L5uKx64p2irOHzpeeA +# MUeKOLWGZxXzbVdEI3mwT8hT73QWqKtS75BXSm85xM5z8/nYMUZT6sKMMa6VcxQ4 +# j3MjtHZKsBxN8DdUI9frc+iMUbmW4G9Lsf2N/gbm4v1Nlhn0MEkFI4D3XBoDPrwi +# 0RPchjx8sr2aM5FXwNEktE/Re7MZLDdcrfgLyllrbMn/HksiLxz0g+v8qD/fIVP7 +# aCvwMhAq7+OW/WxA3OKZI5Fxk0I98EryoPvyRY7EgJfjU2QEZTM+EzSUYnvWzRML +# xf5SmrfJFGXqUtxHviiYNaYUVm1wHVUjvcG8tg8DOvjWLdtbxAFUQ1Oeekn8+IOc +# kUSiIkscbVTd/l4RPByhwTQtsteNSETmcsXfoF3kC1n+Go6vRhWyfNhciWR2211D +# +O9YHrIVS8rHLZtm5bUEO1oDLmSGzQyOmAtY/RW1mArZUgii6QayNU7RBeyWNK3Q +# +cW1bQfKj6ZZcWf0aRMRSn3v0FCsa88taLBcUd23p+mQ4X+domb0ptjL7YvukWtU +# VoxcKEiwAjuAQV4iWQ== +# SIG # End signature block diff --git a/ExtendMigrateToAzure/postscripts/AddSUPHTTPS.ps1 b/ExtendMigrateToAzure/postscripts/AddSUPHTTPS.ps1 new file mode 100644 index 0000000..705cfcc --- /dev/null +++ b/ExtendMigrateToAzure/postscripts/AddSUPHTTPS.ps1 @@ -0,0 +1,282 @@ + +$LogList = @() +$LogList += "Start running add software update point (HTTPS) script." +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\ConfigMgr10\Setup") +$uiInstallPath = $subKey.GetValue("UI Installation Directory") +$modulePath = $uiInstallPath+"bin\ConfigurationManager.psd1" +Import-Module $modulePath +$key = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64) +$subKey = $key.OpenSubKey("SOFTWARE\Microsoft\SMS\Identification") +$SiteCode = $subKey.GetValue("Site Code") +$MachineName = "__MachineFQDN__" +$ProviderMachineName = "__ProviderMachineName__" +$WsusSsl =__WsusSsl__ +$initParams = @{} + +# Connect to the site's drive if it is not already present +$LogList += "Setting PS Drive..." +while((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) +{ + $LogList += "Get drive failed ,retry in 10s. Please wait." + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName @initParams | Out-Null + Start-Sleep -Seconds 10 +} + +Set-Location "$($SiteCode):\" @initParams + +$SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + +if(!$SystemServer) +{ + $LogList += "Creating cm site system server..." + $LogList += New-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Finished creating cm site system server." +} +else +{ + $LogList += "$MachineName is already a Site System Server." +} + +if((Get-CMSoftwareUpdatePoint -SiteSystemServerName $MachineName).count -eq 1) +{ + $LogList += "$MachineName is already a Software Update Point." + $LogList += 1 + return $LogList +} +else +{ + $SystemServer = Get-CMSiteSystemServer -SiteSystemServerName $MachineName + $LogList += "Adding cm software update point on $MachineName ..." + $LogList += Add-CMSoftwareUpdatePoint -InputObject $SystemServer -WsusIisPort 8530 -WsusIisSslPort 8531 -WsusSsl $WsusSsl + $LogList += "Finished adding cm software update point on $MachineName ..." + + if((Get-CMSoftwareUpdatePoint -SiteSystemServerName $MachineName).count -eq 1) + { + $LogList += "Finished running the script." + $LogList += 0 + return $LogList + } + else + { + $LogList += "Failed to run the script." + $LogList += 2 + return $LogList + } +} +# SIG # Begin signature block +# MIIn8AYJKoZIhvcNAQcCoIIn4TCCJ90CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCByugQpLXQKgW6N +# tNtEgPiBgp5EiHArlb3AZyqNT7Ii+6CCDYUwggYDMIID66ADAgECAhMzAAADri01 +# UchTj1UdAAAAAAOuMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjMxMTE2MTkwODU5WhcNMjQxMTE0MTkwODU5WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQD0IPymNjfDEKg+YyE6SjDvJwKW1+pieqTjAY0CnOHZ1Nj5irGjNZPMlQ4HfxXG +# yAVCZcEWE4x2sZgam872R1s0+TAelOtbqFmoW4suJHAYoTHhkznNVKpscm5fZ899 +# QnReZv5WtWwbD8HAFXbPPStW2JKCqPcZ54Y6wbuWV9bKtKPImqbkMcTejTgEAj82 +# 6GQc6/Th66Koka8cUIvz59e/IP04DGrh9wkq2jIFvQ8EDegw1B4KyJTIs76+hmpV +# M5SwBZjRs3liOQrierkNVo11WuujB3kBf2CbPoP9MlOyyezqkMIbTRj4OHeKlamd +# WaSFhwHLJRIQpfc8sLwOSIBBAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhx/vdKmXhwc4WiWXbsf0I53h8T8w +# VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh +# dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMTgzNjAfBgNVHSMEGDAW +# gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v +# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw +# MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov +# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx +# XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB +# AGrJYDUS7s8o0yNprGXRXuAnRcHKxSjFmW4wclcUTYsQZkhnbMwthWM6cAYb/h2W +# 5GNKtlmj/y/CThe3y/o0EH2h+jwfU/9eJ0fK1ZO/2WD0xi777qU+a7l8KjMPdwjY +# 0tk9bYEGEZfYPRHy1AGPQVuZlG4i5ymJDsMrcIcqV8pxzsw/yk/O4y/nlOjHz4oV +# APU0br5t9tgD8E08GSDi3I6H57Ftod9w26h0MlQiOr10Xqhr5iPLS7SlQwj8HW37 +# ybqsmjQpKhmWul6xiXSNGGm36GarHy4Q1egYlxhlUnk3ZKSr3QtWIo1GGL03hT57 +# xzjL25fKiZQX/q+II8nuG5M0Qmjvl6Egltr4hZ3e3FQRzRHfLoNPq3ELpxbWdH8t +# Nuj0j/x9Crnfwbki8n57mJKI5JVWRWTSLmbTcDDLkTZlJLg9V1BIJwXGY3i2kR9i +# 5HsADL8YlW0gMWVSlKB1eiSlK6LmFi0rVH16dde+j5T/EaQtFz6qngN7d1lvO7uk +# 6rtX+MLKG4LDRsQgBTi6sIYiKntMjoYFHMPvI/OMUip5ljtLitVbkFGfagSqmbxK +# 7rJMhC8wiTzHanBg1Rrbff1niBbnFbbV4UDmYumjs1FIpFCazk6AADXxoKCo5TsO +# zSHqr9gHgGYQC2hMyX9MGLIpowYCURx3L7kUiGbOiMwaMIIHejCCBWKgAwIBAgIK +# YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV +# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv +# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm +# aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw +# OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE +# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD +# VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG +# 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la +# UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc +# 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D +# dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ +# lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk +# kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 +# A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd +# X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL +# 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd +# sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 +# T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS +# 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI +# bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL +# BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD +# uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv +# c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 +# dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf +# MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF +# BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h +# cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA +# YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn +# 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 +# v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b +# pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ +# KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy +# CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp +# mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi +# hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb +# BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS +# oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL +# gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX +# cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGcEwghm9AgEBMIGVMH4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p +# Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAAOuLTVRyFOPVR0AAAAA +# A64wDQYJYIZIAWUDBAIBBQCggcwwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw +# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIHs7 +# qYWzTyiuB42lJMRDByM5Nx6t0SiTp6TFpPpRN5P4MGAGCisGAQQBgjcCAQwxUjBQ +# oDKAMABFAHgAdABlAG4AZABNAGkAZwByAGEAdABlAFQAbwBBAHoAdQByAGUALgBl +# AHgAZaEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAE +# ggEAsFHvAwKACz7B24wHIA8D/V78YtgnzhehE4ZbdhHBS/W40VjtE5pXjasa2zLK +# 5hW+s2sirO6Iygp1pjwS5B9RFuUEJC4oG4h5D/AqEmwP/oLDsffrKQzVK/5Y+vB1 +# H8PGodVbrtnVBtxcRLM8BYXsnFS5IB922EBz9F6nhYM6FJFH+FjYWdmz+Q6YcH4u +# RdWFkZUts9mUn1q6RtIMBgakObg/LNt4ZRWgvtflKjKUM4uGGOF7TUMCfs0lKI21 +# ZbTqlMCaqRtWUV9UabRqcpdnOcK2q6TOeK4rIh21C0Xs6e+zPMBhAhYoe+7xNB6A +# MU6uFTfFKJO+a4SSIFyVOwAMkqGCFy0wghcpBgorBgEEAYI3AwMBMYIXGTCCFxUG +# CSqGSIb3DQEHAqCCFwYwghcCAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG +# 9w0BCRABBKCCAUgEggFEMIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQC +# AQUABCAs3VF3hSGIc1OxcInzdplI1JoPcHRtmVfV9lLDf+7YFQIGZjOqeGBbGBMy +# MDI0MDUwMjIwNTgwNy41NTFaMASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzET +# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV +# TWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFu +# ZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjg2 +# REYtNEJCQy05MzM1MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2 +# aWNloIIRfDCCBycwggUPoAMCAQICEzMAAAHdXVcdldStqhsAAQAAAd0wDQYJKoZI +# hvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO +# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm +# MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjMxMDEy +# MTkwNzA5WhcNMjUwMTEwMTkwNzA5WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgT +# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m +# dCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0 +# aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4NkRGLTRCQkMt +# OTMzNTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIw +# DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKhOA5RE6i53nHURH4lnfKLp+9Jv +# ipuTtctairCxMUSrPSy5CWK2DtriQP+T52HXbN2g7AktQ1pQZbTDGFzK6d03vYYN +# rCPuJK+PRsP2FPVDjBXy5mrLRFzIHHLaiAaobE5vFJuoxZ0ZWdKMCs8acjhHUmfa +# Y+79/CR7uN+B4+xjJqwvdpU/mp0mAq3earyH+AKmv6lkrQN8zgrcbCgHwsqvvqT6 +# lEFqYpi7uKn7MAYbSeLe0pMdatV5EW6NVnXMYOTRKuGPfyfBKdShualLo88kG7qa +# 2mbA5l77+X06JAesMkoyYr4/9CgDFjHUpcHSODujlFBKMi168zRdLerdpW0bBX9E +# Dux2zBMMaEK8NyxawCEuAq7++7ktFAbl3hUKtuzYC1FUZuUl2Bq6U17S4CKsqR3i +# tLT9qNcb2pAJ4jrIDdll5Tgoqef5gpv+YcvBM834bXFNwytd3ujDD24P9Dd8xfVJ +# vumjsBQQkK5T/qy3HrQJ8ud1nHSvtFVi5Sa/ubGuYEpS8gF6GDWN5/KbveFkdsoT +# VIPo8pkWhjPs0Q7nA5+uBxQB4zljEjKz5WW7BA4wpmFm24fhBmRjV4Nbp+n78cgA +# jvDSfTlA6DYBcv2kx1JH2dIhaRnSeOXePT6hMF0Il598LMu0rw35ViUWcAQkUNUT +# xRnqGFxz5w+ZusMDAgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUbqL1toyPUdpFyyHS +# DKWj0I4lw/EwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0f +# BFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv +# TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsG +# AQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +# L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAx +# MCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO +# BgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBAC5U2bINLgXIHWbMcqVu +# f9jkUT/K8zyLBvu5h8JrqYR2z/eaO2yo1Ooc9Shyvxbe9GZDu7kkUzxSyJ1IZksZ +# Zw6FDq6yZNT3PEjAEnREpRBL8S+mbXg+O4VLS0LSmb8XIZiLsaqZ0fDEcv3HeA+/ +# y/qKnCQWkXghpaEMwGMQzRkhGwcGdXr1zGpQ7HTxvfu57xFxZX1MkKnWFENJ6urd +# +4teUgXj0ngIOx//l3XMK3Ht8T2+zvGJNAF+5/5qBk7nr079zICbFXvxtidNN5eo +# XdW+9rAIkS+UGD19AZdBrtt6dZ+OdAquBiDkYQ5kVfUMKS31yHQOGgmFxuCOzTpW +# HalrqpdIllsy8KNsj5U9sONiWAd9PNlyEHHbQZDmi9/BNlOYyTt0YehLbDovmZUN +# azk79Od/A917mqCdTqrExwBGUPbMP+/vdYUqaJspupBnUtjOf/76DAhVy8e/e6zR +# 98PkplmliO2brL3Q3rD6+ZCVdrGM9Rm6hUDBBkvYh+YjmGdcQ5HB6WT9Rec8+qDH +# mbhLhX4Zdaard5/OXeLbgx2f7L4QQQj3KgqjqDOWInVhNE1gYtTWLHe4882d/k7L +# ui0K1g8EZrKD7maOrsJLKPKlegceJ9FCqY1sDUKUhRa0EHUW+ZkKLlohKrS7Fwjd +# rINWkPBgbQznCjdE2m47QjTbMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAA +# AAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +# c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +# b3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUg +# QXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8 +# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk +# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N +# aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQAD +# ggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2 +# AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpS +# g0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2r +# rPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k +# 45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSu +# eik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09 +# /SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR +# 6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxC +# aC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaD +# IV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMUR +# HXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMB +# AAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQq +# p1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ +# 6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt +# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBB +# MAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP +# 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWlj +# cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2 +# LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu +# Y3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2 +# Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03d +# mLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1Tk +# eFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kp +# icO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKp +# W99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrY +# UP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QB +# jloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkB +# RH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0V +# iY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq +# 0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1V +# M1izoXBm8qGCAtgwggJBAgEBMIIBAKGB2KSB1TCB0jELMAkGA1UEBhMCVVMxEzAR +# BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p +# Y3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQg +# T3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjo4NkRG +# LTRCQkMtOTMzNTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZaIjCgEBMAcGBSsOAwIaAxUANiNHGWXbNaDPxnyiDbEOciSjFhCggYMwgYCkfjB8 +# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk +# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N +# aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOne +# KPAwIhgPMjAyNDA1MDIyMzAwMDBaGA8yMDI0MDUwMzIzMDAwMFoweDA+BgorBgEE +# AYRZCgQBMTAwLjAKAgUA6d4o8AIBADALAgEAAgMChb4CAf8wBwIBAAICEW0wCgIF +# AOnfenACAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQAC +# AwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQUFAAOBgQAWrWoEheXdsNh6F10G +# V75SmZSzO+e6KlIJAz4a9gNkA/iIWl2FkI71JTedkFnajtOt61x8eAgXtyTi2A2C +# RZcZna8aeU8Cut9WP1aQj2Bqoxfu64NcU/HJFqOQ5oLCzel2bH+U8hLDGsm0ZwaI +# LlhRMaIy66vpbtQdyXm0byFhTDGCBA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVT +# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l +# LVN0YW1wIFBDQSAyMDEwAhMzAAAB3V1XHZXUraobAAEAAAHdMA0GCWCGSAFlAwQC +# AQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkE +# MSIEIBdouR/hYhF1K+uqt+lO7hMyebL+w7UNVyzWNGQDky0UMIH6BgsqhkiG9w0B +# CRACLzGB6jCB5zCB5DCBvQQgYf8OLZplrE94mZx7R9FZN+1AjdNpUcWPkYjjesAx +# Y2YwgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ +# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +# MSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAd1d +# Vx2V1K2qGwABAAAB3TAiBCA/lBI100BkxEB55UhYNh+4YF70NoCY+GK2hItManwf +# XjANBgkqhkiG9w0BAQsFAASCAgCDUfbjXapAxzN5PqvOTQr8/u0S+0XxmoJe28xA +# S0VylHV/fcuiYMqGUP4gCETAiJq+XU96g8gfHt1jAC741I38habr8bwn5bgAAFrI +# O2wsSmM5jW2sptmeDHFe8rof8TFmGCNwZuOrWEDQf4Vy18V9J2kln1rEYYaF9csI +# w7a0++u1tr4Uqs6KqqyDQ5WrTVBe8R58HHVlow5bBPSGJU5F2p8NZ1FbpBXb6w4/ +# uTDmdvl+l1s3JuzkrqibiMDdGyx2rpl/BUHXy3oHc+gc3/A7/gs5+QQD1C29Zf9E +# GN1C04Qc8KKqUsQUr1POspk5ff0GTa2N37rtlkQlMsoHASeVRoPUdcfo6y4rRcNw +# cz6gCLXsFmxXyyeVFgJqSW9apKmY/3RNl9jXJPiasNKCLesj6iFP41C3W/cW1UHC +# hfj1BNWUw99K3X8IWIthcbdYIoAXkLPQV/iD4/Y45lKN2/ni11QvOm53dWk4LlvP +# UL0aikcvVjMRbNt78LoGP0+22U5gyCyhrYbrwGx7sVeAhTmNutk7UoN5v7xnPxeb +# NjwT1rExQwv5eSTwiKJWqnRB5SEvnPvdvkvR6xYcrhC5z7BXHT+eLLo9n0We6UCp +# sAZCwEyJie14lSavrCE92/cW3PdXXDaQ7k+qfATQRrb2EOqMe26vtgyAPksMd5cD +# 4qGXSQ== +# SIG # End signature block diff --git a/ExtendMigrateToAzure/scripts/DSCConfiguration.zip b/ExtendMigrateToAzure/scripts/DSCConfiguration.zip new file mode 100644 index 0000000..2043f56 Binary files /dev/null and b/ExtendMigrateToAzure/scripts/DSCConfiguration.zip differ diff --git a/OfflineUpdateExporter/Microsoft.ConfigurationManager.CabinetUtils.dll b/OfflineUpdateExporter/Microsoft.ConfigurationManager.CabinetUtils.dll new file mode 100644 index 0000000..798df7f Binary files /dev/null and b/OfflineUpdateExporter/Microsoft.ConfigurationManager.CabinetUtils.dll differ diff --git a/OfflineUpdateExporter/OfflineUpdateExporter.exe b/OfflineUpdateExporter/OfflineUpdateExporter.exe new file mode 100644 index 0000000..c0f3046 Binary files /dev/null and b/OfflineUpdateExporter/OfflineUpdateExporter.exe differ diff --git a/OfflineUpdateExporter/patchdownloader.dll b/OfflineUpdateExporter/patchdownloader.dll new file mode 100644 index 0000000..40a3834 Binary files /dev/null and b/OfflineUpdateExporter/patchdownloader.dll differ diff --git a/PortConfiguration/Portswitch.vbs b/PortConfiguration/Portswitch.vbs new file mode 100644 index 0000000..742b370 --- /dev/null +++ b/PortConfiguration/Portswitch.vbs @@ -0,0 +1,579 @@ +'-------------------------------------------------------------------- +' Portswitch.vbs +' Usage: Portswitch (HTTP port number) +' Example:Portswitch 1337 +' (c) Microsoft Corporation. All rights reserved. +' +' This script will set the HTTP port on which the +' ConfigMgr Advanced Client will use to communicate with the Management Point. +' This script is intended to be used with software distribution. +' Because file associations can change it is recommended that you execute portswitch.vbs in the +' following way: +' +' The command line provided in the package's program should be "wscript.exe portswitch.vbs +' (HTTP port number) (optional: HTTPS port number)" +' +' Example: "Wscript.exe portswitch.vbs 1337 31337" +' +' +' To properly generate pass/fail status for software distribution you must do the following: +' 1) In the ConfigMgr package, set the MIF matching properties to the following: +' MIF Filename: "Portswitch.mif" +' 2) In the ConfigMgr Program, you must specify that the "Program will reboot" +' (this is because CCMExec restarts) +' +'-------------------------------------------------------------------- + +Dim objShell 'This establishes the variable Shell that will become the WScript.Shell object. +Dim nPortValue, nSslPortValue, nReadValue 'Holds the value passed as a command argument +Dim CCMService + +Const EVENT_SUCESS = 0 +Const EVENT_FAILED = 2 + +Const Reg_PortKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\HttpPort" 'Set constant as the registry path to the desired key. +Const Reg_PortKeySSL = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM\HttpsPort" 'SSL port for ConfigMgr client + +' Create a WScript.Shell oject +Set objShell = Wscript.CreateObject("Wscript.Shell") + +' check the argument count +iNumberOfArguments = Wscript.Arguments.Count +If iNumberOfArguments > 2 or iNumberOfArguments < 1 Then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs was executed with no specified port. " & _ + "Usage: Portswitch (HTTP port number) " & _ + "(optional HTTPS port number). Examples: ""Portswitch 8080"" or ""PortSwitch 8080 8443""" + FailAndQuit +End if + +On Error Resume Next +' Validate the port arguments, and set the ports in the registry +nPortValue = CLng(Wscript.Arguments.Item(0)) +ValidatePort nPortValue + +' If we have an SSL port, validate it, too. +If iNumberOfArguments = 2 Then + nSslPortValue = CLng(Wscript.Arguments.Item(1)) + If nSslPortValue = nPortValue Then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs had an invalid port specification: HTTP and HTTPS ports cannot be identical." + FailAndQuit + End If + + ValidatePort nSslPortValue + WriteRegKey Reg_PortKeySSL, nSslPortValue +End If + +WriteRegKey Reg_PortKey, nPortValue + +Set objWmiservice = GetObject("winmgmts:root\cimv2:Win32_Service.Name=""CCMExec""") + +' Stop the CCMExec so the port change may be picked up by the client. +errReturnCode = objWMIService.StopService() + +If errReturnCode <> 0 Then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs was unable to stop the CCMExec service: (Err=" & errReturnCode & ")" + FailAndQuit +End If + +' Wait for the ccmexec service to stop (to a maximum of 10 minutes) +Dim dWaitUntil +dWaitUntil = DateAdd("n", 10, Now) +Do While (objWMIService.InterrogateService() <> 6) And (Now < dWaitUntil) + ' The service is still running + WScript.Sleep 1000 +Loop + +' Did the service stop? +If objWMIService.InterrogateService() <> 6 then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs timed out trying to stop the CCMExec service after 3 minutes." + FailAndQuit +End If + +If Err.number <> 0 Then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs - An error occured: " & Err.Description + FailAndQuit +End If + +' Generate a success status mif +WriteStatusMIF(true) + +' Starting CCMExec so the port change may be picked up by the client. +errReturnCode = objWMIService.StartService () +If iNumberOfArguments = 2 Then + objShell.LogEvent EVENT_SUCCESS, _ + "The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & " (HTTP) and " & nSslPortValue & " (HTTPS)" +Else + objShell.LogEvent EVENT_SUCCESS, _ + "The ConfigMgr Advanced Client has been successfully set to communicate with the MP on port " & nPortValue +End If + +WScript.Quit(0) +' ----------------------------- + +ErrorHandler: + objShell.LogEvent EVENT_FAILED, _ + "Portswitch failed with an internal error: " & Err.Description + FailAndQuit + +' ----------------------------- +Sub ValidatePort(nPort) + If Err.number <> 0 Then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs - An invalid port number was specified (Valid ports are 1-65535). " & _ + "Usage: Portswitch (HTTP port number) Example: Portswitch 8080" + FailAndQuit + End If + + ' Check the port value + If nPort < 1 or nPort > 65535 then + objShell.LogEvent EVENT_FAILED, _ + "Portswitch.vbs was executed with an invalid port number (" & nPort & "). Port numbers must fall " & _ + "between 1-65535 Usage: Portswitch (HTTP port number) Example: Portswitch 8080" + FailAndQuit + End if +End Sub + +' ----------------------------- +Sub WriteRegKey(sRegKey, nPort) + nReadValue = objShell.RegRead(sRegKey) + If nReadValue then + ' Write current path to registry key and read it to become constant for script. + objShell.RegWrite (sRegKey), nPort, "REG_DWORD" + nReadValue = objShell.RegRead(sRegKey) + else + objShell.LogEvent EVENT_FAILED, _ + "Portswitch is unable to modify the Registry. The Registry Key is not present. This must be an RTM Advanced Client or a Legacy Client." + FailAndQuit + End If +End Sub + +' ----------------------------- +Sub FailAndQuit() + WriteStatusMIF(false) + WScript.Quit(1) +End Sub + + +' ----------------------------- +Sub WriteStatusMIF(bSuccess) + + ' Writing a status MIF for SWDist to return a success or a failure to execute + Const ForWriting = 2 + Const TemporaryFolder = 2 + Set objFSO = CreateObject("Scripting.FileSystemObject") + Dim strTempDir + strTempDir = objFSO.GetSpecialFolder(TemporaryFolder) + Set objFile = objFSO.CreateTextFile(strTempDir & "\portswitch.mif", ForWriting) + objFile.Writeline ("START COMPONENT") + objFile.Writeline ("NAME = ""WORKSTATION""") + objFile.Writeline (" START GROUP") + objFile.Writeline (" NAME = ""ComponentID""") + objFile.Writeline (" ID = 1") + objFile.Writeline (" CLASS = ""DMTF|ComponentID|1.0""") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Manufacturer""") + objFile.Writeline (" ID = 1") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(64)") + objFile.Writeline (" VALUE = ""Microsoft""") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Product""") + objFile.Writeline (" ID = 2") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(64)") + objFile.Writeline (" VALUE = ""Portswitch""") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Version""") + objFile.Writeline (" ID = 3") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(64)") + objFile.Writeline (" VALUE = ""1.0""") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Locale""") + objFile.Writeline (" ID = 4") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(16)") + objFile.Writeline (" VALUE = ""ENU""") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Serial Number""") + objFile.Writeline (" ID = 5") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(64)") + objFile.Writeline (" VALUE = """"") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Installation""") + objFile.Writeline (" ID = 6") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(64)") + objFile.Writeline (" VALUE = ""DateTime""") + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" END GROUP") + objFile.Writeline (" START GROUP") + objFile.Writeline (" NAME = ""InstallStatus""") + objFile.Writeline (" ID = 2") + objFile.Writeline (" CLASS = ""MICROSOFT|JOBSTATUS|1.0""") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Status""") + objFile.Writeline (" ID = 1") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(32)") + + ' Pass or fail this status mif? + If bSuccess = true then + objFile.Writeline (" VALUE = ""Success""") + else + objFile.Writeline (" VALUE = ""Failed""") + End if + + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" START ATTRIBUTE") + objFile.Writeline (" NAME = ""Description""") + objFile.Writeline (" ID = 2") + objFile.Writeline (" ACCESS = READ-ONLY") + objFile.Writeline (" STORAGE = SPECIFIC") + objFile.Writeline (" TYPE = STRING(128)") + + If bSuccess = true and iNumberOfArguments = 2 then + objFile.Writeline (" VALUE = ""The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & " (HTTP) and " & nSslPortValue & " (HTTPS)""") + ElseIf bSuccess = true then + objFile.Writeline (" VALUE = ""The ConfigMgr Advanced Client has been successfully set to communicate with the MP on ports " & nPortValue & """") + Else + objFile.Writeline (" VALUE = ""The ConfigMgr Advanced Client has not been set to communicate with the MP on the specified port. See the client's Application Event Log for more details""") + End If + + objFile.Writeline (" END ATTRIBUTE") + objFile.Writeline (" END GROUP") + objFile.Writeline ("END COMPONENT") + +End Sub + +'' SIG '' Begin signature block +'' SIG '' MIIn+wYJKoZIhvcNAQcCoIIn7DCCJ+gCAQExDzANBglg +'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor +'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC +'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg +'' SIG '' kNoyQ+kEDMJy5X6lruwNc6Pgdomi/DC06UKEA/dNZYmg +'' SIG '' gg2FMIIGAzCCA+ugAwIBAgITMwAAA64tNVHIU49VHQAA +'' SIG '' AAADrjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV +'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv +'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT +'' SIG '' aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDg1OVoX +'' SIG '' DTI0MTExNDE5MDg1OVowdDELMAkGA1UEBhMCVVMxEzAR +'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v +'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv +'' SIG '' bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +'' SIG '' MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +'' SIG '' 9CD8pjY3wxCoPmMhOkow7ycCltfqYnqk4wGNApzh2dTY +'' SIG '' +YqxozWTzJUOB38VxsgFQmXBFhOMdrGYGpvO9kdbNPkw +'' SIG '' HpTrW6hZqFuLLiRwGKEx4ZM5zVSqbHJuX2fPfUJ0Xmb+ +'' SIG '' VrVsGw/BwBV2zz0rVtiSgqj3GeeGOsG7llfWyrSjyJqm +'' SIG '' 5DHE3o04BAI/NuhkHOv04euiqJGvHFCL8+fXvyD9OAxq +'' SIG '' 4fcJKtoyBb0PBA3oMNQeCsiUyLO+voZqVTOUsAWY0bN5 +'' SIG '' YjkK4nq5DVaNdVrrowd5AX9gmz6D/TJTssns6pDCG00Y +'' SIG '' +Dh3ipWpnVmkhYcByyUSEKX3PLC8DkiAQQIDAQABo4IB +'' SIG '' gjCCAX4wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB +'' SIG '' BQUHAwMwHQYDVR0OBBYEFIcf73Spl4cHOFoll27H9COd +'' SIG '' 4fE/MFQGA1UdEQRNMEukSTBHMS0wKwYDVQQLEyRNaWNy +'' SIG '' b3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx +'' SIG '' FjAUBgNVBAUTDTIzMDAxMis1MDE4MzYwHwYDVR0jBBgw +'' SIG '' FoAUSG5k5VAF04KqFzc3IrVtqMp1ApUwVAYDVR0fBE0w +'' SIG '' SzBJoEegRYZDaHR0cDovL3d3dy5taWNyb3NvZnQuY29t +'' SIG '' L3BraW9wcy9jcmwvTWljQ29kU2lnUENBMjAxMV8yMDEx +'' SIG '' LTA3LTA4LmNybDBhBggrBgEFBQcBAQRVMFMwUQYIKwYB +'' SIG '' BQUHMAKGRWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +'' SIG '' a2lvcHMvY2VydHMvTWljQ29kU2lnUENBMjAxMV8yMDEx +'' SIG '' LTA3LTA4LmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3 +'' SIG '' DQEBCwUAA4ICAQBqyWA1Eu7PKNMjaaxl0V7gJ0XBysUo +'' SIG '' xZluMHJXFE2LEGZIZ2zMLYVjOnAGG/4dluRjSrZZo/8v +'' SIG '' wk4Xt8v6NBB9ofo8H1P/XidHytWTv9lg9MYu++6lPmu5 +'' SIG '' fCozD3cI2NLZPW2BBhGX2D0R8tQBj0FbmZRuIucpiQ7D +'' SIG '' K3CHKlfKcc7MP8pPzuMv55Tox8+KFQD1NG6+bfbYA/BN +'' SIG '' PBkg4tyOh+exbaHfcNuodDJUIjq9dF6oa+Yjy0u0pUMI +'' SIG '' /B1t+8m6rJo0KSoZlrpesYl0jRhpt+hmqx8uENXoGJcY +'' SIG '' ZVJ5N2Skq90LViKNRhi9N4U+e8c4y9uXyomUF/6viCPJ +'' SIG '' 7huTNEJo75ehIJba+IWd3txUEc0R3y6DT6txC6cW1nR/ +'' SIG '' LTbo9I/8fQq538G5IvJ+e5iSiOSVVkVk0i5m03Awy5E2 +'' SIG '' ZSS4PVdQSCcFxmN4tpEfYuR7AAy/GJVtIDFlUpSgdXok +'' SIG '' pSui5hYtK1R9enXXvo+U/xGkLRc+qp4De3dZbzu7pOq7 +'' SIG '' V/jCyhuCw0bEIAU4urCGIip7TI6GBRzD7yPzjFIqeZY7 +'' SIG '' S4rVW5BRn2oEqpm8Su6yTIQvMIk8x2pwYNUa2339Z4gW +'' SIG '' 5xW21eFA5mLpo7NRSKRQms5OgAA18aCgqOU7Ds0h6q/Y +'' SIG '' B4BmEAtoTMl/TBiyKaMGAlEcdy+5FIhmzojMGjCCB3ow +'' SIG '' ggVioAMCAQICCmEOkNIAAAAAAAMwDQYJKoZIhvcNAQEL +'' SIG '' BQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +'' SIG '' aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +'' SIG '' ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMT +'' SIG '' KU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhv +'' SIG '' cml0eSAyMDExMB4XDTExMDcwODIwNTkwOVoXDTI2MDcw +'' SIG '' ODIxMDkwOVowfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT +'' SIG '' Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc +'' SIG '' BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYG +'' SIG '' A1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0Eg +'' SIG '' MjAxMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +'' SIG '' ggIBAKvw+nIQHC6t2G6qghBNNLrytlghn0IbKmvpWlCq +'' SIG '' uAY4GgRJun/DDB7dN2vGEtgL8DjCmQawyDnVARQxQtOJ +'' SIG '' DXlkh36UYCRsr55JnOloXtLfm1OyCizDr9mpK656Ca/X +'' SIG '' llnKYBoF6WZ26DJSJhIv56sIUM+zRLdd2MQuA3WraPPL +'' SIG '' bfM6XKEW9Ea64DhkrG5kNXimoGMPLdNAk/jj3gcN1Vx5 +'' SIG '' pUkp5w2+oBN3vpQ97/vjK1oQH01WKKJ6cuASOrdJXtjt +'' SIG '' 7UORg9l7snuGG9k+sYxd6IlPhBryoS9Z5JA7La4zWMW3 +'' SIG '' Pv4y07MDPbGyr5I4ftKdgCz1TlaRITUlwzluZH9TupwP +'' SIG '' rRkjhMv0ugOGjfdf8NBSv4yUh7zAIXQlXxgotswnKDgl +'' SIG '' mDlKNs98sZKuHCOnqWbsYR9q4ShJnV+I4iVd0yFLPlLE +'' SIG '' tVc/JAPw0XpbL9Uj43BdD1FGd7P4AOG8rAKCX9vAFbO9 +'' SIG '' G9RVS+c5oQ/pI0m8GLhEfEXkwcNyeuBy5yTfv0aZxe/C +'' SIG '' HFfbg43sTUkwp6uO3+xbn6/83bBm4sGXgXvt1u1L50kp +'' SIG '' pxMopqd9Z4DmimJ4X7IvhNdXnFy/dygo8e1twyiPLI9A +'' SIG '' N0/B4YVEicQJTMXUpUMvdJX3bvh4IFgsE11glZo+TzOE +'' SIG '' 2rCIF96eTvSWsLxGoGyY0uDWiIwLAgMBAAGjggHtMIIB +'' SIG '' 6TAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUSG5k +'' SIG '' 5VAF04KqFzc3IrVtqMp1ApUwGQYJKwYBBAGCNxQCBAwe +'' SIG '' CgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB +'' SIG '' /wQFMAMBAf8wHwYDVR0jBBgwFoAUci06AjGQQ7kUBU7h +'' SIG '' 6qfHMdEjiTQwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDov +'' SIG '' L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj +'' SIG '' dHMvTWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNy +'' SIG '' bDBeBggrBgEFBQcBAQRSMFAwTgYIKwYBBQUHMAKGQmh0 +'' SIG '' dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv +'' SIG '' TWljUm9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNydDCB +'' SIG '' nwYDVR0gBIGXMIGUMIGRBgkrBgEEAYI3LgMwgYMwPwYI +'' SIG '' KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv +'' SIG '' bS9wa2lvcHMvZG9jcy9wcmltYXJ5Y3BzLmh0bTBABggr +'' SIG '' BgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBwAG8AbABp +'' SIG '' AGMAeQBfAHMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkq +'' SIG '' hkiG9w0BAQsFAAOCAgEAZ/KGpZjgVHkaLtPYdGcimwuW +'' SIG '' EeFjkplCln3SeQyQwWVfLiw++MNy0W2D/r4/6ArKO79H +'' SIG '' qaPzadtjvyI1pZddZYSQfYtGUFXYDJJ80hpLHPM8QotS +'' SIG '' 0LD9a+M+By4pm+Y9G6XUtR13lDni6WTJRD14eiPzE32m +'' SIG '' kHSDjfTLJgJGKsKKELukqQUMm+1o+mgulaAqPyprWElj +'' SIG '' HwlpblqYluSD9MCP80Yr3vw70L01724lruWvJ+3Q3fMO +'' SIG '' r5kol5hNDj0L8giJ1h/DMhji8MUtzluetEk5CsYKwsat +'' SIG '' ruWy2dsViFFFWDgycScaf7H0J/jeLDogaZiyWYlobm+n +'' SIG '' t3TDQAUGpgEqKD6CPxNNZgvAs0314Y9/HG8VfUWnduVA +'' SIG '' KmWjw11SYobDHWM2l4bf2vP48hahmifhzaWX0O5dY0Hj +'' SIG '' Wwechz4GdwbRBrF1HxS+YWG18NzGGwS+30HHDiju3mUv +'' SIG '' 7Jf2oVyW2ADWoUa9WfOXpQlLSBCZgB/QACnFsZulP0V3 +'' SIG '' HjXG0qKin3p6IvpIlR+r+0cjgPWe+L9rt0uX4ut1eBrs +'' SIG '' 6jeZeRhL/9azI2h15q/6/IvrC4DqaTuv/DDtBEyO3991 +'' SIG '' bWORPdGdVk5Pv4BXIqF4ETIheu9BCrE/+6jMpF3BoYib +'' SIG '' V3FWTkhFwELJm3ZbCoBIa/15n8G9bW1qyVJzEw16UM0x +'' SIG '' ghnOMIIZygIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEG +'' SIG '' A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +'' SIG '' ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +'' SIG '' MSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5n +'' SIG '' IFBDQSAyMDExAhMzAAADri01UchTj1UdAAAAAAOuMA0G +'' SIG '' CWCGSAFlAwQCAQUAoIHeMBkGCSqGSIb3DQEJAzEMBgor +'' SIG '' BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE +'' SIG '' AYI3AgEVMC8GCSqGSIb3DQEJBDEiBCA0WmhIyaCB433Q +'' SIG '' btKGvSlstI+NGeScr9S1mJTSgSORSDByBgorBgEEAYI3 +'' SIG '' AgEMMWQwYqBEgEIARABlAHMAawB0AG8AcABBAG4AYQBs +'' SIG '' AHkAdABpAGMAcwBMAG8AZwBzAEMAbwBsAGwAZQBjAHQA +'' SIG '' bwByAC4AcABzADGhGoAYaHR0cDovL3d3dy5taWNyb3Nv +'' SIG '' ZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAJ9zK+4HpCF+ +'' SIG '' MUnwpdesD9BH6r7upuQnz2Islc44ygwusOykI7QwsqTM +'' SIG '' 0zimy+ptdC3/LT2tobs3Qg/fbLvTqpQpvjtO4Lb/4j5o +'' SIG '' beSb75ATIe/PiTxCtU/2ItsxBNZq/vciBHBPcQrjOxw0 +'' SIG '' c+bdqsqoKkViOngFhOnezGpmj3LsiSn697jifm7top4m +'' SIG '' hEhMML0ekqqfOQ4KP3TUF9ltBWrDCjiDaEyP//w6o56c +'' SIG '' KEHJQ2JFFIuedJ9ACLgW85h/RY1cuJAXN6+79JuLHQgT +'' SIG '' 7PurvxR+idMyjCWNXCXYy13ZVKYryNA9gmtH6OQxi3ht +'' SIG '' oIFv78IMoqfwXgEAIK1/9PuhghcoMIIXJAYKKwYBBAGC +'' SIG '' NwMDATGCFxQwghcQBgkqhkiG9w0BBwKgghcBMIIW/QIB +'' SIG '' AzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcNAQkQ +'' SIG '' AQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEwMTAN +'' SIG '' BglghkgBZQMEAgEFAAQgSr696137b/L1iZdh+gDumG0i +'' SIG '' y7UFdJv/wZFbrf7GFXYCBmYzqJqqQxgTMjAyNDA1MDIy +'' SIG '' MDU1NDYuMzg1WjAEgAIB9KCB2KSB1TCB0jELMAkGA1UE +'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +'' SIG '' b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IEly +'' SIG '' ZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQL +'' SIG '' Ex1UaGFsZXMgVFNTIEVTTjozQkQ0LTRCODAtNjlDMzEl +'' SIG '' MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy +'' SIG '' dmljZaCCEXcwggcnMIIFD6ADAgECAhMzAAAB5Y9qwPM9 +'' SIG '' tAujAAEAAAHlMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNV +'' SIG '' BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD +'' SIG '' VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg +'' SIG '' Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU +'' SIG '' aW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTAxMjE5MDcz +'' SIG '' NVoXDTI1MDExMDE5MDczNVowgdIxCzAJBgNVBAYTAlVT +'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +'' SIG '' YXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5k +'' SIG '' IE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhh +'' SIG '' bGVzIFRTUyBFU046M0JENC00QjgwLTY5QzMxJTAjBgNV +'' SIG '' BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Uw +'' SIG '' ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCp +'' SIG '' e+A62rtjuiy6yTtx8k7zvWl2ov/3jcj+TC1ma5lBjTiT +'' SIG '' D8DCNPFfcwX0TzXLnK3iGEsiR45DCFBprodKz1ef9vlA +'' SIG '' ixqzdT++5/X6v5nc1zDdRc6mjx3ShJSp3iUPEenD+Ha7 +'' SIG '' thspprda6xnDXvNNAnA+nfzXaKJppHdfelajrY2RQNV1 +'' SIG '' rvhrBQXlh4ns/z5ZanDP3lp7ZEDLNJStM5gnx/gbu4tY +'' SIG '' fhQ0UfBe1s1K/+zN44VXT6QH6ts2AgPGVSzYBIs2PrxZ +'' SIG '' oMfsw7rlPxgoQyu5JQ3AsPv4FaBLkjpeXJULMnVkIySV +'' SIG '' +2dslftSguhtSVaqT93aSjwD/+LnTaqUeRyHm/E2tSX4 +'' SIG '' 0VM0r96ko3ucvUWE/wI1jWEO4LHs7g1jP/HGddZHKNSb +'' SIG '' 1MjkPMfyQ5DBakkcI9b/pnOiyipY//3Vghvx8PaaXZVi +'' SIG '' V+qbA3rELkEexVe3gqlf5X2o6C6Tzcf/cxdXb/MlwXc5 +'' SIG '' liT3gontl2kJ6wCg6pRt817sfbTUJs9i/ek3cZyDtjhp +'' SIG '' mMQQAGQFqCm5rWCPgos+AmMjtBZuWd0+NGuXeyibn7Re +'' SIG '' gk6HHHP1Kf46RX0IrS343e9XEvnCwnqEPqtJ9CAC71fm +'' SIG '' nGxDaLkjq47/0LWOBSIx5SOc3ScyZxrJFSeaM4Y4tGEb +'' SIG '' HL9VsCRQLssgjELy3Zj3XQIDAQABo4IBSTCCAUUwHQYD +'' SIG '' VR0OBBYEFN//n4e7TXMxInxF5QkIBTl4DIeqMB8GA1Ud +'' SIG '' IwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1Ud +'' SIG '' HwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0 +'' SIG '' LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUt +'' SIG '' U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEF +'' SIG '' BQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cu +'' SIG '' bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9z +'' SIG '' b2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSku +'' SIG '' Y3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYI +'' SIG '' KwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3 +'' SIG '' DQEBCwUAA4ICAQAz+sIThYw9WnfBpBCfaCwbr3453TMh +'' SIG '' kPUeB4ASkpT7d6WtF1S3IpqyZQ5yhoBQYlsCOlzoMPNo +'' SIG '' XaJQ4jAwSy1kTEyR1lXlGNYFOFwfDjiMQXPf0PN829XN +'' SIG '' EVhLqYAuPCPm/tsdlTYBiVLECMj0dj4l0IU+T8nqzIGo +'' SIG '' PTkqHUIxcKTXRoq52tq6VdtxFMBXjuft6El+CXgjWb4M +'' SIG '' lDsyqcjL6lWrm6PhpX/6bH1ubSHDI2VbdHpbMH6tKiTU +'' SIG '' IKGIqW2k77+8ZosVCRk24sWIn08AIrz3CjXXorGZrbbO +'' SIG '' zh2wDO/eWbyi0hKl4kVIw2Gcnh8gMrDBAC2yIXV4BxIe +'' SIG '' tCqGcs5QV891cRIqxO54bnDcDNrVYjpcCOxJHlOYbnXL +'' SIG '' Z1whueSbjMP8G+3O9USopmQPyl5VqZgb5CZAdAWREvDg +'' SIG '' hg3fs2P0/QZ06fLIt+k6pfOFX6WHvYh5suz6qsajBdgp +'' SIG '' +KtmtJhDJ6Qa7gxhP4EfXPElSdp7ZAEcuUn5brifzAet +'' SIG '' ckb09ZlMd5cqaTttnj4wY58KBL1cWw409Y4XTDXXrzrg +'' SIG '' 3iRs0SyvRzZkwwvk3WUJY/lTICJvGXhCETRdKGr4hfkG +'' SIG '' XFGS1s1m2Kusg6JPBGShYkUeaLQaBi72mBacQWVBPJpy +'' SIG '' yrg5WKG468Ye5Z8K8Vf3zMtBfX0qNicRZrS4LTCCB3Ew +'' SIG '' ggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJ +'' SIG '' KoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD +'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k +'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x +'' SIG '' MjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmlj +'' SIG '' YXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIy +'' SIG '' NVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMx +'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl +'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +'' SIG '' dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh +'' SIG '' bXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4IC +'' SIG '' DwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3u +'' SIG '' nAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VT +'' SIG '' cVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aO +'' SIG '' RmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlh +'' SIG '' AnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S +'' SIG '' /rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc +'' SIG '' 6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1o +'' SIG '' O5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbni +'' SIG '' jYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3E +'' SIG '' XzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYr +'' SIG '' bqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M +'' SIG '' 269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFph +'' SIG '' AXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6Cm +'' SIG '' gyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr +'' SIG '' 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfH +'' SIG '' CBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQIDAQAB +'' SIG '' o4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr +'' SIG '' BgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4w +'' SIG '' HQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwG +'' SIG '' A1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYB +'' SIG '' BQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +'' SIG '' a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUE +'' SIG '' DDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMA +'' SIG '' dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +'' SIG '' AwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX +'' SIG '' zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js +'' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N +'' SIG '' aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYB +'' SIG '' BQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3 +'' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl +'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF +'' SIG '' AAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5O +'' SIG '' R2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts +'' SIG '' 0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp +'' SIG '' 4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRX +'' SIG '' ud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFd +'' SIG '' PSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZ +'' SIG '' QhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzs +'' SIG '' kYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCr +'' SIG '' dTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5 +'' SIG '' JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxn +'' SIG '' GSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2tVdU +'' SIG '' CbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3 +'' SIG '' Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzba +'' SIG '' ukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRb +'' SIG '' atGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT +'' SIG '' TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggLTMIICPAIB +'' SIG '' ATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYD +'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k +'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x +'' SIG '' LTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh +'' SIG '' dGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRT +'' SIG '' UyBFU046M0JENC00QjgwLTY5QzMxJTAjBgNVBAMTHE1p +'' SIG '' Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAH +'' SIG '' BgUrDgMCGgMVAPeNohrmBa7BOMM1g3fORKTOkYsKoIGD +'' SIG '' MIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE +'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw +'' SIG '' DQYJKoZIhvcNAQEFBQACBQDp3icNMCIYDzIwMjQwNTAy +'' SIG '' MjI1MTU3WhgPMjAyNDA1MDMyMjUxNTdaMHMwOQYKKwYB +'' SIG '' BAGEWQoEATErMCkwCgIFAOneJw0CAQAwBgIBAAIBCDAH +'' SIG '' AgEAAgIRVzAKAgUA6d94jQIBADA2BgorBgEEAYRZCgQC +'' SIG '' MSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQow +'' SIG '' CAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBADaQqHja +'' SIG '' OqoHQOVEUxJ0LoKdCagtOxJfD3099ShJlCv3vUni6+3H +'' SIG '' GPKMH46NjPwqRE+gazyrJAR1sEnnrM+jlmA6Ybde0GlC +'' SIG '' 7NQUjSVI/LU9ie9XkodPq28cc5KXmny1roGN3UByBene +'' SIG '' hsSHrJ63JCzv//vI4XGwGemjCYKmz3oYMYIEDTCCBAkC +'' SIG '' AQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE +'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC +'' SIG '' EzMAAAHlj2rA8z20C6MAAQAAAeUwDQYJYIZIAWUDBAIB +'' SIG '' BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB +'' SIG '' BDAvBgkqhkiG9w0BCQQxIgQgO/d+xJXyipEnhQB5YCKb +'' SIG '' /510ev/Bpllc+uySGfDQNiIwgfoGCyqGSIb3DQEJEAIv +'' SIG '' MYHqMIHnMIHkMIG9BCAVqdP//qjxGFhe2YboEXeb8I/p +'' SIG '' Aof01CwhbxUH9U697TCBmDCBgKR+MHwxCzAJBgNVBAYT +'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH +'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +'' SIG '' cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l +'' SIG '' LVN0YW1wIFBDQSAyMDEwAhMzAAAB5Y9qwPM9tAujAAEA +'' SIG '' AAHlMCIEIIxI1X5ALp6rnWH5V1diADKb7ruIm50/mvcH +'' SIG '' f/g5juuhMA0GCSqGSIb3DQEBCwUABIICAGNonK74S7hT +'' SIG '' zX8qp/LdUDLYemNFd6lC/VyG/wGUm1KRz7xb+chJDA9z +'' SIG '' rEumYQR8ZvS6B6bhbhRMi34xoAKA/saTgtGDr/zT3hGp +'' SIG '' n79JJt4F9d/bBUwt2am+PIX+PbnQl90VUYqGVml21fbE +'' SIG '' bmym5kuOWPa3ro59yMZ7QcKs1ZFYSNzUNacQ52XuGsZP +'' SIG '' 07l77Nm5ECWPzXfuBCmbDsxeK7LDBCeptTO3DAIrtkDf +'' SIG '' p+dx2eO4d0E3bqQ0buISKCh/ERqVP+D5kvFx4xE/z8ag +'' SIG '' RazCysLFvzElldhnWf0+6+AOgT++2r0LKJf52NpytAA+ +'' SIG '' TBw4tgFQKhai5+jn5k0Y7r0kyFtQ76r7szNbobPKkxEB +'' SIG '' v69Gwq9prlezA7knth/NjnZdFgkmiMTJkX4BS23Kouvn +'' SIG '' 2Hz5qMZk3bcS4UM+wyOr85xq8DeN8hVj9eiUWTOlXEJQ +'' SIG '' lGD+o196BgWD+Yi1Rap3K84gXyXOpbXK83aYDlWGCJxo +'' SIG '' fAga1ZUIhqol7Q++SMllOjmKcGb+1kSRUFo30BaEaT81 +'' SIG '' 8cViNmglvbi4fCWG38dhhWKxDil+4LLMjPsKyS6tnEvS +'' SIG '' VWB2iv/l1hDfTeCarsJVxnPbQY8vo4mE2vVBhA8Bwc/E +'' SIG '' oZpQMEDaKUHHCJ+qlAKwmnbqbWH1+Kj3FRJeU5MvKR22 +'' SIG '' aeejB/WQJnsi +'' SIG '' End signature block diff --git a/ServerTools/AdminUI.WqlQueryEngine.dll b/ServerTools/AdminUI.WqlQueryEngine.dll new file mode 100644 index 0000000..f5d4f2f Binary files /dev/null and b/ServerTools/AdminUI.WqlQueryEngine.dll differ diff --git a/ServerTools/ContentLibraryExplorer.exe b/ServerTools/ContentLibraryExplorer.exe new file mode 100644 index 0000000..d0c4459 Binary files /dev/null and b/ServerTools/ContentLibraryExplorer.exe differ diff --git a/ServerTools/ContentLibraryTransfer.exe b/ServerTools/ContentLibraryTransfer.exe new file mode 100644 index 0000000..9245508 Binary files /dev/null and b/ServerTools/ContentLibraryTransfer.exe differ diff --git a/ServerTools/ContentOwnershipTool.exe b/ServerTools/ContentOwnershipTool.exe new file mode 100644 index 0000000..41bf9d7 Binary files /dev/null and b/ServerTools/ContentOwnershipTool.exe differ diff --git a/ServerTools/DPJobMgr.exe b/ServerTools/DPJobMgr.exe new file mode 100644 index 0000000..491b657 Binary files /dev/null and b/ServerTools/DPJobMgr.exe differ diff --git a/ServerTools/Microsoft.ConfigurationManagement.ManagementProvider.dll b/ServerTools/Microsoft.ConfigurationManagement.ManagementProvider.dll new file mode 100644 index 0000000..c36476b Binary files /dev/null and b/ServerTools/Microsoft.ConfigurationManagement.ManagementProvider.dll differ diff --git a/ServerTools/Microsoft.Diagnostics.Tracing.EventSource.dll b/ServerTools/Microsoft.Diagnostics.Tracing.EventSource.dll new file mode 100644 index 0000000..c390180 Binary files /dev/null and b/ServerTools/Microsoft.Diagnostics.Tracing.EventSource.dll differ diff --git a/ServerTools/RunMeterSumm.exe b/ServerTools/RunMeterSumm.exe new file mode 100644 index 0000000..d452f94 Binary files /dev/null and b/ServerTools/RunMeterSumm.exe differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.CabinetUtils.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.CabinetUtils.dll new file mode 100644 index 0000000..798df7f Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.CabinetUtils.dll differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Common.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Common.dll new file mode 100644 index 0000000..0b70222 Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Common.dll differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Connector.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Connector.dll new file mode 100644 index 0000000..102b340 Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.Connector.dll differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.DataUpload.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.DataUpload.dll new file mode 100644 index 0000000..990361c Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.DataUpload.dll differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.MessageDownload.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.MessageDownload.dll new file mode 100644 index 0000000..8b6c8c1 Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.DmpConnector.MessageDownload.dll differ diff --git a/ServiceConnectionTool/Microsoft.ConfigurationManager.ManagedBase.dll b/ServiceConnectionTool/Microsoft.ConfigurationManager.ManagedBase.dll new file mode 100644 index 0000000..bda298d Binary files /dev/null and b/ServiceConnectionTool/Microsoft.ConfigurationManager.ManagedBase.dll differ diff --git a/ServiceConnectionTool/ServiceConnectionTool.exe b/ServiceConnectionTool/ServiceConnectionTool.exe new file mode 100644 index 0000000..e4b6649 Binary files /dev/null and b/ServiceConnectionTool/ServiceConnectionTool.exe differ diff --git a/ServiceConnectionTool/baseutil.dll b/ServiceConnectionTool/baseutil.dll new file mode 100644 index 0000000..d759919 Binary files /dev/null and b/ServiceConnectionTool/baseutil.dll differ diff --git a/ServiceConnectionTool/setupdl.exe b/ServiceConnectionTool/setupdl.exe new file mode 100644 index 0000000..5f39c4a Binary files /dev/null and b/ServiceConnectionTool/setupdl.exe differ diff --git a/SupportCenter/SupportCenterInstaller.msi b/SupportCenter/SupportCenterInstaller.msi new file mode 100644 index 0000000..16a6be5 Binary files /dev/null and b/SupportCenter/SupportCenterInstaller.msi differ diff --git a/UploadOfflineFeedback/CommandLine.dll b/UploadOfflineFeedback/CommandLine.dll new file mode 100644 index 0000000..f293e1e Binary files /dev/null and b/UploadOfflineFeedback/CommandLine.dll differ diff --git a/UploadOfflineFeedback/Microsoft.ConfigurationManagement.Feedback.Common.dll b/UploadOfflineFeedback/Microsoft.ConfigurationManagement.Feedback.Common.dll new file mode 100644 index 0000000..e67d32d Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.ConfigurationManagement.Feedback.Common.dll differ diff --git a/UploadOfflineFeedback/Microsoft.ConfigurationManagement.ManagementProvider.dll b/UploadOfflineFeedback/Microsoft.ConfigurationManagement.ManagementProvider.dll new file mode 100644 index 0000000..c36476b Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.ConfigurationManagement.ManagementProvider.dll differ diff --git a/UploadOfflineFeedback/Microsoft.ConfigurationManager.CabinetUtils.dll b/UploadOfflineFeedback/Microsoft.ConfigurationManager.CabinetUtils.dll new file mode 100644 index 0000000..798df7f Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.ConfigurationManager.CabinetUtils.dll differ diff --git a/UploadOfflineFeedback/Microsoft.Diagnostics.Tracing.EventSource.dll b/UploadOfflineFeedback/Microsoft.Diagnostics.Tracing.EventSource.dll new file mode 100644 index 0000000..c390180 Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.Diagnostics.Tracing.EventSource.dll differ diff --git a/UploadOfflineFeedback/Microsoft.Identity.Client.Extensions.Msal.dll b/UploadOfflineFeedback/Microsoft.Identity.Client.Extensions.Msal.dll new file mode 100644 index 0000000..661af6d Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.Identity.Client.Extensions.Msal.dll differ diff --git a/UploadOfflineFeedback/Microsoft.Identity.Client.dll b/UploadOfflineFeedback/Microsoft.Identity.Client.dll new file mode 100644 index 0000000..07e8186 Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.Identity.Client.dll differ diff --git a/UploadOfflineFeedback/Microsoft.WindowsAzure.Storage.dll b/UploadOfflineFeedback/Microsoft.WindowsAzure.Storage.dll new file mode 100644 index 0000000..d25230b Binary files /dev/null and b/UploadOfflineFeedback/Microsoft.WindowsAzure.Storage.dll differ diff --git a/UploadOfflineFeedback/NewtonSoft.Json.dll b/UploadOfflineFeedback/NewtonSoft.Json.dll new file mode 100644 index 0000000..31c2f52 Binary files /dev/null and b/UploadOfflineFeedback/NewtonSoft.Json.dll differ diff --git a/UploadOfflineFeedback/System.ValueTuple.dll b/UploadOfflineFeedback/System.ValueTuple.dll new file mode 100644 index 0000000..b63769a Binary files /dev/null and b/UploadOfflineFeedback/System.ValueTuple.dll differ diff --git a/UploadOfflineFeedback/UploadOfflineFeedback.exe b/UploadOfflineFeedback/UploadOfflineFeedback.exe new file mode 100644 index 0000000..1bd86e3 Binary files /dev/null and b/UploadOfflineFeedback/UploadOfflineFeedback.exe differ