Netz-Weise Logo

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...

Weiterlesen
Markiert in:
  1888 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...

Weiterlesen
Markiert in:
  1917 Aufrufe

Windows Update Troubleshooting

Jedes Mal, wenn Windows Update einen neuen Suchvorgang startet, protokolliert es alle Schritte. Bis Windows 8 fand das in der Datei WindowsUpdate.log im  %windir% statt, aber unter Windows 10 hat Microsoft diese Datei durch ein Ereignisprotokoll ersetzt. Prinzipiell ist die Idee gut, nur dummerweise loggt der Update-Dienst dort nicht im Klartext, so dass man mit den Daten nichts anfangen kann. Stattdessen muß man sich mit Powershell aus diesem Log wieder eine Log-Datei erzeugen lassen. Dies geschieht mit dem Cmdlet Get-WindowsUpdatelog. Gibt man zusätlich den Parameter -LogPath an, kann man festlegen, wohin das Log-File geschrieben wird. Standardmäßig wird die Datei auf dem Desktop des Users abgelegt.

Get-WindowsUpdateLog -LogPath c:\Temp\WindowsUpdate.log

Achten Sie darauf, den Dateinamen mit anzugeben. Das Cmdlet läuft sonst trotzdem durch, erzeugt aber keine Datei!

Die Datei wird sehr lang und ist nicht so einfach zu analysieren. Zum Glück kommt einem Powershell hier zur Hilfe. Ich habe eine kleine Funktion geschrieben, die mit Hilfe eines regulären Ausdrucks die Daten in Powershell-Objekte umwandelt, so dass die Daten z.B. in einem Gridview weiter analysiert werden können.

Function Show-UpdateLog {
param(
    [Parameter(Mandatory=$true)]
    $LogPath
)

Weiterlesen
Markiert in:
  2580 Aufrufe

Remote Desktop per Powershell Remote aus der Ferne aktivieren

Sie möchten sich auf einen Computer per RDP remote aufschalten, aber RDP ist nicht aktiviert? Kein Problem, solange der Computer per Powershell-Remoting erreichbar ist. RDP ist nämlich über einen einzigen Registry-Eintrag steuerbar. Er heißt fDenyTSConnections und gehört zum Schlüssel Hkey_Local_Machine\System\CurrentControlSet\Control\Terminal Server. Setzen Sie ihn auf 0, so werden RDP-Verbindungen nicht mehr blockiert. Die Einstellung wirkt sofort, ein Neustart ist nicht notwendig, allerdings blockiert die Windows Firewall den Port 3389 dann weiterhin. Es gibt eine Gruppe von Regeln mit dem sprechenden Namen "RemoteDesktop", die Sie aktivieren müssen, um die Ausnahmen für eingehende RDP-Verbindungen inklusive Remote-Unterstützung zu aktivieren. Das geht mit Powershell in zwei Zeilen:

$RdpKey = "Registry::Hkey_Local_Machine\System\CurrentControlSet\Control\Terminal Server"
Set-ItemProperty -Path $RDPKey -Name "fDenyTSConnections" –Value 0
Enable-NetFirewallRule -DisplayGroup "RemoteDesktop"

Ja, Sie haben natürlich Recht, das sind 3 Zeilen, aber nur, um den Code hier ein wenig übersichtlicher darstellen zu können. ;-)

Wenn Sie am betroffenen Rechner sitzen, können Sie das natürlich auch von Hand machen. Sitzen Sie nicht an der betreffenden Maschine, aber Powershell-Remoting ist aktiviert (ab allen Servern ab 2012 Standard), können Sie das aber per Invoke-Command auch aus der Ferne erledigen. Das kann man natürlich auch wieder ein eine Funktion packen und in ein Modul speichern. Als einfache Funktion könnte das so aussehen - auch gleich mit Unterstützung für SSL.

Function Enable-RemoteDesktop
{
param(
  [String]$computername,

Weiterlesen
Markiert in:
  9087 Aufrufe

Kontoinformationen über den angemeldeten Benutzer ausgeben

Sie hätten gerne Informationen über Ihre Benutzerkonto, wie Gruppenmitgliedschaften, SID usw? Wenn Sie Informationen über den gerade angemeldeten Benutzer haben möchten, wie z.B., ob der User als Gastkonto angemeldet ist, den Benutzernamen, die Domäne oder die Gruppenmitgliedschaften, hilft Ihnen die Funktion getcurrent() aus der Klasse [system.security.principal.windowsidentity] weiter.

[system.security.principal.windowsidentity]::getcurrent()

liefert folgende Properties zurück:

Name
----
Actor
AuthenticationType
BootstrapContext
Claims
DeviceClaims
Groups
ImpersonationLevel
IsAnonymous
IsAuthenticated
IsGuest
IsSystem
Label
Name
NameClaimType
Owner
RoleClaimType
Token
User
UserClaims

Eine Variante, die Ihnen entweder den Benutzer oder die Benutzermitgliedschaften zurückliefert, ist das Kommandozeilentool whoami. Mit den Parameter /User erhalten Sie Ihre SID, mit /Groups Ihre Gruppenmitgliedschaften. Alle wichtigen Informationen inklusive der Benutzerrechte spuckt der Parameter /all aus. Mit dem Parameter /Fo können Sie auch die Ausgabe im CSV-Format erzwingen, so dass Sie die Ausgabe mit Powershell direkt in Objekte konvertieren können:

Whoami.exe /groups /fo csv | ConvertFrom-CSV | Out-Gridview

Weiterlesen
  4626 Aufrufe

Mehrfach-Umbenennen mit Powershell, Rename-Item und regulären Ausdrücken

Eine Datei umzubenennen ist mit Powershell mit Hilfe des Cmdlets Rename-Item relativ einfach möglich. Sie müssen nur den Namen der Datei und den neuen Namen angeben:

Rename-Item -Path C:\temp\Test.txt -NewName Produktion.txt

Es gibt aber auch die Möglichkeit, mehrere Dateien in einem Rutsch umzubenennen. Hierfür können Sie die umzubennenden Dateien per Pipeline an Rename-Item weiterleiten und neuen Namen über einen Skriptblock definieren:

Get-ChildItem -Path C:\Skripte\*.ps1 | Rename-Item -NewName { $_.basename + ".txt"  }

In diesem einfachen Beispiel werden alle Dateien mit der Endung .ps1 im Ordner c:\Skripte in .txt umbenannt - $_ ist ein Platzhalter für die einzelnen Dateien, .basename beinhaltet den Dateinamen ohne Dateiendung.

Weiterlesen
Markiert in:
  20182 Aufrufe

Dateien restlos entfernen und Festplatten rückstandslos löschen mit Windows Bordmitteln

Immer wieder liest man den Mythos, dass man eine Festplatte 37 mal überschreiben muß, bevor die Daten vollständig gelöscht sind. In der aktuellen c´t 13/2016 gibt es dazu einen sehr guten Artikel, der die Hintergründe dazu beschreibt. Das Fazit der Artikelserie lautet: Bei alten MFM-Festplatten, bei denen die Datensektoren der Festplatten noch so groß waren wie Pfannkuchen, war eine Datenwiederherstellung mit den enstprechenden Werkzeugen in der Tat noch möglich. Bei aktuellen magnetischen Datenträgern haben sich die Aufzeichnungsverfahren aber maßgeblich verändert, und auch Datenrettungsunternehmen sind mit Ihren Werkzeugen nicht in der Lage, einmal überschriebene Daten wiederherzustellen. Ach das BSI und das amerikanische Pendant NIST geben als Richtlinie inzwischen heraus, dass eine einfache Überschreibung reicht, um Daten rückstandlos zu entfernen.

Kommen wir nun dazu, wie die Datenlöschung am einfachsten auszuführen ist. Windows bietet dazu 2 Bordmittel an.

Zum Löschen von einzelnen Dateien oder Partitionen auf der Festplatte bietet sich das Tool cipher.exe an. Es ist das Tool zur Kommandozeilensteuerung von EFS (Encrypted File System) und bietet den Schalter /w, mit dem man einzelne Dateien, Ordner oder aber auch ganze Partitionen löschen kann. Um den Ordner c:\Temp\geheim zu löschen und zu überschreiben, geben Sie hierfür ein:

Cipher.exe /w c:\Temp\geheim

Die Löschung kann eine Weile dauern, da die Daten in 3 Durchgängen mit 0, dann mit 1 und anschliessend wieder mit 0 überschrieben werden. Um die ganze Partition zu löschen, geben Sie nur Laufwerksbuchstabe: ein:

Weiterlesen
Markiert in:
  9732 Aufrufe