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

Exchange 2013 – Update von CU1 scheitert wegen KB2874216

Ich musste einen Exchange 2013 mit installierten CU1 updaten – bekamm aber folgende Fehlermeldung:

Das Produkt mit dem Code 4934d1ea-be46-48b1-8847-f1af20e892c1 kann nicht entfernt werden. Schwerwiegender Fehler bei der Installation. Fehlercode: 1603. Letzter vom MSI-Paket ausgegebener Fehler: ‚Unable to install because a previous Interim Update for Exchange Server 2013 Cumulative Update 1 has been installed. Please use Add/Remove Programs to uninstall the Interim Update before running this setup again.‘.

Durch den installierten KB2874216 wird das Update blockiert.

Eine Entfernung bzw. Deinstallation des Updates war bei mir nicht erfolgreich bzw. lies es sich einfach nicht entfernen.

Als Workaround habe ich in der Registry den Schlüssel

HKLM\Software\Microsoft\ExchangeServer\V15\Setup\Interim Update

gelöscht.

Danach den Server rebooten – das Setup neu starten – geht 🙂

Quelle: https://anotherexchangeblog.wordpress.com/tag/kb2874216/

Exchange: Bestimmte Anzahl an MoveRequest

Ich hatte den Anwendungsfall, dass ich bei einer Exchange-Migration nur immer eine bestimmte Anzahl von Postfächern umziehen konnte.

Dieses Problem lässt sich wunderbar per Powershell lösen:

$a= get-mailbox -server NameDesExchangeServer | Select-Object name -First 100

foreach ($b in $a) {New-moverequest -Identity $b.name}

Kurze Erklärung: In der ersten Zeile schreibe ich die ersten 100 Zeilen der Ausgabe von get-mailbox in eine Variable.

In der zweiten Zeile übergebe ich den Postfachnamen in ein new-moverequest – und mache dies für jede Zeile.

Und schon hat man – in meinem Fall – 100 MoveRequest 🙂

Natürlich kann man hier noch bei get-mailbox oder new-moverequest noch weitere Parameter und Optionen übergeben

Quelle: TechNet