Ce script permet de désactiver les éléments non essentiels au serveur lors de son installation.
##################################
# Step 1 : Network configuration #
##################################
Write-Host 'Network configuration' -ForegroundColor Green
Write-Host 'WINS configuration' -ForegroundColor Gray
$Arguments = New-Object System.Collections.Hashtable
$Arguments.Add('DNSEnabledForWINSResolution', $false)
$Arguments.Add('WINSEnableLMHostsLookup', $false)
$ErrorCode = (Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName EnableWINS -Arguments $Arguments).ReturnValue
If ($ErrorCode -gt 0) {
Write-Host 'Error when disabling WINS' -ForegroundColor Red
}
############################
# Step 2 : Remove Features #
############################
Write-Host 'Features configuration' -ForegroundColor Green
$Features = @(
'FS-SMB1'
)
$Features | ForEach-Object {
$CurrentFeature = $_
Try {
Uninstall-WindowsFeature -Name $CurrentFeature -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
# Release
$CurrentFeature = $null
}
######################################
# Step 3 : Disabling Scheduled Tasks #
######################################
Write-Host 'Scheduled Tasks configuration' -ForegroundColor Green
$ScheduledTasks = @(
'*XblGameSaveTask*'
'*XblGameSaveTaskLogon*'
)
$ScheduledTasks | ForEach-Object {
$CurrentScheduledTask = $_
Try {
Get-ScheduledTask -TaskName $CurrentScheduledTask | Disable-ScheduledTask -ErrorAction Stop | Out-Null
}
Catch {
Write-Warning $($_)
}
$CurrentScheduledTask = $null
}
################################
# Step 4: Windows Applications #
################################
Write-Host 'Windows Applications configuration' -ForegroundColor Green
$Apps = Get-AppxPackage -AllUsers | Where-Object {$_.NonRemovable -eq $false}
$Packages = Get-AppxProvisionedPackage -Online:$true
# Verifying if some Apps could be remove
If ($Apps.count -gt 0) {
$Apps | ForEach-Object {
$AppName = $_.Name
Try {
$Package = Get-AppxPackage -Name $AppName -ErrorAction Stop
If ($Package) {
Try {
# Remove App
Write-Host "Removing $AppName" -ForegroundColor Cyan
#Remove-AppPackage -Package $Package -ErrorAction Stop
$Package = $null
}
Catch {
Write-Warning $($_)
}
}
Else {
If ($Packages.Count -gt 0) {
# Remove the app with Online Package
$Package = $Packages.Where({$_.DisplayName -eq $AppName})
If ($Package) {
Try {
Write-Host "Removing $AppName" -ForegroundColor DarkCyan
Remove-AppxProvisionedPackage -PackageName $Package.PackageName -Online -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
}
}
}
Catch {
Write-Warning $($_)
}
# Release
$AppName = $null
}
}
###################################
# Step 5 : OneDrive configuration #
###################################
Write-Host 'OneDrive configuration' -ForegroundColor Green
If (Get-Process -Name "*onedrive*") {
Try {
Get-Process -Name "*onedrive*" | Stop-Process -Force -ErrorAction Stop
If (Test-Path -Path "$env:SystemRoot\SysWOW64\OneDriveSetup.exe") {
Try {
Start-Process -FilePath "$($env:SystemRoot)\SysWOW64\OneDriveSetup.exe" -ArgumentList '/uninstall' -ErrorAction Stop | out-Null
}
Catch {
Write-Warning $($_)
}
}
Elseif (Test-Path -Path "$env:SystemRoot\System32\OneDriveSetup.exe") {
Try {
Start-Process -FilePath "$($env:SystemRoot)\System32\OneDriveSetup.exe" -ArgumentList '/uninstall' -ErrorAction Stop | out-Null
}
Catch {
Write-Warning $($_)
}
}
}
Catch {
Write-Warning $($_)
}
}
Else {
Write-Host "No Process OneDrive here" -ForegroundColor Cyan
}
###################################
# Step 6 : Services configuration #
###################################
$services = @(
'AppVClient';
'AudioEndpointBuilder';
'Audiosrv';
'AxInstSV';
'Browser';
'bthserv';
'CDPUserSvc';
'CscService';
'dmwappushservice';
'FrameServer';
'icssvc';
'lfsvc';
'lltdsvc';
'MapsBroker';
'NcbService';
'NetTcpPortSharing';
'OneSyncSvc';
'PcaSvc';
'PhoneSvc';
'PrintNotify';
'QWAVE';
'RemoteAccess';
'RmSvc';
'SCardSvr';
'ScDeviceEnum';
'SensorDataService';
'SensorService';
'SensrSvc';
'SharedAccess';
'ShellHWDetection';
'Spooler';
'SSDPSRV';
'stisvc';
'TabletInputService';
'tzautoupdate';
'UevAgentService';
'upnphost';
'WalletService';
'WiaRpc';
'wisvc';
'wlidsvc';
'WpnService';
'WSearch';
'XblAuthManager';
'XblGameSave'
)
$services | Get-Service | Stop-Service -Force
$services | Get-Service | Set-Service -StartupType Disabled -Status Stopped
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NgcCtnrSvc" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NgcSvc" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\PimIndexMaintenanceSvc" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UnistoreSvc" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UserDataSvc" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
Try {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WpnUserService" -Name "Start" -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
$services2 = @(
'NgcCtnrSvc';
'NgcSvc';
'PimIndexMaintenanceSvc';
'UnistoreSvc';
'UserDataSvc';
'WpnUserService';
)
$services2 | Get-Service | ft Name,StartType,Status
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NgcCtnrSvc_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NgcCtnrSvc_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NgcSvc_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NgcSvc_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\PimIndexMaintenanceSvc_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\PimIndexMaintenanceSvc_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UnistoreSvc_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\UnistoreSvc_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\UserDataSvc_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\UserDataSvc_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WpnUserService_*") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\WpnUserService_*' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
If (Test-Path -Path "HKLM:\SYSTEM\CurrentControlSet\Services\xbgm") {
Try {
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\xbgm' -Name 'Start' -Value 0x4 -Force -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}