Falsche Servereinträge im Outlook-Profil

Manchmal kommt es vor, dass durch vorkonfigurierte Office-Installationen ein falscher Exchange-Server im Outlook-Profil steht.
Denn wird bei der Installation von Office das Profil mitgeliefert (Admin-Switch) wird beim Start von Outlook kein Autodiscover durchgeführt.

Folgendes Script könnte diese Problem beheben:

$Path = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles"
$Search = "oldserver.powershell.pub"

If ( -not ( Test-Path -Path $Path ) )
	{ exit }

$PROs = Get-ChildItem -Path $Path | select Name -expand name

foreach ( $PRO in $PROs )            #Profile
	{
	$Found = $False
	$Keys = Get-ChildItem -Path $( "Registry::" + $PRO )
	
	foreach ( $Key in $Keys )              # Hexadezimale Schlüssel
	   {
	   $VALS = $Key.GetValueNames()
	   foreach ( $VAL in $VALS )             # Namen der Werte
		   {
		   if ( $Key.GetValue( $VAL ) -contains $Search ) # Vergleich der Werte mit Suchstring
			   {
			   $Found = $True
			   break
			   }
		   }
	   if ( $Found )
		   {
		   break
		   }
	   }
	if ( $Found )
	   {
	   Remove-Item -path $( "Registry::" + $PRO ) -Recurse -Force -Confirm:$false -whatif
	   }
	}

In Zeile 32 wird das fehlerhafte Profil rekursiv gelöscht. Aktuell ist hier noch ein „-whatif“ damit man erst mal testen kann, was gelöscht werden würde 😉

WINS aus NIC-Config löschen

folgendes Batch-Script löscht die WINS-Konfiguration von allen verbundenen Netzwerkkarten:

@echo off
FOR /F "skip=2 tokens=4*" %%a IN ('NetSh.exe Interface IP Show Interface') DO (
	if "%%a"=="connected" (
		rem echo "%%b - %%a"
		netsh interface ipv4 set winsservers name="%%b" static none
	)
)
exit /B

„skip“ könnte hier auch weggelassen werden. Die Verarbeitung läuft trotzdem, da auf „connected“ geprüft wird.

Sollen alle NICs umkonfiguriert werden, sollte man „skip“ korrekt angeben, damit die richtige Anzahl an Zeilen übersprungen wird. Ansonsten werden ungültige Netzwerkadapter „konfiguriert“  was Fehler hervorruft…

Wird die Zahl zu groß gewählt, werden NICs übersprungen.

 

Exchange 2016: Log-Files-Speicherort ändern

Mit folgendem Script werden die meisten, per default aktivierten, Log-Files auf ein anderes Volume gelegt. Im Skript wird davon ausgegeangen, das der Installations-Pfad C:\Program Files\… ist

Der „alte“ Pfad wird in der ersten Zeile Angegeben.
Der Ziel-Pfad kann in der zweiten Zeile angepasst werden.

$Source = "C:\Program Files\Microsoft\Exchange Server\V15\"
$Dest = "D:\Exchange\Logs\"

$Log = Get-TransportService $env:computername | select *logpath

$ConnectivityLogPath = $Log.ConnectivityLogPath.PathName.replace($Source,$Dest)
$MessageTrackingLogPath = $Log.MessageTrackingLogPath.PathName.replace($Source,$Dest)
$IrmLogPath = $Log.IrmLogPath.PathName.replace($Source,$Dest)
$ActiveUserStatisticsLogPath = $Log.ActiveUserStatisticsLogPath.PathName.replace($Source,$Dest)
$ServerStatisticsLogPath = $Log.ServerStatisticsLogPath.PathName.replace($Source,$Dest)
$ReceiveProtocolLogPath = $Log.ReceiveProtocolLogPath.PathName.replace($Source,$Dest)
$RoutingTableLogPath = $Log.RoutingTableLogPath.PathName.replace($Source,$Dest)
$SendProtocolLogPath = $Log.SendProtocolLogPath.PathName.replace($Source,$Dest)
$QueueLogPath = $Log.QueueLogPath.PathName.replace($Source,$Dest)
$GeneralLogPath = $Log.GeneralLogPath.PathName.replace($Source,$Dest)
$WlmLogPath = $Log.WlmLogPath.PathName.replace($Source,$Dest)
$AgentLogPath = $Log.AgentLogPath.PathName.replace($Source,$Dest)

New-Item -itemtype directory -path $ConnectivityLogPath
New-Item -itemtype directory -path $MessageTrackingLogPath
New-Item -itemtype directory -path $IrmLogPath
New-Item -itemtype directory -path $ActiveUserStatisticsLogPath
New-Item -itemtype directory -path $ServerStatisticsLogPath
New-Item -itemtype directory -path $ReceiveProtocolLogPath
New-Item -itemtype directory -path $RoutingTableLogPath
New-Item -itemtype directory -path $SendProtocolLogPath
New-Item -itemtype directory -path $QueueLogPath
New-Item -itemtype directory -path $WlmLogPath
New-Item -itemtype directory -path $AgentLogPath

Set-TransportService $env:computername -ConnectivityLogPath $ConnectivityLogPath -MessageTrackingLogPath $MessageTrackingLogPath -IrmLogPath $IrmLogPath -ActiveUserStatisticsLogPath $ActiveUserStatisticsLogPath -ServerStatisticsLogPath $ServerStatisticsLogPath -ReceiveProtocolLogPath $ReceiveProtocolLogPath -RoutingTableLogPath $RoutingTableLogPath -SendProtocolLogPath $SendProtocolLogPath -QueueLogPath $QueueLogPath -WlmLogPath $WlmLogPath -AgentLogPath $AgentLogPath

$Log = Get-Mailboxserver $env:computername | select *logpath*

$CalendarRepairLogPath = $Log.CalendarRepairLogPath.PathName.replace($Source,$Dest)
$LogPathForManagedFolders = $Log.LogPathForManagedFolders.PathName.replace($Source,$Dest)

New-Item -itemtype directory -path $CalendarRepairLogPath 
New-Item -itemtype directory -path $LogPathForManagedFolders

Set-Mailboxserver $env:computername -CalendarRepairLogPath $CalendarRepairLogPath -LogPathForManagedFolders $LogPathForManagedFolders