Batch – Ermitteln der öffentlichen IP Adresse hinter einem NAT Router

Möchte man regelmäßig seine öffentlichen IP Adresse ermitteln und diese in einer Datei Protokollieren, so kann man einfach folgendes Windows Batch-Script verwenden:

echo off 
cls

::
:: ** Dies Script ermittelt die externe IP, sofern man hinter einem NAT Router sich befindet,
:: ** und schreibt diese in die Datei aus der Variablen "report"

:: **** ein paar Umgebungsvariablen zum anpassen
:: **
::
set report=c:\temp\oeff-ip.txt
set curlpath=curl.exe

:: **********************************************************************************************
:: **** Ab hier nichts mehr anpassen
:: **********************************************************************************************
::

:: Datum und Uhrzeit ermitteln und in Variablen sichern
for /f "tokens=1-3" %%a in ('cmd.exe /c "echo. | time"') do if %%a == Aktuelle set time=%%c
for /f "tokens=1-4" %%a in ('cmd.exe /c "echo. | date"') do if %%a == Aktuelles set date=%%d

echo|set /p="%date% - %time% - IP = " >> %report%
%curlpath% -s http://ip.tx2.net >> %report%
echo. >> %report%

Wer mag kann die Variable report entsprechend anpassen und mittels Aufgabenplanung das Script regelmäßig ausführen lassen.

SECUREPOINT SSL VPN CLIENT NEU INSTALLIEREN – Variante 2

Wie in einem vorigen Artikel gezeigt, kann es unter Umständen passieren den Securepoint VPN Client neu installieren zu müssen. Mit folgender Variante müssen wir nur das MSI Paket von https://sourceforge.net/projects/securepoint/files/ herunter laden, eine Sicherung erzeugen und die Installation starten.

Ich gehe mal davon aus, dass das aktuelles MSI Paket sich im Ordner c:\temp befindet. Des weiteren müssen wir nur eine CMD-Box öffnen und nacheinander folgende Befehle ausführen:

set myDat=%date:~6,4%-%date:~3,2%-%date:~0,2%
xcopy "%appdata%\Securepoint SSL VPN\" "%appdata%\%myDat%-Securepoint SSL VPN.sik\" /S /y

Anschließend kann man den installierten Securepoint Client deinstallieren. Installiert man wieder exakt die gleiche Version, kann die Deinstallation übersprungen und direkt mit folgendem Befehl weiter gemacht werden.

msiexec /i c:\temp\openvpn-client-installer-2.0.33.msi /german

Vor dem ersten Start kopiert man die Sicherung wieder an den korrekten Platz. 

xcopy "%appdata%\%myDat%-Securepoint SSL VPN.sik\" "%appdata%\Securepoint SSL VPN\"  /S /y

Anschließend kann man den Securepoint Client starten und die Einstellungen prüfen. Mehr sollte nicht zu tun sein und bestenfalls sind alle weiteren Einstellungen noch vorhanden.

Automapping (Exchange) deaktivieren

Unter Umständen möchte man das Automapping für einen einzelnen Exchange Nutzer deaktivieren, damit man ein zusätzliches Postfach als Eigenständiges Postfach einrichten kann und dies nicht zweimal im Outlook erscheint.

Automapping ist die Funktion, die Postfächer automatisch in das Outlook einbindet auf die man Vollzugriff-Rechte hat.

Um bequem die Einstellung vorzunehmen und nicht die Powershell zu bemühen, muss man zuerst im Active Directory-Benutzer und -Computer Manager die erweiterten Funktionen aktivieren. Dies geht unter dem Menüpunkt „Ansicht“.
Im Anschluss muss man sich zu dem Postfach in der OU „durchhangeln“ bei diesem man das Automapping für den einen Nutzer ausschalten möchte.

Beispiel:

Benutzer Knut hat Vollzugriffsrechte auf das Postfach „Redaktion“.

Also „hangel“ ich mich im AD zu der OU in dem das Postfach „Redaktion“ enthalten ist und gehen in die Eigenschaften. In der Registerkarte Attribute-Editor muss ich den Wert msExchDelegateListLink suchen. Dort sucht an sich in der Auflistung den Nutzer (im obigen Beispiel „Knut“) heraus und entfernt diesen. Anschließend kann man das Dialogfenster schließen.

Im Outlook des Nutzers (Im Beispiel Knut) sollte das Postfach nicht mehr automatisch erscheinen und man kann dies als weiteres Exchange Postfach konfigurieren. 

Dies funktioniert meiner Erfahrung nach am besten im Online Modus, also den Outlook Cache im Outlook ausschalten!

ESXI Lieblings CLI Befehle

Zuerst meinen öffentlich SSH-Key hinzufügen. Das macht den Zugriff auf die Root-Konsole wesentlich einfacher:

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCw70ZfkRAD4/EWSt9pN2agjEnY6eO16+pP+jKhZCtI621D80zeQP3MYCC88HLmojEnGeZg1QO7XWeObpqoHsYnJYT6uoxszkzQCUXuMP1n2pPSMnqb4MBZQauSfk8pDVF/riA5YcTQ7b2oUSuSzHPmURqELdVSv5EFek9HT9TdZf1NhEr2R8Z4gO9tgWVBndbrtgirk0Tyj+k2ctyiyGwkYHIQKRITjW1tmGwrl/TQAj5s2431yN8eL4YNWlCbv7uoS3PlIb3d5qjEZ4WDU4Rxm8MF3L+20emZ55WXDSEGj8qaKATsoN7q9bubrK7aIXQZomei/XchtqCkwMFGG/Fl herter" >> /etc/ssh/keys-root/authorized_keys 

SSH einschalten. (Das geht natürlich nur von der Konsole oder mittels IPMI aus.

vim-cmd hostsvc/enable_ssh 

Alle virtuellen Maschinen auflisten

vim-cmd vmsvc/getallvms

Derzeit laufende virtuelle Maschinen kann man mit folgendem Befehl auflisten

esxcli vm process list

Virtuelle Maschine starten

vim-cmd vmsvc/power.on {VMID}

Virtuelle Maschine herunterfahren bzw. hart ausschalten

vim-cmd vmsvc/power.shutdown {VMID}
vim-cmd vmsvc/power.off {VMID}

Viele weitere Parameter von vim-cmd gibt es mit

vim-cmd help

Wartungsmodus einschalten bzw. ausschalten

vim-cmd hostsvc/maintenance_mode_enter
vim-cmd hostsvc/maintenance_mode_exit

Host herunterfahren

poweroff

Host neustarten

reboot

S.M.A.R.T Festplattenstatus

SMART steht für Self-Monitoring, Analysis and Reporting Technology, zu deutsch: Selbstüberwachung, Analyse und Aufzeichnung.
Alle Festplatten prüfen automatisch, ob und wie oft es zum Beispiel zu Lese- und Schreibfehlern gekommen ist oder welche Festplattenbereiche defekt und ausgefallen sind. Die Daten legt die Festplatte im internen SMART-Speicher ab.

Hier (Webfund) mal die wichtigsten Werte und dessen Bedeutung:

Raw_Read_Error_Rate

Anzahl der bislang aufgetretenen Lesefehler. Kritisch: Viele Lesefehler deuten auf einen drohenden Festplattenausfall hin.

Spin_Up_Time

Durchschnittliche Zeit in Millisekunden, bis die Platte die volle Umdrehungsgeschwindigkeit erreicht. Kritisch: Niedrige Werte deuten auf einen Lager- oder Motorschaden hin.

Start_Stop_Count

Anzahl, wie oft der Festplattenmotor eingeschaltet wurde. Unkritisch: Hohe Werte sind unkritisch.

Reallocated_Sector_Ct

Anzahl der bisher genutzten Reservesektoren der Festplatten. Sehr kritisch: Hohe Werte deuten auf einen drohenden Festplattenausfall, da normale Bereiche der Festplatte bereits ausgefallen sind und die Platte auf die Reservesektoren zurückgreifen muss.

Seek_Error_Rate

Anzahl der Positionierungsfehler des Schreib-/Lesekopfs. Kritisch: Hohe oder steigende Werte deuten auf einen drohenden Festplattenausfall.

Seek_Time_Performance

Durchschnittliche Zeit zum Positionieren der Schreib-/Leseköpfe. Kritisch: Niedrige Werte deuten auf ein mechanisches Problem hin.

Power_On_Hours

Bisherige Betriebsdauer der Festplatte in Stunden, bei einigen Festplatten (z.B. Samsung SV1604 N) in Minuten. Kritisch, wenn die Betriebsstunden die vom Hersteller angegebene Lebenserwartung (MTBF, Mean Time Before Failure) erreicht.

Spin_Retry_Count

Anzahl der Startversuche der Festplatte. Kritisch: Hohe oder steigende Werte deuten auf einen drohenden Festplattenausfall aufgrund defekter Lager oder Festplattenmotoren hin.

End-to-End-Error

Anzahl der fehlerhaften Daten, die vom internen Speicher auf die Festplatte geschrieben wurden. Kritisch: Hohe oder steigenden Werte deuten auf einen Festplatten- oder Festplattenspeicherfehler hin.

Temperature_Celsius

Aktuelle Festplattentemperatur. Kritisch, wenn die Temperatur über der vom Hersteller angegebenen Höchsttemperatur (meist 60° C) liegt).

UMDA_CRC_Error_Count

Anzahl der Prüfsummenfehler (Übertragungfehler) bei der Datenübertragung. Kritisch: Hohe Werte deuten auf defekte Kabel, Steckkontakte oder Controller oder fehlerhafte Treiber hin.

Smart Werte

Exchange PowerShell Snippets

Hier möchte ich von mir häufig benutzte Exchange PowerShell Befehle notieren.

Weiterleitungen ermitteln

Get-Mailbox -ResultSize unlimited | Where-Object {$_.ForwardingSMTPAddress -ne $null} | Select-Object Name,ForwardingSMTPAddress

Verteilergruppen ermitteln und abspeichern

write-output “” > C:\temp\outputDGmembers.txt
get-distributiongroup | Sort -Property DisplayName | foreach {
$name = $_.displayname
$mailadresse = $_.PrimarySmtpAddress
$output = ‘Group Name: ‘ + $Name + ' ' + $mailadresse
write-output $output >> C:\temp\outputDGmembers.txt
Get-DistributionGroupMember $name | Sort -Property DisplayName | Select DisplayName, Alias, Department >> C:\temp\outputDGmembers.txt
write-output “” “” >> C:\temp\outputDGmembers.txt
}

Senden-Als Berechtigungen ermitteln (kann länger dauern)

Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like '*Send*') -and -not ($_.User -like "NT-AUTORITÄT\SELBST")}  | Format-Table -Auto Identity,User,Deny,ExtendedRights

Senden im Auftrag ermitteln (kann länger dauern)

Get-Mailbox | Where-Object {$_.GrantSendOnBehalfTo -ne $null} | fl DisplayName,Alias,Identity,GrantSendOnBehalfTo

Vollzugriff auf Postfach ermitteln (alle)

$nbdomain = "NetBIOS-DOMAIN"
Get-Mailbox | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")} | ft -AutoSize

Berechtigung eines einzelnen Postfachs auslesen

$user = "k.mustermann"
get-mailbox -identity $user| Get-MailboxPermission | ?{($_.IsInherited -eq $False) -and -not ($_.User -match "SELBST")} | ft $user,User,AccessRights -AutoSize

Mailbox Exportieren vorbereiten. Dieser Nutzer hat nach dem Neustart der Powershell das Recht Postfächer zu ex- bzw. importieren.

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User <BENUTZERAME>

Postfach exportieren

New-MailboxExportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100

Postfach importieren

New-MailboxImportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100

Mailbox Export überwachen

Get-MailboxExportRequest
Get-MailboxExportRequest |Sort-Object -Property Status | ft FilePath, Status

Bulk Export von Postfächern

$allmailboxes = Get-Mailbox
$allmailboxes |% {$_| New-MailboxExportRequest -FilePath "\\localhost\c$\$($_.Alias).pst" -BadItemLimit 100}

Mailqueue (ausführlich) ausgeben. (Info-Link)

Get-Queue | Format-List

Mailqueue erneut abarbeiten (Info-Link)

Retry-Queue 

Maillog durchsuchen. Datum ist amerikanisch! (Info-Link)

Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM" 
Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM" | Format-List

Nachrichtentracking, wurde Mail an den Connector übermittelt?

Get-MessageTrackingLog -EventId Send -ResultSize Unlimited -Sender [sender@mail] -Recipients [empfänger@mail] | Format-List Time*,MessageSubject,SourceCo*,Send*,Recipient*
  

DotNet 3x unter Windows 10 nachinstallierten

Am einfachsten geht dies in der (Admin) PowerShell mit folgendem Befehl:

dism.exe /online /enable-feature /featurename:NetFX3 /All 

Sollte keine Internetverbindung bestehen und die Windows 10 Installation DVD zur Hand liegen, so kann man aus dem Ordner Sources das Verzeichnis lxs nach c:\temp kopieren und wie folgt installieren:

dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:c:\temp\sxs /LimitAccess