71 lines
2.8 KiB
PowerShell
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 ' ')"
|
|
}
|