Configure Syslog on Local Datastore with PowerCLI

Configuring a syslog folder is convenient for troubleshooting ESXi. But it’s a pain you-know-where to configure manually across all your ESXi servers. Luckily, PowerCLI can help out. This script creates a folder on the local datastore and configures ESXi to write the syslog in that folder.

#Folder name you like
$syslogFolderName = "syslog"
#Connect to vCenter
Connect-VIServer vcenter.domain.local
#Loop through hosts
ForEach ($vmhost in Get-VMHost)
	#Get only the first part of the FQDN (only if you used the FQDN to add the ESX server to vCenter)
	$hostname = $".")[0].ToUpper()
	#Local datastore name (equal to hostname in my case)
	$datastorename = $hostname
	#Make the local datastore accessible as a PSdrive
	New-PSDrive -Name $hostname -Root \ -PSProvider VimDatastore -Datastore (Get-Datastore $datastorename) -Scope global
	#Access the new PSDrive
	Set-Location $hostname":"
	#Create the syslog folder
	New-Item $syslogFolderName -ItemType directory
	#Set the advanced parameter to configure the syslog on the local datastore
	$value = "[$datastorename] $syslogFoldername/$hostname.log"
	Set-VMHostAdvancedConfiguration -VMHost $vmhost -Name "Syslog.Local.DatastorePath" -Value $value
	Set-Location $PSHOME
	Remove-PSDrive $hostname
	Clear-Variable hostname -ErrorAction SilentlyContinue
	Clear-Variable datastorename -ErrorAction SilentlyContinue
	Clear-Variable value -ErrorAction SilentlyContinue
#Disconnect from vCenter
Disconnect-VIServer -confirm:$false
Close Menu