Registry abfragen, Pfad enthält Umlaute, kaufmännisches "und" sowie Leerzeichen
Hallo,
ich möchte per Powershell in der Registry abfragen ob ein Schlüssel existiert.
Dummerweise hat der Pfad dorthin Umlaute, das kaufmännische Und sowie Leerzeichen.
Wie muss ich den Pfad richtig angeben?
Beispiel:
Test-Path HKCU:\Software\Würstchen & Senf\Salz & Pfeffer
Wie muss dies formatiert werden damit die Abfrage ein "True" liefert?
keine Ahnung wie man als Programmierer einer Software auf die Idee kommt solche Pfade zu verwenden. Ich muss nun damit halt umgehen.
Vielen Dank.
ich möchte per Powershell in der Registry abfragen ob ein Schlüssel existiert.
Dummerweise hat der Pfad dorthin Umlaute, das kaufmännische Und sowie Leerzeichen.
Wie muss ich den Pfad richtig angeben?
Beispiel:
Test-Path HKCU:\Software\Würstchen & Senf\Salz & Pfeffer
Wie muss dies formatiert werden damit die Abfrage ein "True" liefert?
keine Ahnung wie man als Programmierer einer Software auf die Idee kommt solche Pfade zu verwenden. Ich muss nun damit halt umgehen.
Vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 61055870154
Url: https://administrator.de/contentid/61055870154
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
12 Kommentare
Neuester Kommentar
Moin
Zusätzlich noch, Du kannst Deinen Beitrag in die Powershell Kategorie packen, die passt ein bisschen besser als "Batch, Shell"
probier mal so in etwa:
Zusätzlich kannst Du statt -Path den -LiteralPath benutzen um ganz sicher zu gehen, dann nimmt er den string genau so auf wie er zwischen den Anführungszeichen steht und achtet nicht auf scherze wie [ ] oder sonstige Zeichen Get-ItemProperty -Path "Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Würstchen & Senf\Salz & Pfeffer"
cu,
ipzipzap
Grüßeipzipzap
Zusätzlich noch, Du kannst Deinen Beitrag in die Powershell Kategorie packen, die passt ein bisschen besser als "Batch, Shell"
Single Quotes drum und zur Sicherheit, wie ipzipzap schon schreibt, -LiteralPath Parameter verwenden
Skript selbst sollte bezüglich Umlaute als UTF-8 mit BOM gespeichert werden.
Sid.
Test-Path -LiteralPath 'HKCU:\Software\Würstchen & Senf\Salz & Pfeffer'
Sid.
Wie immer! Alles in Anführungszeichen stellen!
Test-Path "HKCU:\Software\Würstchen & Senf\Salz & Pfeffer"
#oder
Test-Path 'HKCU:\Software\Würstchen & Senf\Salz & Pfeffer'
Funktioniert bei mir einwandfrei...
mit if:
$result = if(Test-Path -Path "REGISTRY::HKEY_CURRENT_USER\SOFTWARE\Würstchen und Senf") {"IST WAHR!!"} else {"IST FALSCH!"}
$result
IST WAHR!!
Wenn du in Powershell die Registry ansprichst ist es hilfreich das mit dem Provider "REGISTRY::" einzuleiten:
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
https://learn.microsoft.com/de-de/powershell/scripting/samples/working-w ...
jetzt muss ich nur noch rausfinden wie ich die Antwort in eine Variable der Batch bekomme, also dass das "True" oder "False" in %value" landet.
For-Loop ist dein Freund@echo off & setlocal
chcp 1252
for /f "delims=" %%a in ('powershell -EP Bypass -C "Test-Path -LiteralPath 'REGISTRY::HKCU\Software\Würstchen & Senf\Salz & Pfeffer'"') do set "value=%%a"
echo Ergebnis: %value%
Aber wozu hier Powershell in Batch einbauen für etwas was die CMD schon von Haus aus mit
reg query
beherrscht 🙃?@echo off & setlocal
chcp 1252
reg query "HKCU\Software\Würstchen & Senf\Salz & Pfeffer" >nul 2>&1 && (
echo Key ist vorhanden
) || (
echo Key ist nicht vorhanden
)
Zitat von @blacksun:
weil ein Admin über mir gemeint hat dass man regedit.exe und reg.exe usw bei der Ausführung im Userkontext eines Nicht-Admin sperren müsse
Na super und dann die Powershell weiterhin zulassen, wat fürn Pfusch am Bau 😂. Wahrscheinlich wieder mal so ein Admin der noch nie was von Powershell gehört hat.weil ein Admin über mir gemeint hat dass man regedit.exe und reg.exe usw bei der Ausführung im Userkontext eines Nicht-Admin sperren müsse
Powershell kann ja auch in die Registry schreiben.
Kann Powershell eigentlich auch reg-Dateien selbst importieren, ohne regedit oder reg zu benutzen?
Nicht das ich wüsste.Kann Powershell eigentlich auch reg-Dateien selbst importieren, ohne regedit oder reg zu benutzen?
Sonst muss ich meine ganzen reg-Dateien in powershell-Befehle umbauen.
Oder das reg File selbst parsen.Zitat von @DarkZoneSD:
Grüße
Florian
Kann Powershell eigentlich auch reg-Dateien selbst importieren, ohne regedit oder reg zu benutzen?
Du kannst dich gerne mal durch die .Net Registry Functions wursteln und schauen ob es etwas gibt das deinen Vorstellungen entspricht.Grüße
Florian
Wenn du meinst ob es eine eigene Funktion gibt, dann nein. Du kanns aber z.B. das machen:
Start-Process -Filepath "cmd.exe" -Argumentlist "/c REG IMPORT $([CHAR]34)C:\Mein reg-file Pfad$([CHAR]34)"
Zitat von @mayho33:
Wenn du meinst ob es eine eigene Funktion gibt, dann nein. Du kanns aber z.B. das machen:
Wenn du meinst ob es eine eigene Funktion gibt, dann nein. Du kanns aber z.B. das machen:
Start-Process -Filepath "cmd.exe" -Argumentlist "/c REG IMPORT $([CHAR]34)C:\Mein reg-file Pfad$([CHAR]34)"
Wenn reg und regedit gesperrt sind wie er oben ja schon schreibt, bringt das auch nichts die Befehle über die Powershell auf der CMD auszuführen sie sind dort ja auch gesperrt 🙃. Posts vollständig lesen hilft ...
Zitat von @7907292512:
Wenn reg und regedit gesperrt sind wie er oben ja schon schreibt, bringt das auch nichts die Befehle über die Powershell auf der CMD auszuführen sie sind dort ja auch gesperrt 🙃. Posts vollständig lesen hilft ...
Zitat von @mayho33:
Wenn du meinst ob es eine eigene Funktion gibt, dann nein. Du kanns aber z.B. das machen:
Wenn du meinst ob es eine eigene Funktion gibt, dann nein. Du kanns aber z.B. das machen:
Start-Process -Filepath "cmd.exe" -Argumentlist "/c REG IMPORT $([CHAR]34)C:\Mein reg-file Pfad$([CHAR]34)"
Wenn reg und regedit gesperrt sind wie er oben ja schon schreibt, bringt das auch nichts die Befehle über die Powershell auf der CMD auszuführen sie sind dort ja auch gesperrt 🙃. Posts vollständig lesen hilft ...
Ei, ei, ei... Das mit dem sinnerfassenden Lesen... 😅😅
Als ob man reg.exe und regedit sperren müsste für User ohne administrative Rechte 🤦♂️🤦♂️. Ob die Admins denn wissen, dass man dann nur HKCU beschreiben kann?
Dann doch besser die lokalen Admins ausdünnen! Aber was weiß ich schon.
OK! Dann mach das natürluch keinen Sinn, wenn die Reg.exe für User gesperrt ist.
Start-Process -Filepath "cmd.exe" -Argumentlist "/c REG IMPORT $([CHAR]34)C:\Mein reg-file Pfad$([CHAR]34)"
Ich wage aber fast zu behaupten, dass es funktioniert, wenn man die PS als SYSTEM laufen lässt.
#als Administrator in der comspec
Psexec.exe -s powershell.exe -ep bypass -file "hier ist der PS Reg Import hinterlegt.ps1"
Oder so:
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...