Analisando caminhos do ImagePath a partir de parâmetros

0

Eu tenho um script powershell que percorre todos os serviços listados em HKLM:\Systemn\ControlSet001\services\ procurando o ImagePath para ver se ele tem espaços, mas não aspas.

por exemplo,

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

Mas, estes podem conter opções / parâmetros como:

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

É simples o suficiente para encapsular as coisas sem parâmetros entre aspas,

por exemplo.

$foo = "'"$bar'""

No entanto, gostaria de lidar com coisas que podem ter parâmetros corretamente, por exemplo,

"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

Considerando o uso de RegEx ou a divisão da sequência em / ou - , mas esses podem ter casos de borda que estão faltando.

    
por Jaigene Kang 09.02.2013 / 03:26

1 resposta

0

Eu dei uma olhada neste problema e parece que foram espaços nos arquivos de programas que causaram o problema.

Este é um script do PowerShell que criei para investigar.

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 
}
}

[Para minha informação, qual problema o espaço causa quando eu encontrei duas imagens da Nvidia sem aspas ao redor do caminho]

    
por 13.02.2013 / 16:13