<#
.SYNOPSIS
Installs the Remote Server Administration Tools (RSAT) and its requirements.
.DESCRIPTION
This function installs the RSAT tool and its requirements on the local machine. The RSAT tool allows administrators to remotely manage Windows servers from a Windows client computer.
.NOTES
- This function requires administrative privileges to install the RSAT tool.
- The RSAT tool and its requirements may vary depending on the Windows version.
.EXAMPLE
Install-RSAT
Installs the RSAT tool and its requirements on the local machine.
#>
function Install-RSAT
{
# Check if the user has administrative privileges
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
Write-Output "This function requires administrative privileges."
exit 1
}
# Check the Windows version
$osVersion = (Get-WmiObject -Class Win32_OperatingSystem).Caption
$isWindows10 = $osVersion -like "*Windows 10*"
# Install the RSAT tool and its requirements
if ($isWindows10)
{
# RSAT for Windows 10
Write-Output "Installing RSAT for Windows 10..."
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.BitLocker.Recovery.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.CertificateServices.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.DHCP.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.Dns.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.FailoverCluster.Management.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.FileServices.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.IPAM.Client.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.LLDP.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.NetworkController.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.NetworkLoadBalancing.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.RemoteAccess.Management.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.ServerManager.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.Shielded.VM.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.StorageMigrationService.Management.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.StorageReplica.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.SystemInsights.Management.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.VolumeActivation.Tools~~~~0.0.1.0" -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Rsat.WSUS.Tools~~~~0.0.1.0" -NoRestart
Write-Output "RSAT for Windows 10 has been installed."
}
else
{
# RSAT for other Windows versions
Write-Output "Installing RSAT for other Windows versions..."
$rsatInstallerPath = "https://download.microsoft.com/download/1/1/7/117FB25C-8F8C-42E3-9F0E-7A5BFB5C0F9F/WindowsTH-RSAT_WS2016-x64.msu"
$rsatInstallerFilePath = "$env:TEMP\WindowsTH-RSAT_WS2016-x64.msu"
# Download the RSAT installer
Write-Output "Downloading RSAT installer..."
Invoke-WebRequest -Uri $rsatInstallerPath -OutFile $rsatInstallerFilePath
# Install RSAT
Write-Output "Installing RSAT..."
Start-Process -FilePath $rsatInstallerFilePath -ArgumentList "/quiet" -Wait
# Clean up the RSAT installer file
Write-Output "Cleaning up..."
Remove-Item -Path $rsatInstallerFilePath
Write-Output "RSAT has been installed."
}
}
# Usage example for the Install-RSAT function
Install-RSAT