#########################################################
# DATE : 01-06-2017
#
# This script does a bulk registry remote check and modification if need
#
# PREREQUISUITE : AD and PowerShell ISE modules installed
# First fill the $Path variable with LDAP OU path need
# or unlock CSV import block for production servers to delete “#” first character)
# (critical servers are in same production OU)
#########################################################
############ Import CSV : server list ############
[System.Reflection.Assembly]::LoadWithPartialName(« System.windows.forms ») | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = « CSV (*.csv)| *.csv »
$OpenFileDialog.ShowDialog() | Out-Null
$CSV = @()
$InputFile = $OpenFileDialog.filename
$CSV = Import-Csv $inputfile -Delimiter « ; »
foreach ($computer in $CSV) {
# ping server check
if(!(Test-Connection -ComputerName $Computer -Quiet -Count 1 -TimeToLive 10)) {
Write-Warning « $($Computer): No ping »
continue;
}
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $Computer)
$RegKey = $Reg.OpenSubKey(« SYSTEM\\CurrentControlSet\\Control\\Lsa\\Kerberos\\Parameters »)
if($RegKey.GetValue(« MaxTokenSize ») -eq $Empty) {
# if key already exist
$RegKey= $Reg.OpenSubKey(« SYSTEM\\CurrentControlSet\\Control\\Lsa\\Kerberos\\Parameters », $True)
$Name = « MaxTokenSize »
$Value = « 48000 »
$Type = « DWord »
$regKey.Setvalue(« $Name », « $Value », « $Type »)
Write-Warning « $($Computer): MaxTokenSize set to 48000 »
} elseif($RegKey.GetValue(« MaxTokenSize ») -ne « 48000 ») {
# if key already exist but wrong value
$RegKey= $Reg.OpenSubKey(« SYSTEM\\CurrentControlSet\\Control\\Lsa\\Kerberos\\Parameters », $True)
$Name = « MaxTokenSize »
$Value = « 48000 »
}
}