WSUS mit PowerShell managen

Um besser zu steuern welche Updates auf einem WSUS-Server liegen bzw. wieder gelöscht werden sollen und dies natürlich in Abhängigkeit welche Updates von Clients benötigt werden, bietet sich PowerShell an. Auf der GUI lassen sich diese Einstellungen leider nicht sehr detailliert realisieren.

Folgendes Script übernimmt die Synchronisierung und das Approvment aller Patches eines WSUS-Servers. Da nur benötigte Patches heruntergeladen werden, ist dies unproblematisch.
Die WSUS-Datenbank wächst dadurch jedoch auf 7,5 GB
Je nach Patch-Status der Clients werden initial unter 10 GB geladen und man kann sich sicher sein, dass alle Patches die durch WSUS bereitgestellt werden, im Bedarfsfall auch ausgerollt werden! Weiterlesen „WSUS mit PowerShell managen“

PKI – Nützliche Befehle

Register:
Certutil -setreg CA\DSConfigDN „CN=Configuration,DC=Fabrikam,DC=com“
(aproved)

CRL:
Certutil -setreg CA\CRLPeriodUnits 1
Certutil -setreg CA\CRLPeriod Weeks
Certutil -setreg CA\CRLDeltaPeriodUnits 0
(aproved)

CRL Overlap:
Certutil -setreg CA\CRLOverlapPeriodUnits 48
Certutil -setreg CA\CRLOverlapPeriod Hours
(aproved)

Max Period:
Certutil -setreg CA\ValidityPeriodUnits 5
Certutil -setreg CA\ValidityPeriod Years
(aproved)

AIA:
certutil -setreg CA\CACertPublicationURLs „1:C:\Windows\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2:ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11\n2:http://pki.fabrikam.com/CertEnroll/%1_%3%4.crt“
(not aproved)

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.

Weiterlesen „PowerShell Basic Funktionen“

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.