Lines To Be Added
$Servers = (Get-ExchangeServer).name Foreach ($Server in $Servers) { (Insert single server code here) }
Add this ‘-computername $ComputerName’ to all CIM based cmdlets.
Final Script
Here is the complete script:
# Clear the screen CLS # Variables $Servers = (Get-ExchangeServer).name Foreach ($Server in $Servers) { Write-Host "Configuring the Pagefile on $Server......" -ForegroundColor Green Write-Host " " Start-Sleep 5 # Loop Specific Variables # $Computername = $env:computername $Computername = $Server # Get RAM and set ideal PageFileSize try { [int32]$RamInMb = (Get-CIMInstance -computername $ComputerName -Classname win32_physicalmemory -ErrorAction Stop | measure-object -property capacity -sum).sum/1MB } catch { write-host "Cannot acquire the amount of RAM in the server." -ForegroundColor Red $stop = $true } [int32]$Size = $RAMinMb + 10 # Set Maximum Pagefile Size If ($Size -gt 32778) { $Size = 32778 } # Disk Space Check $Disk = Get-WmiObject Win32_LogicalDisk -ComputerName $ComputerName -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace $MB = $Disk.FreeSpace/1mb $FreeSpace = [Math]::Round($MB) if ($FreeSpace -lt $Size) { Write-Host "There isn't enough diskspace available for configuring the Pagefile to the correct size." -ForegroundColor Yellow Write-Host "The Pagefile needs to be $Size MB and the amount of freespace is $FreeSpace MB." -ForegroundColor White } Else { Write-Host " " Write-Host "The Pagefile will be set to a Maximum size of $Size MB and a Minimum size of $Size MB." -ForegroundColor Yellow Write-Host " " # Option 1 # Set-CimInstance -Property @{AutomaticManagedPageFile = $False} # Set the Automatic Pagefile to False Set-CimInstance -ComputerName $ComputerName -Query “Select * from win32_computersystem” -Property @{automaticmanagedpagefile=”False”} -ErrorAction STOP # Remove the old Pagefile $PageFile = Get-CimInstance -ClassName Win32_PageFileSetting -ComputerName $ComputerName $PageFile | Remove-CimInstance # Set the Pagefile to the new size New-CimInstance -ComputerName $ComputerName -ClassName Win32_PageFileSetting -Property @{Name= "$("C"):\pagefile.sys"} Get-CimInstance -ComputerName $ComputerName -ClassName Win32_PageFileSetting | Set-CimInstance -Property @{InitialSize = $size; MaximumSize = $size} # End Result $pagefile = Get-CimInstance -ComputerName $ComputerName win32_PageFileSetting -Property * | select-object Name,initialsize,maximumsize $name = $pagefile.name;$max = $pagefile.maximumsize;$min = $pagefile.initialsize write-host " " write-host "The Pagefile of $Name on $Server is now configured for an initial size of " -ForegroundColor white -NoNewline write-host "$min " -ForegroundColor green -NoNewline write-host "and a maximum size of " -ForegroundColor white -NoNewline write-host "$max." -ForegroundColor Green write-host " " Write-Host "DON'T FORGET TO REBOOT THE $Name SERVER!!!" -ForegroundColor Red } Write-Host " " Write-Host "Completed the progress for Pagefile configuration on $Server......" -ForegroundColor Cyan Start-Sleep 5 Write-Host " " Write-Host " " }
Script Run-Through
A quick run-through of the script shows one failed configuration and one successful configuration of the Pagefile for multiple servers:
One More addendum
The above code will only handle Exchange Servers that do not have the Edge Transport role installed on it. I will cover how to handle those servers in an additional article later this month.