Get-ComputerInfo vs. SystemInfo: Dallime të Vërteta, Përdorime dhe Truke

Përditësimi i fundit: 14/08/2025
Author: Isaac
  • Get-ComputerInfo kthen objekte konsistente; systeminfo kërkon CSV + ConvertFrom-Csv.
  • systeminfo është i shpejtë dhe i largët me /S /U /P; Get-ComputerInfo ka nevojë për Invoke-Command.
  • Lokalizimi ndikon në systeminfo; normalizon titujt për skripte të fuqishme.

Krahasimi i Get-ComputerInfo me systeminfo në Windows

Krahasimi i Get-ComputerInfo dhe systeminfo.exe është një pyetje e përsëritur. midis administratorëve që kërkojnë mënyrën më efikase dhe "të pastër" për të inventarizuar pajisjet DritaretEdhe pse të dy kthejnë informacionin e sistemit, Ato nuk sillen njësoj, nuk kryejnë të njëjtën gjë dhe nuk ofrojnë të njëjtin lloj rezultati., gjë që ka implikime të drejtpërdrejta për automatizimin, raportimin dhe ekzekutimin në distancë.

Në këtë artikull do të gjeni një udhëzues të plotë që integron praktikat reale, nuancat e performancës, Tricks me tubacionin e PowerShell dhe detaje më pak të dukshme si p.sh. gjetja e titujve në systeminfo apo pse Prona -Get-ComputerInfo kthen objekte Edhe kur kërkoni një fushë të vetme. Gjithçka shpjegohet në spanjisht, me shembuj dhe zgjidhje të qarta për gabimet e zakonshme kur ekzekutohet në kompjuterë të largët.

Çfarë është systeminfo.exe

systeminfo

systeminfo.exe është programi klasik i linjës së komandës. komandat për të profilizuar një kompjuter me WindowsËshtë i disponueshëm nga versionet më të vjetra (Windows XP Professional) deri në Dritaret 11, dhe ndodhet në %windir%\system32\systeminfo.exe (dhe në sistemet 64-bit gjithashtu) %windir%\SysWOW64\systeminfo.exeShfaq cilësimet e sistemit operativ, informacionin e sigurisë, ID-në e produktit dhe vetitë e hardware si RAM, hapësirë disku ose karta rrjeti.

Një avantazh i madh është përhapja e tij e gjerëËshtë i pranishëm në pothuajse çdo sistem operativ Windows. Por ka një kufizim të madh: dalja ndodhetKjo do të thotë që emrat e vetive si "Memoria Fizike e Disponueshme" në anglisht mund të shfaqen ndryshe në gjuhë të tjera, duke e komplikuar automatizimin që mbështetet në ato tituj.

Pavarësisht se është një mjet "i vjetër", është çuditërisht fleksibëlMbështet formatet e daljes me çelësin /FO (Tabela, Lista, CSV) dhe mund të konsultojë kompjuterë të largët përdorim /S për ekipin, /U për përdoruesin dhe /P për fjalëkalimin. Kjo e bën të dobishëm për inventarë të shpejtë kur nuk doni të konfiguroni seanca PowerShell në distancë.

Çfarë është Get-ComputerInfo

get-computerinfo

Get-ComputerInfo është një cmdlet i integruar që nga Windows PowerShell 5.1 (e disponueshme në Windows 10 dhe Windows Server 2016) që grumbullon vetitë e sistemit dhe të sistemit operativ në një objekt të vetëm. është i disponueshëm vetëm në Windows dhe kthen raste të tipit Microsoft.PowerShell.Management.ComputerInfo me qindra prona të listuara.

Avantazhi i tij i madh është se rezultati është i orientuar drejt objekteve që nga minuta e parë.: nuk keni nevojë të analizoni tekstinMund ta kanalizoni atë në tubacion, format, filtroni dhe eksportoni natyrshëm me cmdlet-e si Zgjidh-Objektin, Formati-Listë, Rendit-Objekt o Eksporto-CSV. Më shumë detaje në këtë udhëzues.

  Ka 5 mënyra për të rregulluar këtë gabim: semafori ka skaduar

Parametri -Property pranon një varg vargjesh (String[]) dhe mbështet wildcards. Kjo ju lejon të zgjidhni grupe specifike të vetive (për shembull, të gjitha vetitë që lidhen me BIOS me *BIOS*) ose një listë e vogël si Emri i Sistemit Operativ, Zona Kohore, Lloji i Produktit të Sistemit Operativ. E rëndësishme: Pseudonimi për Get-ComputerInfo është gin, në rast se hasni skripte të shkurtuara.

Dallimet kryesore dhe kur të përdoret secila

Dalja dhe lloji i të dhënave: systeminfo.exe prodhon texting (megjithëse mund të jetë CSV), i cili kërkon konvertim në objekte për të funksionuar rehat në PowerShell; Get-ComputerInfo kthen objekte të pasura gati për tubacionin. Ky burim ndihmon për të kuptuar më mirë procesin.

performancaBurimet pajtohen që Get-ComputerInfo është relativisht i ngadaltëKërkoni më pak prona me -Pronë nuk përkthehet në një përmirësim të rëndësishëm, pasi mbledh shumicën e informacionit gjithsesi. Systeminfo.exe zakonisht është goxha shpejt, veçanërisht me CSV.

i largëtsysteminfo.exe ofron /S, /U, /P për pyetje të largëta; Get-ComputerInfo nuk ka -Emri i Kompjuterit ose -Sessioni i Cim, kështu që duhet të përdorni Kërkoj-Komanda ose seanca të largëta PowerShell (WinRM). Për më shumë informacion, vizitoni ky udhëzues.

systeminfo.exe në proces: nga teksti në objekte

Mënyra më praktike për të përdorur systeminfo në PowerShell është të kërkosh CSV dhe ta konvertosh në objekte me ConvertFrom-CsvNë këtë mënyrë, ju mund të zgjidhni dhe të veproni mbi vetitë pa prerje të rregullta ose manuale.

$objetos = systeminfo.exe /FO CSV | ConvertFrom-Csv
$objetos.'Available Physical Memory'

Problemi kryesor janë titujtNë gjuhë të tjera, vetitë do të jenë të ndryshme, gjë që prish skriptet. Për ta shmangur këtë, normalizon titujt dhe zëvendësojini ato me emra fiks dhe të qëndrueshëm.

$headers = 1..30 | ForEach-Object { "Property$_" }
$objetos = systeminfo.exe /FO CSV |
  Select-Object -Skip 1 |
  ConvertFrom-Csv -Header $headers

$objetos.Property23

Një opsion edhe më elegant është të përcaktoni emrat tuaj të kolonave që nga fillimi. Për shembull, hartëzoni të gjitha kolonat me emra të qartë si p.sh. Emri i hostit, Emri i sistemit operativ, Versioni i sistemit operativ, Memoria totale fizike, Etj

$headers = 'HostName','OSName','OSVersion','OSManufacturer','OSConfiguration','OSBuildType',
  'RegisteredOwner','RegisteredOrganization','ProductID','OriginalInstallDate','SystemBootTime',
  'SystemManufacturer','SystemModel','SystemType','Processors','BIOSVersion','WindowsDirectory',
  'SystemDirectory','BootDevice','SystemLocale','InputLocale','TimeZone','TotalPhysicalMemory',
  'AvailablePhysicalMemory','VirtualMemoryMaxSize','VirtualMemoryAvailable','VirtualMemoryInUse',
  'PageFileLocations','Domain','LogonServer','Hotfix','NetworkCard','HyperVRequirements'

$objetos = systeminfo.exe /FO CSV |
  Select-Object -Skip 1 |
  ConvertFrom-Csv -Header $headers

$objetos.ProductID

Kjo metodë eliminon problemet gjuhësore dhe e bën tubacionin tuaj më të qëndrueshëm.Përveç kësaj, mund të eksportoni në CSV, JSON ose të manipuloni secilën veti pa paqartësi.

Get-ComputerInfo: Zgjedhja e Vetive dhe Formatimi

Një detaj që ngatërron shumë njerëz është se, kur kërkohet një pronë e vetme me -Pronë, cmdlet-i kthen një objekt me atë veti, jo vlera "e zhveshur". Arsyeja është konvencioni: -Vetia është një varg[], dhe është projektuar në mënyrë që, me disa veti, të merrni një objekt me to. Për më shumë informacion, shihni Ky artikull.

$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
Write-Output $info

# En formato lista
$info | Format-List

Nëse doni vetëm vlerën e një prone, duhet ta nxirrni anëtarin, për shembull, (Get-ComputerInfo).OSName, ose përdorni Zgjidh-Objektin -Zgjero PropertinëPor mbani mend se Kërkesa për më pak prona nuk e përshpejton ndjeshëm procesin.

  Rritje të larta të përdorimit të CPU-së nga sistemi ose svchost.exe – Udhëzues teknik hap pas hapi

Pyetje me karaktere të ndryshueshme: BIOS dhe më shumë

Get-ComputerInfo është shumë i dobishëm për filtrimin sipas modeleve.Për shembull, për të parë gjithçka që lidhet me BIOS-in, përdorni -Prona *BIOS* dhe të formatuara në një listë për qartësi.

Get-ComputerInfo -Property *BIOS* | Format-List

Mund të kombinohet edhe me Invoke-Command për të pyetur në distancë një nëngrup të vetive dhe për të dërguar rezultatet në CSV ose në një konsolë të formatuar.

Performanca dhe praktikat e mira

Get-ComputerInfo ofron shumë përmbajtje, por nuk është më i shpejtiBurimet bien dakord që Nuk rekomandohet thirrja e tij disa herë për veti të ndryshme.: do të thotë përsëritje e punës. Është më mirë të rikuperohet i gjithë objekti. vetem nje here y zgjidhni vetitë pasPër më shumë informacion, shikoni Ky artikull.

ysteminfo.exe është shumë efikas në CSV dhe, duke e kombinuar atë me ConvertFrom-Csv dhe titujt e personalizuar, mund të jenë një bazë për raportim të shpejtë në mjedise heterogjene, ku largimi i PowerShell nuk është gjithmonë i aktivizuar.

Ekzekutimi në distancë: Qasje dhe shembuj

Me systeminfo.exe Mund të pyesësh kompjuterët e largët direkt duke përdorur /S (emri i ekipit), /U (përdorues) dhe /P (fjalëkalim). Është i dobishëm kur WinRM nuk është konfiguruar ose keni nevojë për rezultate specifike.

systeminfo /S EQUIPO01 /U DOMINIO\usuario /P ContraseñaSegura
# Sin dominio, cuenta local
systeminfo /S EQUIPO01 /U .\Administrador /P ContraseñaSegura

Me Get-ComputerInfo, nuk ka parametër -Emri i Kompjuterit. Për punë në distancë, përdorni Kërkoj-Komanda dhe një bllok i dorëshkrimMbledhja bëhet në hostin e largët dhe Objektet e plota kthehenPër të zgjeruar njohuritë tuaja, vizitoni .

Invoke-Command -ComputerName 'DC1' -ScriptBlock {
  Get-ComputerInfo -Property *BIOS*
}

Shembull praktik për inventarin e korrigjimeve të shpejtaNe e zgjeruam pronën OSHotFixes, ne rendisim sipas emrit të ekipit dhe eksportojmë nëse është e nevojshme.

Invoke-Command -ComputerName 'DC1','SRV01','Localhost' -ScriptBlock {
  Get-ComputerInfo | Select-Object -ExpandProperty OSHotFixes
} | Sort-Object PSComputerName | Export-Csv -NoTypeInformation SRV-Updates.csv

Gabime tipike: kredencialet, variablat dhe sintaksa

1) "Një ose më shumë emra kompjuterësh nuk janë të vlefshëm" në Invoke-CommandZakonisht ndodh sepse kaloj një emër të pavlefshëm ose të shkruar gabim. Mbani mend: $CD3160-05 Nuk është emër ekipi, është një shprehje i cili përpiqet të zbresë 05 nga një variabël $CD3160 (e cila ka shumë të ngjarë të mos ekzistojë). Përdor thonjëza dhe tekst literal: -Emri i Kompjuterit 'CD3160-05'.

# Incorrecto (interpreta variable y resta)
Invoke-Command -ComputerName $CD3160-05 -ScriptBlock { Get-ComputerInfo }

# Correcto (literal)
Invoke-Command -ComputerName 'CD3160-05' -ScriptBlock { Get-ComputerInfo }

2) Mbyllja e kllapave dhe bllokimi i ScriptBlock. Sigurohuni që hap dhe mbyll saktë { } dhe shmangni përzierjen e konsolës interaktive brenda ScriptBlock. Shkruani udhëzimin që do të ekzekutohet nga distanca, pa kërkesa ose “PS C:\>”.

  Zbuloni se si të çaktivizoni vendet e rëndësishme në iPhone tuaj

3) Kërkesë për fjalëkalim kur përdorni systeminfo /SNëse kompjuteri në distancë nuk ndan kontekstin e vërtetimit, duhet të specifikoni /U dhe /PPër llogaritë lokale, përdorni .\PërdoruesiNëse ka domen, DOMAIN\PërdoruesNëse nuk e dini domenin, kontrolloni në kompjuterin lokal me Kush jam unë ose %USERDOMAIN%. Për më shumë detaje, shihni .

4) WinRM dhe politikatPër Invoke-Command, WinRM duhet të jetë i aktivizuar dhe kompjuteri në distancë duhet të pranojë lidhje (firewall dhe TrustedHosts). Ekzekutoni Aktivizo-PSR Remoting-Forca në destinacion dhe kontrolloni rregullat e firewall-it për Menaxhimi i WS (HTTP 5985/HTTPS 5986)Për të mësuar më shumë, vizitoni.

Duke eksploruar ndihmën zyrtare të Get-ComputerInfo

Përdorni Get-Help Get-ComputerInfo para këshilltar la sintaksa dhe vetitë. Parametri -Pronë acepta Varg [], mbështet wildcards dhe kthen një objekt Informacione për KompjuterinMund të ndërthurni vargje që janë emra të vetive dhe të mbani mend se funksionon vetëm në Windows.

Get-Help Get-ComputerInfo
# Sintaxis relevante
Get-ComputerInfo  <String[]>] 
# Alias: gin

Për të inspektuar të gjitha pronat e disponueshme në sistemin tuaj, kanalizoni te Bëhu anëtarNë Windows 10, shfaqen shumë veti që lidhen me BIOS, OS, Hyper-V, etj.

Get-ComputerInfo | Get-Member | more

Shembuj dhe formatim i dobishëm

Listo të gjitha (por mund të jetë shumë e gjatë; përdorni më shumë për të numëruar faqet):

Get-ComputerInfo | more

Filtro sipas versionit duke përdorur karaktere të egra:

Get-ComputerInfo -Property '*version'

Zgjidhni vetitë specifike dhe shfaqini ato qartë:

$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
$info | Format-List

Shembull me systeminfo + CSV dhe tituj të personalizuar për rezultate uniforme në gjuhë të ndryshme:

$headers = 'HostName','OSName','OSVersion','OSManufacturer','OSConfiguration','OSBuildType',
  'RegisteredOwner','RegisteredOrganization','ProductID','OriginalInstallDate','SystemBootTime',
  'SystemManufacturer','SystemModel','SystemType','Processors','BIOSVersion','WindowsDirectory',
  'SystemDirectory','BootDevice','SystemLocale','InputLocale','TimeZone','TotalPhysicalMemory',
  'AvailablePhysicalMemory','VirtualMemoryMaxSize','VirtualMemoryAvailable','VirtualMemoryInUse',
  'PageFileLocations','Domain','LogonServer','Hotfix','NetworkCard','HyperVRequirements'

$objetos = systeminfo.exe /FO CSV |
  Select-Object -Skip 1 |
  ConvertFrom-Csv -Header $headers

$objetos | Select-Object HostName, OSName, OSVersion
msinfo32
Artikulli i lidhur:
Si të shikoni informacionin e sistemit dhe të përdorni msinfo32 në Windows

Pajtueshmëria, vendndodhjet dhe mjetet përkatëse

systeminfo.exe është një skedar binar vendas i Windows-it dhe kodi i tij mund të gjendet në projekte si ReactOS. Vendndodhja e tij tipike në System32 dhe sysWOW64 për sistemet x64. Mbështet formatin e daljes nëpërmjet /FO (Tabela, Lista, CSV). Mund të konsultoheni edhe si t’i mbani komponentët e ndihmës të përditësuar.

Get-ComputerInfo u prezantua me PowerShell 5.1, duke mbuluar një nevojë që e zgjidhëm më parë me Get-WmiObject / Get-CimInstanceNjë mjet tjetër i lidhur është msinfo32.exe, i dobishëm për diagnostikimin e GUI-t, megjithëse më pak miqësor ndaj tubacionit.

Drajverët PCL vs PostScript
Artikulli i lidhur:
Drajverët PCL vs. PostScript: Dallimet dhe Si të Zgjidhni

Lini një koment