Передача переменной, которая содержит путь к Get-ChildItem, не дает результата

#powershell

#powershell

Вопрос:

Я хочу передать переменную path в Get-ChildItem. Но переменная path не выбирает путь

Я попробовал следующее

 [STRING]$global:svcName="RSCDsvc"
$bsaPath=(Get-WmiObject -query "select Pathname from win32_service where name='$svcName'").PathName
write-output $bsaPath
 

Выше приведен путь, по которому установлен продукт

«C:Program ФайлыBMC SoftwareBladeLogicRSCDRSCDsvc.exe »

Я использую ту же переменную $bsaPath, чтобы получить версию продукта, она не выдает мне результат

 PS> [STRING]$global:svcName="RSCDsvc"
PS> $bsaPath=(Get-WmiObject -query "select Pathname from win32_service where name='$svcName'").PathName
PS> write-output $bsaPath
"C:Program FilesBMC SoftwareBladeLogicRSCDRSCDsvc.exe"
PS> $installedVersion=((Get-ChildItem -path $bsaPath -ErrorAction SilentlyContinue).VersionInfo).ProductVersion
PS> write-output $installedVersion
PS>
 

Но я попробую следующее

 PS> $installedVersion=((Get-ChildItem -path "C:Program FilesBMC SoftwareBladeLogicRSCDRSCDsvc.exe" -ErrorAction SilentlyContinue).VersionInfo).ProductVersion
PS> write-output $installedVersion
8.9.01.68
PS>
 

Как получить версию, передав путь в качестве переменной?

Ответ №1:

Похоже, ваш запрос $bsaPath=(Get-WmiObject -query "select Pathname from win32_service where name='$svcName'").PathName возвращает путь, заключенный в двойные кавычки.

Вам нужно их обрезать:

 $global:svcName="RSCDsvc"
$bsaPath=(Get-WmiObject -query "select Pathname from win32_service where name='$svcName'").PathName.Trim('"')
$bsaPath

$installedVersion=((Get-ChildItem -path $bsaPath -ErrorAction SilentlyContinue).VersionInfo).ProductVersion
$installedVersion
 

Результат:

 C:Program FilesBMC SoftwareBladeLogicRSCDRSCDsvc.exe
8.9.01.68