Files
SGU-CredentialProvider/scripts/Repair-SguClientEnrollment.ps1

71 lines
2.8 KiB
PowerShell

[CmdletBinding()]
param(
[string]$ConfigurationPath = "$env:ProgramData\SGU\Enrollment\enrollment.json"
)
$ErrorActionPreference = 'Stop'
$configuration = Get-Content -LiteralPath $ConfigurationPath -Raw | ConvertFrom-Json
$enrollmentRoot = Split-Path $ConfigurationPath -Parent
$testScript = Join-Path $enrollmentRoot 'Test-SguClientEnrollment.ps1'
$installScript = Join-Path $enrollmentRoot 'Install-CredentialProvider.ps1'
$remoteAccessScript = Join-Path $enrollmentRoot 'Enable-LabRemoteAccess.ps1'
$monitoringScript = Join-Path $enrollmentRoot 'Enable-SguClientMonitoring.ps1'
$rustDeskScript = Join-Path $enrollmentRoot 'Install-SguRustDeskClient.ps1'
$localUserScript = Join-Path $enrollmentRoot 'Set-SguStandardLocalUser.ps1'
$before = & $testScript
if (-not $before.IsValid) {
& $localUserScript | Out-Null
$installParams = @{
PublishPath = [string]$configuration.PublishPath
BrokerEndpoint = [string]$configuration.BrokerEndpoint
ClientCertificateThumbprint = [string]$configuration.ClientCertificateThumbprint
ServerCertificateThumbprint = [string]$configuration.ServerCertificateThumbprint
DomainNetbios = [string]$configuration.DomainNetbios
TimeoutSeconds = [int]$configuration.TimeoutSeconds
}
if ($configuration.DotNetRuntimeInstallerPath) {
$installParams.InstallDotNetRuntime = $true
$installParams.DotNetRuntimeInstallerPath = [string]$configuration.DotNetRuntimeInstallerPath
}
& $installScript @installParams | Out-Null
}
$computer = Get-CimInstance Win32_ComputerSystem
$domainReady = $false
if ($computer.PartOfDomain) {
try {
$domainReady = [bool](Test-ComputerSecureChannel -ErrorAction Stop)
}
catch {
$domainReady = $false
}
}
if ($domainReady) {
& $remoteAccessScript `
-RemoteDesktopPrincipal ([string]$configuration.RemoteDesktopPrincipal) `
-EnableAdministrativeFirewallGroups | Out-Null
& $monitoringScript | Out-Null
}
if ($configuration.RustDeskServerAddress -and $configuration.RustDeskServerPublicKey) {
& $rustDeskScript -ServerAddress ([string]$configuration.RustDeskServerAddress) `
-ServerPublicKey ([string]$configuration.RustDeskServerPublicKey) | Out-Null
}
$verificationParams = @{}
if ($domainReady) {
$verificationParams.RequireDomainJoined = $true
$verificationParams.RequireRemoteAccess = $true
$verificationParams.RemoteDesktopPrincipal = [string]$configuration.RemoteDesktopPrincipal
}
if ($configuration.RustDeskServerAddress) {
$verificationParams.RequireRustDesk = $true
$verificationParams.RustDeskServerAddress = [string]$configuration.RustDeskServerAddress
}
$after = & $testScript @verificationParams
$after
if (-not $after.IsValid) {
throw "SGU enrollment repair did not reach a valid state: $($after.Issues -join ' ')"
}