Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.

TPM für Hyper-V VM mit Powershell aktivieren

Virtuelle Maschinen mit Hyper-V anzulegen ist in Powershell mit den beiden Cmdlets New-VM und Set-VM relativ einfach, da die Cmdlets alle wesentlichen Funktionen einer virtuellen Maschine mit den Standard-Parametern abbilden. Das Aktivieren des virtuellen TPMs gestaltet sich aber überraschend schwierig. Während man im Hyper-V Manager nur ein H...
Markiert in:
Weiterlesen
462 Aufrufe

Den Datenträgertyp (SSD,HDD) per Powershell und WMI/CIM bestimmen

Um in einem Skript zwischen HDDs und SSDs zu unterscheiden, kann man seit Windows 8 auf das Cmdlet Get-PhysicalDisk zurückgreifen. Es liefert ein MSFT_PhysicalDisk-Objekt zurück, das unter https://docs.microsoft.com/en-us/previous-versions/windows/desktop/stormgmt/msft-physicaldisk beschrieben ist. Die Eigenschaft MediaType enthält den Datenträgertyp (HDD,SSD).

Das Cmdlet Get-Physicaldisk ist als CDXML-basiertes Cmdlet implementiert und fragt im Prinzip einfach nur die Klasse MSFT_PhyscialDisk ab. Das kann man auch direkt erledigen. 

Get-CimInstance MSFT_Physicaldisk -Namespace root\Microsoft\Windows\Storage

Wichtig - Die Klasse MSFT_PhysicalDisk befindet sich nicht im Standard-Namespace CimV2, daher ist es wichtig, den Namespace mit anzugeben. 

Warum sollte man die Klasse direkt abfragen? Z.B. wenn einem die Storage-Cmdlets nicht zur Verfügung stehen, oder wenn man nicht sicher weiß, ob die Cmdlets verfügbar sind. Außerdem kann man mit Get-CimClass die Abfrage auch direkt einschränken, was schneller geht als über Get-PhysicalDisk und Where-Object zu filtern:

Weiterlesen
3790 Aufrufe

Als Benutzer das Active Directory nach Drucker und Objekten durchsuchen

Wussten Sie, dass die Standardberechtigungen des AD jedem Benutzer den Zugriff auf alle Benutzer-, Gruppen- und Computerobjekte erlauben? Natürlich ist dieser Zugriff eingeschränkt - sensible Informationen sind weder einseh- noch änderbar. Nichtsdestotrotz kann diese Funktion sehr hilfreich sein, da es einem Benutzer so z.B. ermöglicht wird, nach e...
Markiert in:
Weiterlesen
456 Aufrufe

Die Fenster-Rahmen bei Windows wieder einblenden

Seit Windows Server 2019 und Windows 10 werden Fensterrahmen nicht mehr angezeigt. Diese Designentscheidung finde ich schon aus ästhetischen Gründen fragwürdig, aus ergonomischer Sicht ist es jedenfalls völlig daneben, da man, wenn man mehrere Fenster übereinander legt, die Fenster kaum noch zu unterscheiden sind. Glücklicherweise gibt es...
Weiterlesen
944 Aufrufe

Allgemeines zur Adobe MAX

Der gigantische Wurf bleibt aus, was nicht verwunderlich ist, gibt es doch seit der Cloud antizyklisch und häufiger kleinere und größere Updates.Insgesamt verfolgt Adobe den Plan serverbasierte Dienste stärker in den Focus zu rücken:Weg vom Desktop, rein in die Cloud.Klar, das das nicht einfach ist, technisch, wie auch in dem Köpfen der Benutzer, s...
Markiert in:
Weiterlesen
213 Aufrufe

Powershell parallelisieren mit Runspaces

parallel Powershell Multithreading
Dieser Blogpost ist eine kurze Zusammenfassung von Powershell Runspaces am Beispiel eines Massenping. Ich fasse das Thema hier zusammen, weil Runspaces immer sehr mächtig und komplziert wirken, obwohl sie tatsächlich mit wenigen Zeilen Text beschrieben werden können. Das Problem: Ein Skript soll anhand einer bekannten Adresse (des Routers) herausfi...
Markiert in:
Weiterlesen
5074 Aufrufe

Mails (nicht nur in Outlook) automatisch sortieren mit der Plus-Adressierung in Exchange Online

Seit Mai 2022 hat Exchange eine neue Funktion erhalten, die sich wunderbar verwenden lässt, um eingehende Newsletter-mails und ähnliches automatisch zu sortieren. Diese Funktion nennt sich Plus-Adressierung, weil man in die eigene Email-Adresse einfach ein + gefolgt von einem selbstgewählten Text erweitern kann, die dann vom Exchange igno...
Weiterlesen
384 Aufrufe

Emails in Exchange per Powershell suchen und löschen

Manchmal steht man vor der Aufgabe, das einzelne mails aus einem Benutzerpostfach gelöscht werden sollen, z.B. weil Sie Schadcode enthalten, oder auch, weil das Postfach geleert werden soll. Mit Hilfe der Exchange-eigenen Cmdlet Search-Mailbox geht das sehr einfach.

Starten Sie die Exchange Management-Shell. Eine Anleitung der Installation der Shell finden Sie im Artikel "Exchange Cmdlet in Powershell nutzen". Achten Sie darauf, dass Sie das Cmdlet "Search-Mailbox" nicht sehen, solange Sie nicht Mitglieder der Rolle "Mailbox Import Export" sind - das gilt sogar dann, wenn Sie als Organisationsadministrator angemeldet sind. Alternativ können Sie das Problem auch umgehen, indem Sie die Exchange-Snapins direkt importieren. 

Anschliessend rufen Sie das Cmdlet Search-Mailbox auf. Der Parameter Identity gibt dabei an, welche Mailbox(en) Sie suchen. Alternativ können Sie die Mailboxen auch per Pipeline an Search-Mailbox übergeben. Mit Hilfe des Parameters -Searchquery geben Sie an, welche Nachrichten gesucht werden. Das Cmdlet verwendet für die Definition der Suchabfragen die KQL (Keyword Query Language). Ein einfaches Beispiel für eine Suche nach dem Begriff "Verrat" in allen mails aller mailboxen sieht so aus: 

Get-Mailbox | Search-Mailbox -SearchQuery 'Verrat' -TargetMailbox 'Administrator' -TargetFolder 'NSA' 

 

Weiterlesen
29282 Aufrufe

Eine MAC-Adresse unter Windows oder Windows PE auslesen und vereinheitlichen

Heute stand ich vor der Aufgabe, eine MAC-Adresse einzulesen. Das Einlesen der MAC-Adresse gestaltet sich dabei einfach. Unter Windows am einfachsten geht das über Get-Netadapter:

PS > Get-NetAdapter

Name         InterfaceDescription                ifIndex Status   MacAddress         LinkSpeed
----         --------------------                ------- ------   ----------         ---------
Internal     Microsoft Hyper-V Network Adapter        10 Up       00-15-5D-64-98-00  10 Gbps

Unter Windows PE steht das Cmdlet leider nicht zur Verfügung, da es zu den CDXML-Datei basierten Cmdlets gehört. Glücklicherweise kann man sich behelfen, indem man einfach auf Get-WMIObject zurückgreift:

PS > Get-WmiObject -Class win32_networkadapter

Weiterlesen
3982 Aufrufe

Wenn die ISE nach dem Crash die geöffneten Skripte nicht mehr öffnet...

Die ISE, wenn auch nicht mehr der von Microsoft favorisierte Powershell-Editor, ist immer noch bei vielen Skriptern sehr beliebt, und das hat gute Gründe. Die ISE stellt z.B. die zuletzt geöffneten Skripte (und auch die nicht gespeicherten) wieder her, wenn es mal zu einem Absturz kommt oder die ISE vor dem Herunterfahren nicht ordentlich geschloss...
Markiert in:
Weiterlesen
614 Aufrufe

Auflösen von SID zu Benutzername - und zurück

Einen Security-Identifier geht in Powershell mit Hilfe des .NET-Frameworks relativ problemlos. Verwenden Sie dazu folgenden Code.  $sid = 'S-1-5-21-1645259789-2415107319-3639759105-1314'$SidIdentifier = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList $SID$SidIdentifier.Translate([System.Security.Principal.NTAcco...
Weiterlesen
987 Aufrufe

Den Datentyp eines Registry-Eintrags mit Powershell ermitteln.

Die Registry ist technisch gesehen eigentliche ein Datenbank für Schlüssel-Wertepaare. Im Gegensatz zu Linux, wo jedes Programm sein eigene Konfiguration in einer Textdatei verwaltet, hat Microsoft die Konfigurationsverwaltung mit der Registry zentralisiert. Eine Besonderheit der Registry ist die Tatsache, dass jeder verwaltete Wert einen Date...
Markiert in:
Weiterlesen
769 Aufrufe

Die Microsoft Data Protection API und Powershell

Sicher wie ein Safe Microsoft DPAPI sichert Ihre Anmeldeinformationen
Die Microsoft Data Protection API ist ein Feature, das Microsoft mit Windows 2000 eingeführt hat. Der Sinn der DPAPI ist es, Daten für den Benutzer transparent verschlüsselt ablegen zu können. Transparent bedeutet, dass der Benutzer von der Verschlüsselung nichts mitbekommt. Das passiert mit Hilfe der Anmeldeinformationen des Benutzers. Hier m...
Weiterlesen
3549 Aufrufe

Wim-Files größer 4GB für Bootsticks aufteilen

Um einen Windows-Rechner per USB-Stick zu installieren, benötigt man prinzipiell nur das Media Creation Tool von Microsoft, das allerdings nur einen Installer für Windows 10 Home erstellt. Theoretisch kann man einfach mit dem Media Creation Tool den Bootstick erstellen und anschließend die Datei Install-Wim, in der sich die Installationsdateien bef...
Markiert in:
Weiterlesen
1123 Aufrufe

BBB Greenlight Userkennwort per SSH ändern

Mit dem Greenlight-Frontend für BigBlueButton kann man Benutzer über das administrative Frontend verwalten. Es geht aber auch direkt in der Konsole über SSH im docker-Container. # Einen Benutzer anlegendocker exec greenlight-v2 bundle exec rake user:create["name","email","password","admin"]# ein Admin-Konto anlegendocker exec greenlight-v2 bun...
Weiterlesen
477 Aufrufe

Manuelle Upgrade von Windows schlägt mit Fehler "Windows 10 kann nicht auf einem USB-Stick installiert werden" fehl

Wenn Sie ein manuelle Upgrade (neues Feature-Release) von Windows 10 z.B. von einer CD ausführen, wird Ihnen die Fehlermeldung "Windows 10 kann nicht auf einem USB-Stick installiert werden" oder "You Can't Install Windows 10 on a USB Drive" ausgegeben. Es gibt offenbar mehr Ursachen für dieses Problem, aber die einzige, die mir bisher (mehrfach) un...
Markiert in:
Weiterlesen
1576 Aufrufe

Wenn das Windows 10 Startmenü mal wieder hakt

Das Windows 10 Startmenü - ein Leiden ohne Ende. Auch mein Startmenü hat sich letzte Woche mal wieder zickig angestellt und hat jede Suche verweigert. Das ist äußert ärgerlich, da man ohne Suche einfach komplett aufgeschmissen ist - man hat dann die klassische Nadel im Heuhaufen. Das Problem lässt sich häuft auf den Windows-Suchdienst zurückführen....
Weiterlesen
1358 Aufrufe

Die Startzeit / Reboot des Servers herausfinden

Update, 29.09.2020: Ein fleißiger Kommentator hat mir folgendes Code hinterlassen, der ab Powershell 5 besser funktioniert:

Get-Computerinfo | select OsLastBootUpTime

----

Jefrey Snover hat gerade ein Modul in der Powershell Gallery gepostet, das die letzte Reboot-Zeit aus dem Eventlog ausliest: https://www.powershellgallery.com/packages/get-lastreboot/0.1.1/DisplayScript. Dabei fiel mir ein, dass es doch auch noch dieses tolle Tool Systeminfo gibt, dass an der Kommandozeile alle möglichen Systeminformationen ausgibt - auch die Systemstartzeit. Das großartige an diesem Tool ist aber, dass es die Ausgabe auch ins csv-Format umwandeln kann, indem man den Parameter -FO aufruft. Die gesamten Informationen werden dann ins csv-Format umgewandelt, mit dem Powershell wiederum ganz hervorragend umgehen kann. Und so kann man dann ganz hervorragend die Daten von systeminfo direkt in Powershell weiterverarbeiten: 

systeminfo /FO csv | convertfrom-csv

Weiterlesen
13760 Aufrufe

Kennwörter sicher verwalten mit Keepass und Yubikey (MFA)

Dass ein Kennwort ein generell unsichere Sache ist, haben inzwischen sogar Unternehmen wie Microsoft verstanden. Das grundsätzliche Problem von Kennwörtern ist, dass sie meist unsicher sind, oder nicht leicht zu merken. Das ist vor allem deshalb problematisch, da heute jede Website gerne eine Benutzerkonto anlegen möchte. Die Wiederverwendung von K...
Markiert in:
Weiterlesen
26782 Aufrufe

Datenbanken migrieren von mySQL zu SQL-Server

SQL-Server und mySql sind leider SQL-seitig nicht wirklich kompatibel. So gibt es zwar die Möglichkeit, eine Datenbank in mySQL als Script zu exportieren, aber leider kann man das Script auf dem SQL-Server nicht mehr für den Import benutzen. Der beste Weg für den Import führt daher über den SQL Server Migration Wizard. Der Migration Wizard steht für verschiedene Datenbanken zur Verfügung und hilft z.B. auch bei der Migration von Access-Datenbanken zu SQL-Server. Da das Tool recht komplex ist, möchte ich hier nur kurz zeigen, wie man eine einfach Migration durchführt, ohne auf die schmutzigen kleinen Details des Tools eingehen zu wollen. Ich verwende hierzu die derzeit aktuelle Version 6.0.1, 6.1 (für SQL-Server 2016) ist derzeit in der Beta-Phase.

Sie benötigen auf dem Rechner, auf dem Sie den SSMA einrichten wollen, zuerst einmal einen mySQL-ODBC-Treiber. Haben Sie die mySQL-Datenbank unter Windows auf dem gleichen Rechner installiert, dann müssen Sie nichts weiter machen, denn mySQL installiert den passenden ODBC-Treiber gleich mit. Ansonsten laden Sie den Treiber einfach bei mysql.com herunter. Nutzen Sie den 64-Bit Treiber, der SSMA wird nämlich auch in einer 64-Bit-Version installiert. Eine Konto für die Authentifizierung ist übrigens nicht notwendig, klicken Sie einfach auf den Link "No thanks, just start my download", wenn Sie nach Ihrem Login gefragt werden. Anschliessend installieren Sie den SSMA.

Wenn Sie den Migration Assistenten zum ersten Mal starten, müssen Sie ein Migrationsprojekt erstellen. Wählen Sie hierfür im Menü File "New Project" aus. Wichtig ist, dass Sie im folgenden Fenster das Migrationsziel auswählen. Standardmässig ist hier Azure angegeben. Leider können Sie das Ziel im Projekt selber dann nicht mehr ändern. Das kann ziemlich verwirrend sein!

Nun müssen Sie eine Verbindung zum Quell- und zum Zielsystem herstellen. Wählen Sie hierfür in der Toolbar zuerst "Connect to MySql". Wählen Sie im Verbindungsfenster den Provider aus - dies ist der ODBC-Treiber, den Sie installiert haben. Ist hier kein Treiber sichtbar, obwohl Sie einen Treiber installiert haben, dann prüfen Sie, ob Sie den Treiber und SSMA beide in der gleichen Version (32-Bit / 64-Bit) installiert bzw. gestartet haben. Außerdem benötigen Sie den Namen des Quellservers, den mySQL-Port (standardmässig 3306), sowie ein Konto mit Leserechten auf dem mySQL-System. 

Nun verbinden Sie sich mit dem SQL-Server. 

Markiert in:
Weiterlesen
5988 Aufrufe
Nach oben