93 lines
4.4 KiB
PowerShell
93 lines
4.4 KiB
PowerShell
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
|
Write-Error "Exécutez ce script en tant qu'administrateur."
|
|
exit 1
|
|
}
|
|
|
|
# Exercice 1 : Installation des rôles RDS
|
|
Write-Output "Installation des rôles RDS..."
|
|
$features = @('RDS-RD-Server', 'RDS-Web-Access', 'RDS-Connection-Broker')
|
|
foreach ($f in $features) {
|
|
Write-Output "Installation Feature: $f"
|
|
try {
|
|
Install-WindowsFeature -Name $f -IncludeManagementTools -ErrorAction Stop | Out-Null
|
|
Write-Output "Feature $f installée."
|
|
}
|
|
catch {
|
|
Write-Warning "Impossible d'installer $f : $_"
|
|
}
|
|
}
|
|
|
|
$BrokerFQDN = "srv2.chromatic.moe"
|
|
$WebFQDN = "srv2.chromatic.moe"
|
|
$SessionHostFQDN = "srv2.chromatic.moe"
|
|
$CollectionName = "Collection_Bureau"
|
|
$UserGroup = "CHROMATIC\Domain Users"
|
|
$CertDnsName = $WebFQDN
|
|
$RemoteApps = @(
|
|
@{Alias = 'notepad'; DisplayName = 'Bloc-notes'; FilePath = 'C:\Windows\System32\notepad.exe' },
|
|
@{Alias = 'calc'; DisplayName = 'Calculatrice'; FilePath = 'C:\Windows\System32\calc.exe' }
|
|
)
|
|
|
|
Import-Module RemoteDesktop
|
|
|
|
# Exercice 2 : Création du déploiement RDS
|
|
try {
|
|
Write-Output "Création du déploiement RDS via New-RDSessionDeployment..."
|
|
New-RDSessionDeployment -ConnectionBroker $BrokerFQDN -WebAccessServer $WebFQDN -SessionHost $SessionHostFQDN -Verbose -ErrorAction Stop
|
|
Add-RDServer -Role RDS-RD-SERVER -Server $SessionHostFQDN -ConnectionBroker $BrokerFQDN -ErrorAction Stop
|
|
Write-Output "Déploiement RDS créé."
|
|
}
|
|
catch {
|
|
Write-Warning "New-RDSessionDeployment a échoué ou a été déjà exécuté : $_"
|
|
}
|
|
|
|
# Exercice 3 : Création de la collection de sessions
|
|
try {
|
|
Write-Output "Création de la collection '$CollectionName'..."
|
|
New-RDSessionCollection -CollectionName $CollectionName -SessionHost @($SessionHostFQDN) -ConnectionBroker $BrokerFQDN -CollectionDescription "Collection pour les bureaux utilisateurs" -ErrorAction Stop
|
|
Write-Output "Collection '$CollectionName' créée."
|
|
Set-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup $UserGroup -ConnectionBroker $BrokerFQDN -ErrorAction Stop
|
|
Write-Output "Groupe d'utilisateurs '$UserGroup' assigné à la collection '$CollectionName'."
|
|
}
|
|
catch {
|
|
Write-Warning "New-RDSessionCollection a échoué (peut-être déjà existante) : $_"
|
|
}
|
|
|
|
# Exercice 4 : Publication des RemoteApps
|
|
Write-Output "Publication des RemoteApps dans la collection '$CollectionName'..."
|
|
foreach ($app in $RemoteApps) {
|
|
try {
|
|
Write-Output "Publication RemoteApp: $($app.DisplayName) ($($app.FilePath))"
|
|
New-RDRemoteApp -CollectionName $CollectionName -DisplayName $app.DisplayName -FilePath $app.FilePath -Alias $app.Alias -ConnectionBroker $BrokerFQDN -ErrorAction Stop
|
|
Write-Output "RemoteApp '$($app.DisplayName)' publiée."
|
|
}
|
|
catch {
|
|
Write-Warning "Impossible de publier '$($app.DisplayName)' : $_"
|
|
}
|
|
}
|
|
|
|
# Exercice 5 : Création et association d'un certificat SSL auto-signé
|
|
try {
|
|
Write-Output "Création certificat auto-signé pour $CertDnsName..."
|
|
$cert = New-SelfSignedCertificate -DnsName $CertDnsName -CertStoreLocation Cert:\LocalMachine\My -NotAfter (Get-Date).AddYears(5)
|
|
Write-Output "Certificat créé : Thumbprint = $($cert.Thumbprint)"
|
|
|
|
Write-Output "Application du certificat aux rôles RDS (RDWeb, RDGateway si présent)..."
|
|
try {
|
|
Set-RDCertificate -Role RDWebAccess -Thumbprint $cert.Thumbprint -Force -ErrorAction Stop
|
|
Set-RDCertificate -Role RDGateway -Thumbprint $cert.Thumbprint -Force -ErrorAction Stop
|
|
Write-Output "Certificat appliqué au rôle RDWebAccess."
|
|
}
|
|
catch {
|
|
Write-Warning "Set-RDCertificate - RDWebAccess a échoué : $_"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Warning "Erreur lors de la création/association du certificat : $_"
|
|
}
|
|
|
|
# Exercice 6 : Résumé des éléments déployés
|
|
Write-Output "`nRésumé des éléments déployés :"
|
|
try { Get-RDSessionCollection -ConnectionBroker $BrokerFQDN | Select-Object CollectionName, Description | Format-Table -AutoSize } catch {}
|
|
try { Get-RDRemoteApp -CollectionName $CollectionName -ConnectionBroker $BrokerFQDN | Select-Object Alias, DisplayName, FilePath | Format-Table -AutoSize } catch {}
|
|
try { Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*$CertDnsName*" } | Select-Object Thumbprint, Subject, NotAfter | Format-Table -AutoSize } catch {} |