BIS-F has own system optimizations (97_PrepBISF_PRE_BaseImage.ps1) for the Operating System, as describes here. In addition you can also trigger VMware OS Optimization Tool (vmOSOT) or Citrix Optimizer (CTXO) from BIS-F, configured in the BIS-F ADMX.
Note:If vmOSOT and/or CTXO is configured, some BIS-F system optimization will not be executed.
Global Optimizations:
- Delete Citrix Cache C:\Program Files (x86)\Citrix\System32\Cache*
- Delete Software Distribution C:\Windows\SoftwareDistribution\Download*
- Delete Windows Update Log C:\Windows\WindowsUpdate.log
- Purge DNS resolver Cache > ipconfig /flushdns
- Purge IP-to-Physical address translation tables Cache (ARP Table) > arp -d *
- Clear all event logs
- Disable Receive Side Scaling (RSS) > netsh.exe int tcp set global rss=disable
- Disable Data Execution Prevention > bcdedit.exe /set nx AlwaysOff
- Disable Startup Repair option > bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
- Disable New Network dialog
- Set-ItemProperty -Name NewNetworkWindowOff -Path
- ‘HKLM:\SYSTEM\CurrentControlSet\Control\Network’ -Type String -Value 0
- Set Power Saving Scheme to High Performance > powercfg.exe -s 8c5e7fdae8bf-4a96-9a85-a6e23a8c635c
- Reset Microsoft Distributed Transaction Service > msdtc.exe -reset
- Hide Vmware Tools icon in systray (If installed)
- Set-ItemProperty -Path ‘HKLM:\SOFTWARE\VMware, Inc.\VMware Tools’ -Name ‘ShowTray’ -Value ‘0’ -Type DWORD
- Disable VMware debug driver (If installed)
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\services\vmdebug’ -Name ‘Start’ -Value ‘4’ -Type DWORD
- Hide PVS Status icon in systray (If installed)
- New-Item -Path ‘HKLM:\SOFTWARE\CITRIX\ProvisioningServices\Status’ -Force | out-null; SetItemProperty -Path ‘HKLM:\SOFTWARE\CITRIX\ProvisioningServices\Status’ -Name ‘ShowIcon’ -Value ‘0’ -Type DWORD
- Delete WSUS – SusClientId
- Remove-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate’ -Name ‘SusClientId’
- Delete WSUS – SusClientIdValidation
- Remove-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate’ -Name ‘SusClientIdValidation’
- Set Windows Update Service to Disabled
- Set-Service -Name wuauserv -StartupType Disabled
- Cleaning directory $env:windir\Temp and $env:temp
- Remoce DirtyShutdownFlag
- Remove-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion’ -Name ‘DirtyShutdown’
- Remove LastAliveStamp to prevent shutdown tracker after reboot
- Remove-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability’ -Name ‘LastAliveStamp’
7.1912.1 and higher
- Clear NameServer in Registry TCPIP Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters’ -Name ‘NameServer’ -value “”
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘NameServer’ -value “”
- Clear Domain in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘Domain’ -value “”
- Clear DhcpIPAddress in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpIPAddress’ -value “”
- Clear DhcpSubnetmask in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces<AdapterGUID>’ -Name ‘DhcpSubnetmask’ -value “”
- Clear DhcpServer in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpServer’ -value “”
- Clear DhcpNameServer in Registry TCPIPParameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpNameServer’ -value “”
- Clear DhcpDefaultGateway in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpDefaultGateway’ -value “”
- Disable IPv6 on AdapterGUID > nvspbind.exe /d “<AdapterGUID>” ms_tcpip6
Controlled with BIS-F ADMX:
- Delete AllUsers Start Menu C:\ProgramData\Microsoft\Windows\Start Menu\*
- Run Delprof2 to deletes inactive user profiles (If installed)
- Run CCleaner to clean temp files (If installed) > CCleaner.exe /Auto
- Reset Performance Counters during preparation and also on personliaztaion > lodctr.exe /r
- Disable IPv6 in registry
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\TcpIp6\Parameters’ -Name ‘DisabledComponents’ -Value ‘0x000000FF’ -Type DWORD”
- Executing all queued .NET compilation jobs > ngen.exe ExecuteQueuedItems
- Running sdelete (If installed, version 1.6.1 supported only) on PVS WriteCacheDisk or on local Disk (if Image is in shared Mode only)
- PVS: sdelete.exe -accepteula -z <WriteCacheDrive>
- MCS/VMware/ Microsoft: sdelete.exe -accepteula -z %SystemDrive%
- Disable IPv6 on AdapterGUID > nvspbind.exe /d “<AdapterGUID>” ms_tcpip6
Executed only, if 3rd Party Optimizer (vmOSOT or CTXO) are not enabled in BIS-F ADMX:
- Disabling TCP/IP task offloading
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters’ -Name ‘DisableTaskOffload’ -Value ‘1’ -Type DWORD”
- Increases the UDP packet size to 1500 bytes for FastSend
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\afd\Parameters’ -Name ‘FastSendDatagramThreshold’ -Value ‘1500’ -Type DWORD”
- Set multiplication factor to the default UDP scavenge value (MaxEndpointCountMult)
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\BFE\Parameters’ -Name ‘MaxEndpointCountMult’ -Value ‘0x10’ -Type DWORD”
- ARP Cache Changes Adapter > netsh interface ipv4 set interface <AdapterName> basereachable=600000
- Stop DHCP Client Service > Stop-Service -Name dhcp
7.1912.0 only:
- Clear NameServer in Registry TCPIP Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters’ -Name ‘NameServer’ -value “”
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘NameServer’ -value “”
- Clear Domain in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘Domain’ -value “”
- Clear DhcpIPAddress in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpIPAddress’ -value “”
- Clear DhcpSubnetmask in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces<AdapterGUID>’ -Name ‘DhcpSubnetmask’ -value “”
- Clear DhcpServer in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpServer’ -value “”
- Clear DhcpNameServer in Registry TCPIPParameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpNameServer’ -value “”
- Clear DhcpDefaultGateway in Registry TCPIP\Parameters
- Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<AdapterGUID>’ -Name ‘DhcpDefaultGateway’ -value “”
- Disable IPv6 on AdapterGUID > nvspbind.exe /d “<AdapterGUID>” ms_tcpip6