- Get-ComputerInfo vrne skladne objekte; systeminfo zahteva CSV + ConvertFrom-Csv.
- systeminfo je hiter in oddaljen z /S /U /P; Get-ComputerInfo potrebuje Invoke-Command.
- Lokalizacija vpliva na sistemske informacije; normalizira glave za robustne skripte.
Primerjava Get-ComputerInfo in systeminfo.exe je ponavljajoča se poizvedba med administratorji, ki iščejo najučinkovitejši in »čist« način popisa opreme WindowsČeprav oba vrneta sistemske podatke, Ne obnašajo se enako, ne delujejo enako in ne ponujajo enake vrste rezultatov., kar ima neposredne posledice za avtomatizacijo, poročanje in oddaljeno izvajanje.
V tem članku boste našli obsežen vodnik ki združuje resnične prakse, nianse delovanja, Tricks s cevovodom PowerShell in manj očitne podrobnosti, kot so Iskanje glav v sistemskih informacijah ali zakaj Lastnost -Get-ComputerInfo vrne objekte Tudi če zahtevate samo eno polje. Vse je razloženo v španščini, z jasnimi primeri in rešitvami za pogoste napake pri izvajanju na oddaljenih računalnikih.
Kaj je systeminfo.exe
systeminfo.exe je klasični pripomoček ukazne vrstice ukazi profiliranje računalnika z operacijskim sistemom WindowsNa voljo je od starejših različic (Windows XP Professional) do Windows 11in se nahaja v %windir%\system32\systeminfo.exe (in tudi na 64-bitnih sistemih) %windir%\SysWOW64\systeminfo.exe). Prikaže nastavitve operacijskega sistema, varnostne informacije, ID izdelka in lastnosti strojna oprema kot RAM, prostor na disku ali omrežne kartice.
Velika prednost je njegova vseprisotnostPrisoten je v praktično vsakem operacijskem sistemu Windows. Vendar ima eno veliko omejitev: izhod se nahajaTo pomeni, da se imena lastnosti, kot je »Available Physical Memory« v angleščini, lahko v drugih jezikih prikažejo drugače, kar otežuje avtomatizacijo, ki se zanaša na te glave.
Čeprav je "staro" orodje, je presenetljivo prilagodljivoPodpira izhodne formate s stikalom /FO (Tabela, Seznam, CSV) in lahko dostopa do oddaljenih računalnikov uporabo /S za ekipo, /U za uporabnika in /P za geslo. Zaradi tega je uporaben za hiter popis, ko ne želite nastaviti oddaljenih sej PowerShell.
Kaj je Get-ComputerInfo
Get-ComputerInfo je vgrajen ukaz »cmdlet« od različice Windows PowerShell 5.1 naprej. (na voljo v sistemih Windows 10 in Windows Server 2016), ki združuje lastnosti sistema in operacijskega sistema v en sam objekt. Tole na voljo samo v sistemu Windows in vrne primerke tipa Microsoft.PowerShell.Management.ComputerInfo s stotinami nepremičnin na seznamu.
Njegova velika prednost je, da je izhod že od prve minute objektno usmerjen.: besedila ni treba razčlenjevatiLahko ga usmerite v cevovod, formatu, filtrirajte in izvozite naravno z ukazi »cmdlets«, kot je Izberite-Predmet, Seznam formatov, Razvrsti-predmet o Izvozi-CSV. Več podrobnosti v tem priročniku.
Parameter -Property sprejme polje nizov (String[]) in podpira nadomestne znake. To vam omogoča, da izberete določene nabore lastnosti (na primer vse lastnosti, povezane z BIOS z *BIOS*) ali majhen seznam, kot je Ime operacijskega sistema, časovni pas, vrsta izdelka operacijskega sistema. Pomembno: Vzdevek za Get-ComputerInfo je gin, če naletite na skrajšane skripte.
Ključne razlike in kdaj jih uporabiti
Izhod in podatkovni tip: systeminfo.exe ustvari besedilo (čeprav je lahko v obliki CSV), kar zahteva pretvorbo v objekte za udobno delovanje v PowerShellu; Get-ComputerInfo vrne bogati predmeti pripravljen za cevovod. Ta vir pomaga bolje razumeti postopek.
UspešnostViri se strinjajo, da Get-ComputerInfo je relativno počasenZahtevajte manj nepremičnin z - Lastnina ne pomeni bistvenega izboljšanja, saj tako ali tako zbira veliko informacij. Systeminfo.exe je običajno precej hitro, še posebej pri CSV-ju.
Oddaljeni: systeminfo.exe ponuja /S, /U, /P za oddaljene poizvedbe; Get-ComputerInfo nima -ComputerName ali -CimSession, zato morate uporabiti Invoke-Command ali oddaljene seje PowerShell (WinRM). Za več informacij obiščite ta vodnik.
systeminfo.exe v cevovodu: od besedila do objektov
Najbolj praktičen način uporabe sistemskih informacij v PowerShellu je zahtevati CSV in ga pretvoriti v objekte z PretvoriIz-CSVNa ta način lahko izberete in upravljate lastnosti brez regularnih izrazov ali ročnega obrezovanja.
$objetos = systeminfo.exe /FO CSV | ConvertFrom-Csv
$objetos.'Available Physical Memory'
Glavna težava so nasloviV drugih jezikih bodo lastnosti drugačne, kar pokvari delovanje skriptov. Da bi se temu izognili, normalizira glave in jih nadomestite s stalnimi in stabilnimi imeni.
$headers = 1..30 | ForEach-Object { "Property$_" }
$objetos = systeminfo.exe /FO CSV |
Select-Object -Skip 1 |
ConvertFrom-Csv -Header $headers
$objetos.Property23
Še bolj elegantna možnost je, da že od začetka definirate lastna imena stolpcev. Na primer, vse stolpce preslikajte z jasnimi imeni, kot je Ime gostitelja, ime operacijskega sistema, različica operacijskega sistema, skupni fizični pomnilnik, Itd
$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
Ta metoda odpravlja jezikovne težave in naredi vaš cevovod bolj robusten.Poleg tega lahko izvozite v CSV, JSON ali pa vsako lastnost spreminjate brez dvoumnosti.
Get-ComputerInfo: Izbira lastnosti in oblikovanje
Podrobnosti, ki marsikoga zmedejo je to, da pri zahtevi za eno samo nepremičnino z - Lastnina, ukaz »cmdlet« vrne predmet s to lastnostjo, ne pa »gole« vrednosti. Razlog je konvencija: -Lastnost je niz[]in zasnovan je tako, da z več lastnostmi dobite objekt z njimi. Za več informacij glejte Ta članek.
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
Write-Output $info
# En formato lista
$info | Format-List
Če želite le vrednost nepremičnine, morate na primer izvleči člana (Get-ComputerInfo).OSNameali uporabite Izberi-Predmet-RazširiLastnostAmpak ne pozabite, da Zahteva po manjšem številu nepremičnin ne pospeši bistveno postopka.
Nadomestne poizvedbe: BIOS in drugo
Get-ComputerInfo je zelo uporaben za filtriranje po vzorcihNa primer, če si želite ogledati vse, kar je povezano z BIOS-om, uporabite -Lastnost *BIOS* in zaradi jasnosti oblikovane v seznam.
Get-ComputerInfo -Property *BIOS* | Format-List
Lahko se kombinira tudi z Invoke-Command za oddaljeno poizvedbo po podmnožici lastnosti in posredovanje rezultatov v CSV ali oblikovano konzolo.
Uspešnost in dobre prakse
Get-ComputerInfo ponuja veliko vsebine, vendar ni najhitrejšiViri se strinjajo, da Večkratno klicanje za različne lastnosti ni priporočljivo.: pomenilo bo ponovitev dela. Najbolje je, da se obnovi celoten predmet. samo enkrat y izberite lastnosti poZa več informacij si oglejte Ta članek.
Datoteka ysteminfo.exe je zelo učinkovita v CSV-ju. in ga kombiniramo z PretvoriIz-CSV in glave po meri so lahko osnova za hitro poročanje v heterogenih okoljih, kjer oddaljeno delovanje PowerShell ni vedno omogočeno.
Oddaljeno izvajanje: pristopi in primeri
Z datoteko systeminfo.exe Oddaljene računalnike lahko poizvedujete neposredno z uporabo /S (ime ekipe), /U (uporabnik) in /P (geslo). Uporabno je, kadar WinRM ni konfiguriran ali pa potrebujete specifične rezultate.
systeminfo /S EQUIPO01 /U DOMINIO\usuario /P ContraseñaSegura
# Sin dominio, cuenta local
systeminfo /S EQUIPO01 /U .\Administrador /P ContraseñaSegura
Z ukazom Get-ComputerInfo, ni parametra -ComputerName. Za delo na daljavo uporabite Invoke-Command in blok scriptZbiranje se izvaja na oddaljenem gostitelju in vrnejo se celotni objektiČe želite razširiti svoje znanje, obiščite .
Invoke-Command -ComputerName 'DC1' -ScriptBlock {
Get-ComputerInfo -Property *BIOS*
}
Praktičen primer za popis popravkovrazširili smo nepremičnino Popravki za OS, razvrščamo po imenu ekipe in po potrebi izvozimo.
Invoke-Command -ComputerName 'DC1','SRV01','Localhost' -ScriptBlock {
Get-ComputerInfo | Select-Object -ExpandProperty OSHotFixes
} | Sort-Object PSComputerName | Export-Csv -NoTypeInformation SRV-Updates.csv
Tipične napake: poverilnice, spremenljivke in sintaksa
1) »Eno ali več imen računalnikov ni veljavnih« v Invoke-CommandObičajno se to zgodi, ker posredujte neveljavno ali napačno črkovano ime. Zapomni si: $CD3160-05 To ni ime ekipe, ampak izraz ki poskuša odšteti 05 od spremenljivke $CD3160 (ki najverjetneje ne obstaja). Uporablja narekovaje in dobesedno besedilo: -Ime računalnika '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) Zapiranje oklepajev in zaklepanje ScriptBlocka. Bodi prepričan pravilno odpiranje in zapiranje { } in se izogibajte mešanju interaktivne konzole znotraj ScriptBlocka. Napišite ukaz, ki se bo izvajal na daljavo, brez pozivov ali »PS C:\>«.
3) Poziv k vnosu gesla pri uporabi systeminfo /SČe oddaljeni računalnik ne deli konteksta preverjanja pristnosti, Navesti morate /U in /PZa lokalne račune uporabite .\UporabnikČe obstaja domena, DOMENA\UporabnikČe domene ne poznate, jo preverite v lokalnem računalniku z Kdosem ali %USERDOMAIN%. Za več podrobnosti glejte .
4) WinRM in pravilnikiZa ukaz Invoke-Command, WinRM mora biti omogočen in oddaljeni računalnik mora sprejemati povezave (požarni zid in zaupanja vredne gostitelje). Zaženite Enable -PSRemoting -Force na cilju in preverite pravila požarnega zidu za Upravljanje WS (HTTP 5985/HTTPS 5986)Če želite izvedeti več, obiščite.
Raziskovanje uradne pomoči za Get-ComputerInfo
Uporabite Get-Help Get-ComputerInfo za svetovalca la sintaksa in lastnosti. Parameter - Lastnina sprejeti Vrvica[], podpira nadomestne znake in vrne objekt Računalniške informacijeNize, ki so imena lastnosti, lahko povežete s pipo in si to zapomnite. deluje samo v sistemu Windows.
Get-Help Get-ComputerInfo
# Sintaxis relevante
Get-ComputerInfo <String[]>]
# Alias: gin
Za ogled vseh razpoložljivih nepremičnin v vašem sistemu, kanalizirajte do Pridobi članaV sistemu Windows 10 je prikazanih veliko lastnosti, povezanih z BIOS-om, operacijskim sistemom, Hyper-V itd.
Get-ComputerInfo | Get-Member | more
Koristni primeri in oblikovanje
Seznam vseh (vendar je lahko zelo dolg; uporabite več za oštevilčenje strani):
Get-ComputerInfo | more
Filtriraj po različici z uporabo nadomestnih znakov:
Get-ComputerInfo -Property '*version'
Izberite določene lastnosti in jih jasno prikažite:
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
$info | Format-List
Primer s sistemskimi informacijami + CSV in glavami po meri za enotne rezultate v različnih jezikih:
$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
Združljivost, lokacije in sorodna orodja
systeminfo.exe je izvorna binarna datoteka sistema Windows in njegovo kodo je mogoče najti v projektih, kot je ReactOS. Njena tipična lokacija v System32 in SysWOW64 za sisteme x64. Podpira izhodno obliko prek /FO (Tabela, Seznam, CSV). Ogledate si lahko tudi kako posodabljati komponente pomoči.
Get-ComputerInfo je bil uveden s PowerShellom 5.1., ki pokriva potrebo, ki smo jo prej rešili z Get-WmiObject / Get-CimInstanceDrugo povezano orodje je msinfo32.exe, uporaben za diagnostiko grafičnega uporabniškega vmesnika, čeprav manj prijazen do cevovodov.
Strasten pisec o svetu bajtov in tehnologije nasploh. Rad delim svoje znanje s pisanjem in to je tisto, kar bom počel v tem blogu, saj vam bom pokazal vse najbolj zanimive stvari o pripomočkih, programski opremi, strojni opremi, tehnoloških trendih in še več. Moj cilj je, da vam pomagam krmariti po digitalnem svetu na preprost in zabaven način.