Pertanyaan Powershell search-string di dalam variabel (bukan file teks)


Saya mencoba mencari string bernama "Hostname" dari variabel "$ a" yang menyimpan output dari perintah "systeminfo" tetapi mengalami masalah. Saya menggunakan "info sistem" untuk mengumpulkan kumpulan data yang lebih besar.

Kode:

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

Kesalahan:

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

Apa cara yang benar untuk mencari string di dalam variabel?


3
2017-11-19 19:31


asal


Kenapa tidak digunakan saja get-content env:computername untuk mendapatkan nama host alih-alih menguraikan SystemInfo? - Ƭᴇcʜιᴇ007
Juga, saya mencoba memformat pertanyaan Anda sedikit lebih baik, silakan edit lebih lanjut dan perbaiki bagian kode (jika diperlukan), karena saya tidak yakin jeda barisnya ternyata benar. - Ƭᴇcʜιᴇ007
$a | select-string "hostname" - nixda


Jawaban:


Pilih-string memiliki beberapa set parameter. Untuk mencari di dalam objek (bukan file) parameter Anda akan terlihat seperti ini. Perhatikan penggunaan -InputObject parameter diperlukan untuk penggunaan terhadap sesuatu yang bukan file, dan itu tidak dapat digunakan sebagai parameter posisi, -InputObject parameter harus secara eksplisit dinamai.

Set Parameter: Objek   Pilih-String [-Pattern] -InputObject

Jadi cobalah intead ini.

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

2
2017-11-19 19:59