У меня есть сценарий powershell, который перебирает все службы, перечисленные в разделе HKLM:\Systemn\ControlSet001\services\ поисках ImagePath чтобы увидеть, есть ли в нем пробелы, но нет кавычек.

например

C:\this is\very bad\but people\do it\anyways.exe

Но они могут содержать переключатели / параметры, такие как:

C:\this is\very bad\but people\do it\anyways.exe -foo -bar -ray:JkLmOpQ C:\this is\very bad\but people\do it\anyways.exe /foo /bar /ray:JkLmOpQ

Достаточно просто обернуть вещи без параметров в кавычки,

например

$foo = "`"$bar`""

Тем не менее, я хотел бы обрабатывать вещи, которые могут иметь параметры, например,

"C:\this is\very bad\but people\do it\anyways.exe" -foo -bar -ray:JkLmOpQ
"C:\this is\very bad\but people\do it\anyways.exe" /foo /bar /ray:JkLmOpQ

Рассматривая использование RegEx или разбиение строки на / или - но у них могут быть крайние случаи, которые я пропускаю.

1 ответ1

0

Я посмотрел на эту проблему, и кажется, что проблема была в пробелах в Program Files.

Этот сценарий PowerShell я создал, чтобы исследовать.

Clear-Host
$keys = Get-ChildItem HKLM:\System\ControlSet001\services
$items = $keys | Foreach-Object {Get-ItemProperty $_.PsPath }
ForEach ($item in $items) {
If ($item.ImagePath -match " " -and $item.ImagePath -notmatch "`"" -and $item.ImagePath -match "Program Files") {
"{0,-28} {1,-120} " -f $Item.PSChildName, $item.ImagePath 
}
}

[Насколько мне известно, какую проблему вызывает космос, когда я нашел два изображения Nvidia без кавычек на их пути]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .