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.

Benutzerzugehörigkeiten schnell ermitteln

Um auf die Schnelle heraus zu finden zu welchen Nutzergruppen ein Benutzer gehört, kann folgender „net„-Befehl in der DOS-Box ausgeführt werden:

net user /domain {Benutzername}

Im Anschluß bekommt man eine sehr lange Liste mit nützlichen Informationen und natürlich auch die Gruppennamen.

Weiterhin kann man mit dem „find“-Befehl die Suche ein wenig eingrenzen:

net user /DOMAIN {Benutzer} | find /I "lw-r"
if not errorlevel 1 echo r: ...

Remote Benutzer abmelden

Um einen RDP Benutzer auf einem Server/Client abzumelden kann wie folgt vorgegangen werden.

Zuerst muss man die ID ermitteln die der Nutzer auf dem Server verwendet. Dies klappt mit folgendem Befehl in der zuvor geöffneten DOS-Box (mit Admin Rechten):

qwinsta.exe /Server:<servername>

Anschließend kann man die ID neben den Benutzer sehen und mit dem Befehl „Logoff“ den Nutzer aus der Session abmelden. 

logoff 2 /server:<servername>

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

Merker: Apps entfernen mit Powershell

Am einfachsten kann man unter Windows 10 alle Apps (im Benutzerkontext) mit der Powershell entfernen. Dazu bedarf es nur den einen Befehl:

Get-AppxPackage * | Remove-AppxPackage

Möchte man alle Pakete wieder installieren, so geht das mit folgenden Powershell Befehl:

Get-AppxPackage | foreach {Add-AppxPackage -register „$($_.InstallLocation)\appxmanifest.xml“ -DisableDevelopmentMod} 

Windows Server DHCP Einstellungen sichern

Wer noch einen alten Windows 2003 Server sein eigen nennt und dessen DHCP Einstellungen sichern will, der kann wie folgt vorgehen:

Zuerst öffnen wir eine DOS-Box und geben folgende Befehle ein:

c:
cd \temp
netsh
dhcp
server
export dhcp-config all

Dieser Vorgang dauert ein paar Sekunden/Minuten. Anschliessend befinden sie die Einstellungen in der Datei unter c:\temp\dhcp-config . Importieren läuft dann über den fast gleichen Weg. Anstatt export wird import mit selbigen Parametern verwendet.

ACHTUNG: Vor dem Importieren müssen die DHCP Einstellungen auf dem Zielserver entfernt sein. Ansonsten kommt es zu einer Fehlermeldung.