PowerShell Basic Funktionen

Anbei ein paar nützliche Code-Snipsel:

Ein Snipsel zum Händeln von Log-File

  • Automatisches Logrotate
  • Größenbegrenzung

 

Ein Snipsel zum befüllen der Logs:

  • Funktion zur Ermittlung der Aktuellen Script-Zeilennummer
  • Funktion write-log zum schreiben ins Log-File mit Zeitstempel
  • Ausgabe auf den Bildschirm wenn „$debug“ gesetzt ist.

„PowerShell Basic Funktionen“ weiterlesen

Bindungen von Empfangs-Konnektoren anpassen

Es ist manchmal von Vorteil, wenn Empfangs-Konnektoren auf IPs fest gebunden werden.
Z.B. wenn man externen IP-Pools eine andere Berechtigung zuweisten möchten als dem restlichen Internet. Bei einer Hybriden Office 365 Umgebung könnte dies der Fall sein.

Um die Konfiguration zu automatisieren und damit Tippfehlern vorzubeugen, könnte dieses Script zum Einsatz kommen:

$SIPs = (get-NetAdapter -Name Servers |Get-NetIPAddress).IPAddress
$OIPs = (get-NetAdapter -Name O365-Connector |Get-NetIPAddress).IPAddress
$RCs = Get-ReceiveConnector -Server $Env:Computername

$O365 = "Internal Office 365"

$Cs = $RCs | where { $_.Name -ne $O365 } 
foreach($C in $Cs)
{
	$I = @()
	foreach($SIP in $SIPs)
		{
		$I += $SIP + ":" + $C.Bindings[0].Port.ToString()
		}
	$I
	Set-ReceiveConnector -Identity $C.Id -Bindings $I -whatif
}

$Cs = $RCs | where { $_.Name -eq $O365 } 
foreach($C in $Cs)
{
	$I = @()
	foreach($SIP in $OIPs)
		{
		$I += $SIP + ":" + $C.Bindings[0].Port.ToString()
		}
	$I
	Set-ReceiveConnector -Identity $C.Id -Bindings $I -whatif
}

Am Ende von Zeile 16 und 28 sorgt das „-whatif“ dafür, dass man erst mal testen kann!

In diesem Fall hat die NIC für interne Kommunikation den Namen „Servers“ (Zeile 1) und die NIC für Office 365 den Namen „O365-Connector“ (Zeile 2)

Der Office 365 Konnektor heißt hier „Inbound from Office 365“ (Zeile 5)

Die Namen sind natürlich allesamt als Beispiel anzusehen.

 

 

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 😉