Exchange: Benutzern aus AD-Gruppe Mailbox erstellen

Wenn man Benutzern aus einer AD-Gruppe z.B. Mailboxen erstellen will, geh das super einfach:

Get-ADGroupMember -identity "AD-Gruppe" -Recursive | foreach { get-mailbox -identity $_.samaccountname}

Fertig 🙂

Geht natürlich auch mit z.B. Berechtigungen:

Get-ADGroupMember -identity "AD-Gruppe" -Recursive | foreach { Add-MailboxPermission info -User $_.samaccountname -AccessRights FullAccess -InheritanceType all }

🙂

Windows Server 2016/2019: WebDAV-Client

Wenn man auf einem Windows Server 2016 oder 2019 auf eine WebDAV-Freigabe zugreifen will, muss man ein Feature nachinstallieren das in der Standardinstallation nicht aktiviert ist.

Dazu am besten eine Powershell als Admin starten und folgendes eingeben:

Install-WindowsFeature WebDAV-Redirector –Restart

Jetzt wird das Feature installiert und der Server neu gestartet.

Nach dem Neustart ist ein Zugriff auf die WebDAV-Freigabe (z.B. Nextcloud) möglich

Windows PowerShell: Installation von NuGet schlägt fehl

Wenn man auf einem Windows-Server – in meinem Fall ein Windows Server 2016 – den NuGet Paketmanager nachinstallieren will – z.B. um die Azure PowerShell-Module zu installieren – schlägt dies seit geraumer Zeit (Seit April 2020) fehl:

Die Fehlermeldung von Install-PackageProvider -Name NuGet lautet:

Install-PackageProvider : Für die angegebenen Suchkriterien für Anbieter „NuGet“ wurde keine Übereinstimmung gefunden.
Der Paketanbieter erfordert das PackageManagement- und Provider-Tag. Überprüfen Sie, ob das angegebene Paket über die
Tags verfügt.

Der Grund ist vermutlich ein „Upgrade“ des Azureedges, der den Lookup-Provider stellt (onegetcdn.azureedge.net/providers). Der Endpunkt lässt seit etwa April 2020 keine TLS1.0 und TLS1.1 Verbindungen mehr zu und wurde auf „TLS1.2 min“ konfiguriert. Die PowerShell (< 14393.3474) spricht per Default aber nur TLS1.1.

Lösung

Mit folgendem Befehl stellt man die PowerShell auf TLS 1.2 um:

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

Danach funktioniert die Installation:

Quelle: https://www.zueschen.eu/

Hyper-V: Nested Virtualization aktivieren

Will man auf einem Hyper-V-Host ein VM mit aktivierter Virtualisierung – z.B. einen Server mit der Hyper-V-Rolle – installieren, muss man die VM erstellen und dann das Nested Virtualization-Feature für die VM mit folgenden Befehlen per Powershell aktivieren:

get-vm VMNAME | Set-VMProcessor -ExposeVirtualizationExtensions $true
get-vm VMNAME | Set-VMNetworkAdapter -MacAddressSpoofing On

Hier als Beispiel mit der VM mit dem dem Namen 55_HyperV:

get-vm 55_HyperV | Set-VMProcessor -ExposeVirtualizationExtensions $true
get-vm 55_HyperV | Set-VMNetworkAdapter -MacAddressSpoofing On

Danach lässt sich – in dem Fall HyperV – der Hypervisor installieren/aktivieren

Powershell: Base64-Decodierung und Encodierung

Man muss ja öfters mal Base64-codierte Strings decodieren oder eben Zeichenketten in Base64-Strings encodieren.

Dazu kann man unter Windows entweder Online-Dienste wie base64decode.org verwenden oder relativ einfach die Powershell 🙂

Decodieren

$string = "VGVzdC1TdHJpbmc="
[Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($string))

Codieren

$string = "Test-String"
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($string))

Ziemlich easy 🙂

Windows: NTP-Server abfragen

Ich wollte auf einem Windows-System testen ob ich einen NTP-Server erreiche und ob mir dieser Server auch eine Zeit zurückgibt.

Das kann man ganz einfach per w32tm-Befehl testen:

w32tm.exe /stripchart /computer:ip.addresse.oder.dnsname /dataonly /samples:1

Also z.B. mit IP

w32tm.exe /stripchart /computer:172.17.9.78 /dataonly /samples:1

oder auch per DNS-Namen:

w32tm.exe /stripchart /computer:ptbtime1.ptb.de /dataonly /samples:1

Active Directory: Wert löschen per Powershell

Ich hatte bei einer Migration eines ActiveDirectorys das Problem das bei vielen Usern noch Login-Scripte definiert waren die ich aber nicht mehr verwenden wollte.

Will man von vielen Usern einen Wert im Active Directory löschen geht das einfach über die Powershell 🙂

Hier ein Beispiel um bei allen Usern im AD den ScriptPath zu löschen:

Get-ADUser -filter * | set-aduser -Clear scriptPath

Das kann natürlich über die Filter noch eingeschränkt werden und funktioniert natürlich auch für andere Parameter 🙂

Hier noch ein Beispiel für das Löschen des Profil-Pfads für alle User eine OU:

Get-ADUser -Filter * -SearchBase „OU=TestUser,DC=domain,DC=local“ | Set-ADUser -Clear profilepath