Ответ:
У меня есть 2 разных инструмента для этого на https://gist.github.com/RichardBronosky/c61465ed897c2f10e9bf16704d1d9af9
Чтобы сделать этот законный SO ответ, я добавлю более простой:
#!/bin/bash
# From: https://gist.github.com/RichardBronosky/c61465ed897c2f10e9bf16704d1d9af9
# This works from both WSL/bash and powershell!
powershell.exe -command "& (Get-ItemProperty 'HKCU:Control Panel\Desktop').{SCRNSAVE.EXE}"
Это позволит получить значение из [страшно им] SCRNSAVE.EXE
имущества из реестра. Это значение просто является полным путем к *.scr
файлу, и поэтому вы можете (и я знаю) сказать PowerShell запустить его как команду.
Примечания / Мнение:
Это довольно лаконичная демонстрация того, как powershell возвращает объекты (в комплекте с методами, средствами доступа и т. Д.), А не потоки текста, такие как bash.
Здесь Get-ItemProperty
возвращается объект [типа: System.Management.Automation.PSCustomObject], который имеет много свойств. Мы получаем доступ к одному свойству с удобной точечной нотацией. (Я должен признать, что хотя я могу писать sed непосредственно в сценарий, не тестируя его в CLI, это лучше.) Существует полезный инструмент для исследования объектов, рекомендованный блогером Microsoft Technet . К сожалению, установить его теперь требует в -AllowClobber
опции. ( Узнайте больше здесь .) Немного менее удобная [плоская] альтернатива Get-Member
. (Просто труба выводится на него.)
PowerShell с опытом работы в 1/4 столетия очень странный, но с ним приятно работать. Просто думайте об этом как о сценариях оболочки в более питонической среде, и это не страшно ... за исключением этих обратных слешей.