PowerShell – die besten Beiträge

Komplett-Formatierung bei interner SSD. Wie?

Schönen Nachmittag! :)

Ich würde gerne meine interne SSD, eine WD_Black SN850X NVMe SSD, formattieren, am Besten vollständig, da ich mir eine neue gekauft habe, und die vorherige verkaufen möchte. Somit wäre es auch hilfreich, wenn ich ebenfalls Windows komplett runterlöschen könnte. Also ungefär in einen ähnlichen Zustand versetzen, wie ich sie gekauft habe.

Was ich bereits probiert habe:

Die WD Dashboard Software, angeblich zum vollständigen formattieren von Western Digital Drives, hat überhaupt nichts gebracht, da weder das Windows Boot Menu, noch mein UEFI von meinem durch das WD Dashboard formattierte USB Stick booten konnte. Das führte nur zu Fehlermeldungen ("...kann nicht verwendet werden") und Skips durch das WinBoot Menu.

Genauso wenig sinnvoll ist mit Sicherheit die Methode über die PowerShell mit Befehlen wie "Select Drive 0", "Clear all" (soweit war ich schon bis zu "Clear all"), was natürlich nicht funktionieren wird, wenn die Hauptfestplatte in Verwendung ist.

Daher würde ich gerne eine Möglichkeit zur (am Besten) vollständigen Formattierung der internen Haupt-SSD wissen, da natürlich das "Zurücksetzen nur im Windows Boot Menu" für einen Verkauf der Festplatte deutlich unzureichend wäre (aufgrund wohl der "overprovisioned blocks" und "Disk Mappings, die wohl dadurch nicht angetastet werden).

Vielen Grüße und schon mal vielen Dank

Z0NNEBL0EM

PS:

UEFI (von Insyde) des Laptops hat keine Funktion zum Formattieren der Festplatte

Computer, Datenschutz, Software, Windows, löschen, entfernen, Sicherheit, Hardware, Festplatte, Daten, Speicher, formatieren, zurücksetzen, Privatsphäre, BIOS, SSD, Verkauf, WD, western-digital, PowerShell, Solid-State-Drive, Windows 10, UEFI, Laptop

Powershell Error aber wo?

Ich hab ein Python error, suche seit hundert Jahren, wo der Fehler sein könnte, ich versteh nichts mehr, nach fast 36 Stunden Programmieren.

Spoofing...
Fehler: In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:17 Zeichen:13
+     } catch {
+             ~
Die schlieáende "}" fehlt im Anweisungsblock oder der Typdefinition.
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:8 Zeichen:25
+ function Set-MacAddress {
+                         ~
Die schlieáende "}" fehlt im Anweisungsblock oder der Typdefinition.
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:62 Zeichen:151
+ ... lÇôschen, MAC-Adresse ÇÏndern, neue UUID generieren)? (y/n)") -eq "y" ...
+                                                                 ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:62 Zeichen:160
+ ... schen, MAC-Adresse ÇÏndern, neue UUID generieren)? (y/n)") -eq "y") {
+                                                                       ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:79 Zeichen:3
+ } else {
+   ~~~~
Unerwartetes Token "else" in Ausdruck oder Anweisung.
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:83 Zeichen:37
+ Write-Host "Press any key to exit..."
+                                     ~
Die Zeichenfolge hat kein Abschlusszeichen: ".
In C:\Users\Marcel\Documents\programmieren\aimware\spoofer\spoofer.ps1:79 Zeichen:8
+ } else {
+        ~
Die schlieáende "}" fehlt im Anweisungsblock oder der Typdefinition.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingEndCurlyBrace



Script:

function Generate-RandomMacAddress {
    $rand = New-Object Random
    $macBytes = @(0..5 | ForEach-Object { $rand.Next(256) })
    $macBytes[0] = ($macBytes[0] -bor 2) -band 254
    return -join ($macBytes | ForEach-Object { "{0:X2}" -f $_ }) -replace '(.{2})', '$1-' | ForEach-Object { $_.TrimEnd('-') }
}


function Set-MacAddress {
    param (
        [string]$adapterName,
        [string]$macAddress
    )


    try {
        Get-NetAdapter -Name $adapterName | Set-NetAdapter -MacAddress $macAddress -Confirm:$false
        Write-Host "MAC-Adresse von $adapterName geändert auf $macAddress"
    } catch {
        Write-Host "Fehler beim Ändern der MAC-Adresse: $_"
    }
}


function Remove-RegistryKeys {
    $registryPath = "HKLM:\SOFTWARE"
    $epicGamesKeys = Get-ChildItem -Path $registryPath -Recurse | Where-Object { $_.Name -like "*Fortnite*" -or $_.Name -like "*Epic Games*" }
    foreach ($key in $epicGamesKeys) {
        try {
            Remove-Item -Path $key.PSPath -Recurse -Force
            Write-Host "Registry-Schlüssel gelöscht: $($key.PSPath)"
        } catch {
            Write-Host "Fehler beim Löschen des Schlüssels $($key.PSPath): $_"
        }
    }
}


function Remove-GameFolders {
    $fortnitePath = "C:\Program Files\Epic Games\Fortnite"
    $epicGamesPath = "C:\Program Files\Epic Games"


    if (Test-Path $fortnitePath) {
        Remove-Item -Path $fortnitePath -Recurse -Force
        Write-Host "Fortnite gelöscht: $fortnitePath"
    } else {
        Write-Host "Fortnite nicht gefunden: $fortnitePath"
    }


    if (Test-Path $epicGamesPath) {
        Remove-Item -Path $epicGamesPath -Recurse -Force
        Write-Host "Epic Games gelöscht: $epicGamesPath"
    } else {
        Write-Host "Epic Games nicht gefunden: $epicGamesPath"
    }
}


function Get-MainboardUUID {
    return (Get-WmiObject Win32_ComputerSystemProduct).UUID
}


function Generate-NewUUID {
    return [Guid]::NewGuid().ToString()
}


if ((Read-Host "Möchten Sie alle Änderungen vornehmen (Registry löschen, Spiele-Ordner löschen, MAC-Adresse ändern, neue UUID generieren)? (y/n)") -eq "y") {
    Remove-RegistryKeys
    Remove-GameFolders


    if ((Get-NetAdapter | Where-Object { $_.Status -eq "Up" }).Count -gt 0) {
        $networkAdapterName = "Ethernet"
        $newMacAddress = Generate-RandomMacAddress
        Set-MacAddress -adapterName $networkAdapterName -macAddress $newMacAddress
    } else {
        Write-Host "Kein aktiver Netzwerkadapter gefunden."
    }


    $mainboardUUID = Get-MainboardUUID
    Write-Host "Aktuelle Mainboard UUID: $mainboardUUID"


    $newMainboardUUID = Generate-NewUUID
    Write-Host "Neue zufällige Mainboard UUID: $newMainboardUUID"
} else {
    Write-Host "Änderungen übersprungen."
}


Write-Host "Press any key to exit..."
[System.Console]::ReadKey() | Out-Null

abgesehen davon das die Powershell sich nach dem Start direkt schließt.

Wer weiß, wo das Problem ist, wäre Top.


Script, PowerShell

Bash Script um DNS umzustellen?

Habe einmal ein Bash Script und eine .Desktop Verknüpfungen auf meinem Arch KDE und wollte bei Doppelklick auf die Verknüpfungen zb Updaten oder DNS auf 8.8.8.8 oderr Automatisch Umstellen.

(Ich kann auch via KDE Connect das ganze Starten und ohne EIngabe abschließen mit sudo pacman -Syu --noconfirm && yay -Syu --noconfirm)

Aber bei toggle_dns funktioniert das leider nicht mit dem gelieferten Code von ChatGPT (siehe Unten) und ich kann garkein Bash, nur "normale" programmiersprachen wie JavaScript oder PHP. Mit Python würde ich es vielleicht hinkriegen aber das ist doch viel aufwendiger jetzt die IDE erneut zu installieren als mit Bash.

Wenn es das gibt wollte ich eine KDE eigene Benachrichtigung in welchen Modus es jetzt gewechselt ist zb : DNS auf Automatisch umgestellt oder DNS auf 8.8.8.8 Umgestellt statt ein Terminal was ich dann noch per hand schließen muss.
Kann mir jemand weiterhelfen den Code zu reparieren ?

toggle_dns.sh :

#!/bin/bash

# Datei und Schnittstelle für die DNS-Konfiguration
RESOLV_CONF="/etc/resolv.conf"
INTERFACE="Netzwerkschnittstelle_von_euch"

# Funktion zum Setzen des DNS-Servers auf 8.8.8.8
set_dns() {
  echo -e "nameserver 8.8.8.8\noptions edns0" | sudo tee $RESOLV_CONF > /dev/null
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf 8.8.8.8 gesetzt."
}

# Funktion zum Zurücksetzen des DNS-Servers auf automatisch
reset_dns() {
  sudo rm -f $RESOLV_CONF
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf automatisch gesetzt."
}

# Funktion zum Senden einer KDE-Benachrichtigung
notify() {
  message=$1
  kdialog --passivepopup "$message" 5
}

# Überprüfen, ob der DNS-Server bereits auf 8.8.8.8 gesetzt ist
if grep -q "8.8.8.8" $RESOLV_CONF; then
  echo "DNS ist derzeit auf 8.8.8.8 gesetzt. Umschalten auf automatisch."
  reset_dns
else
  echo "DNS ist derzeit automatisch konfiguriert. Umschalten auf 8.8.8.8."
  set_dns
fi

Bild zum Beitrag
PC, Server, Computer, Internet, Windows, WLAN, Technik, Linux, IT, programmieren, Java, JavaScript, Ubuntu, Cplusplus, Bash, C Sharp, DNS, Gnome, Informatik, KDE, Programmiersprache, Python, Script, Shell, Arch Linux, Rust, Debian, PowerShell, KDE Plasma, node

Funktionierender regulärer Ausdruck (CMD) um aus einer Textdatei bestimmte Zeilen mit " zu entfernen?

Eigentlich könnte man ja meinen, dass dieses Problem recht leicht zu lösen sein müsste. 

Aber aus irgendwelchen Gründen ist es das nicht, da " irgendwie für alles einen Sonderstatus hat. 

Also was ich gerne wissen würde: 

 Wie bzw. mit welchem regulären Ausdruck kann man (z.b mit einem Grepbefehl?) alle Zeilen suchen, die mit einem " anfangen ohne, dass dies zu unerwarteten Verhalten führt und z.b der Pfad nicht mehr gefunden wird bzw. keine Ausgabedatei erzeugt wird?  

 Ich hab es jetzt bereits mit dutzenden verschiedensten Varianten versucht: grep '^"' grep '^\"' grep -E '^\"' grep '^\".*' 

und noch X weiteren Variationen, aber entweder werden einfach nur alle Zeilen ausgegeben, die irgendwo im Text ein " enthalten oder es gibt Probleme mit der Erzeugung der Ausgabedatei.

Wichtig wäre in diesem Fall jedoch, dass nur der Anfang (erste Charakter) einer Zeile überprüft bzw. gematched werden soll. Scheinbar soll dies bei Grep ja mit ^ möglich sein und ein Escapen der " mit \. Funktioniert aber alles nicht!

GPT hab ich auch schon gefragt, aber der Bot ist mit der Frage komplett überfordert und gibt nur hanebüchenen Mist aus, der entweder nicht funktioniert oder sehr langsam ist (z.b Ansätze mit Powershell)

Also bevor ich jetzt noch meinen kompletten PC / CPU zu Schrott fahre: Gibt es eine effektive und schnelle Möglichkeit wie man diese Operation aus einer Textdatei alle Zeilen ohne " am Anfang = delete (möglichst mit verfügbaren Onboardmitteln) ausführen kann und falls ja wie?  

Im Idealfall sollten die Zeilen, die nicht gematched werden auch einfach direkt aus der Datei herausgelöscht werden können, anstatt jedesmal den kompletten Inhalt zu kopieren.

Irgendein Tipp?

PC, IT, programmieren, Batch, Batchprogrammierung, cmd, Code, Programmiersprache, Textbearbeitung, PowerShell, Regulärer Ausdruck, Windows 10, CMD Befehl

Meistgelesene Beiträge zum Thema PowerShell