3

Я пытаюсь найти строку с именем "Hostname" в переменной «$ a», которая хранит выходные данные команды "systeminfo", но столкнулась с проблемами. Я использую "системную информацию", чтобы собрать больший набор данных.

Код:

$a= (get-systeminfo -computername localhost | select-object hostname, OSNAME, osversion, model, type)  
write-output $a 
select-string $a -pattern "hostname"

Ошибка:

Select-String : Cannot find path 'C:\Users\john001c\@{Hostname=PACCPL-FTN1TM1; OSName=Microsoft Windows 7 Enterprise ; OSVersion=6.1.7601 Service Pack 1 Build 7601; Model=Latitude E
4310; Type=x64-based PC}' because it does not exist.

At line:5 char:14
+ select-string <<<<  $a -pattern "hostname"
    + CategoryInfo          : ObjectNotFound: (C:\Users\john...e=x64-based PC}:String) [Select-String], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SelectStringCommand

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

1 ответ1

3

У строки выбора есть несколько наборов параметров. Для поиска внутри объекта (а не файла) ваши параметры будут выглядеть следующим образом. Обратите внимание, что использование параметра -InputObject необходимо для использования с чем-то, что не является файлом, и его нельзя использовать в качестве позиционного параметра, параметр -InputObject должен иметь явное имя.

Набор параметров: Object Select-String [-Pattern] -InputObject

Так что попробуйте это intead.

select-string -pattern "hostname" -InputObject $a

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