Это похоже на то, что должно быть очень просто, но пока я не могу найти способ сделать это.Powershell v2 - Split Process.Commandline на части
У меня есть ниже сценарий:
$processName = "notepad.exe"
$filter = "name like '%"+$processName+"'"
$result = Get-WmiObject win32_process -Filter $filter
$counter=1
foreach($process in $result)
{
$desc = $process.Description
$commArr = $process.CommandLine -split"()"
$comm = $commArr[0]
$inst = $commArr[2]
write-host "$counter) -APPLICATION: $desc `r`n -LOCATION: $comm `r`n -INSTANCE: $inst"
$counter++
}
}
Это говорит мне, сколько экземпляров данного приложения (в данном случае notepad.exe) работают. Она возвращает:
Application: "notepad.exe"
LOCATION: "C:\Windows\system32\notepad.exe"
Instance: " "
Но Откуда мне просто нужно первую часть "C:\Windows\system32"
Я попытался split-path
:
$commShort = split-path($comm)
, но я получаю сообщение об ошибке: Split-Path : Cannot find drive. A drive with the name '"C' does not exist.
Если я попробую это, вручную добавив местоположение, хотя , он отлично работает: $commShort = split-path("C:\Windows\system32\notepad.exe")
Есть ли какой-нибудь трюк?
Приветствия, первая часть, к сожалению, с той же ошибкой, что и исходная. Однако вторая часть ('Split-Path $ process.Path') работает. – IGGt
Я бегу Powershell v4. Я запускаю код, используя PowerShell ISE на 32-разрядной версии Windows 7. Какую версию Windows & Powershell вы используете? – Ishan
Это, вероятно, объяснит это тогда. Windows 7 64bit и Powershell v2 (у нас есть несколько старых серверов) – IGGt