Ответ:
У меня есть 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.Управление.Автоматизация.PSCustomObject], который имеет много свойств. Мы получаем доступ к одному свойству с удобной точечной нотацией. (Я должен признать, что хотя я могу написать sed непосредственно в сценарий, не тестируя его в CLI, это лучше.) Существует полезный инструмент для исследования объектов, который рекомендован блогером Microsoft technet. К сожалению, для его установки теперь требуется опция -AllowClobber
. (Узнайте больше здесь.) Немного менее удобная [плоская] альтернатива - Get-Member
. (Просто труба выводится на него.)
PowerShell с опытом работы в 1/4 столетия очень странный, но с ним приятно работать. Просто думайте об этом как о сценариях оболочки в более питонической среде, и это не страшно ... за исключением этих обратных слешей.