- Get-ComputerInfo mengembalikan objek yang konsisten; systeminfo memerlukan CSV + ConvertFrom-Csv.
- systeminfo adalah pantas dan jauh dengan /S /U /P; Get-ComputerInfo memerlukan Invoke-Command.
- Penyetempatan menjejaskan info sistem; menormalkan pengepala untuk skrip yang mantap.
Membandingkan Get-ComputerInfo dan systeminfo.exe ialah pertanyaan berulang di kalangan pentadbir mencari cara yang paling cekap dan "bersih" untuk inventori peralatan Windows. Walaupun kedua-duanya mengembalikan maklumat sistem, Mereka tidak berkelakuan sama, mereka tidak melakukan yang sama dan mereka tidak menawarkan jenis output yang sama., yang mempunyai implikasi langsung untuk automasi, pelaporan dan pelaksanaan jauh.
Dalam artikel ini anda akan menemui panduan yang komprehensif yang menyepadukan amalan sebenar, nuansa prestasi, Trik dengan saluran paip PowerShell dan butiran yang kurang jelas seperti mencari pengepala dalam systeminfo atau mengapa Harta -Get-ComputerInfo mengembalikan objek Walaupun anda meminta satu medan. Segala-galanya diterangkan dalam bahasa Sepanyol, dengan contoh dan penyelesaian yang jelas kepada ralat biasa apabila dijalankan terhadap komputer jauh.
Apa itu systeminfo.exe
systeminfo.exe ialah utiliti baris perintah klasik arahan untuk memprofil komputer Windows. Ia boleh didapati daripada versi lama (Windows XP Professional) hingga Windows 11, dan terletak di %windir%\system32\systeminfo.exe (dan pada sistem 64-bit juga) %windir%\SysWOW64\systeminfo.exe). Memaparkan tetapan sistem pengendalian, maklumat keselamatan, ID Produk dan sifat perkakasan sebagai RAM, ruang cakera atau kad rangkaian.
Satu kelebihan yang besar adalah di mana-mana: Ia hadir dalam hampir setiap sistem pengendalian Windows. Tetapi ia mempunyai satu batasan utama: jalan keluar terletakIni bermakna nama sifat seperti "Memori Fizikal Tersedia" dalam bahasa Inggeris mungkin kelihatan berbeza dalam bahasa lain, merumitkan automasi yang bergantung pada pengepala tersebut.
Walaupun alat "lama", ia sangat fleksibel: Menyokong format output dengan suis /FO (Jadual, Senarai, CSV) dan boleh merujuk komputer jauh menggunakan /S untuk pasukan, /U untuk pengguna dan /P untuk kata laluan. Ini menjadikannya berguna untuk inventori pantas apabila anda tidak mahu menyediakan sesi PowerShell jauh.
Apakah itu Get-ComputerInfo
Get-ComputerInfo ialah cmdlet terbina dalam sejak Windows PowerShell 5.1 (tersedia pada Windows 10 dan Windows Server 2016) yang mengagregatkan sistem dan sifat OS menjadi satu objek. Adakah hanya tersedia pada Windows dan mengembalikan contoh jenis Microsoft.PowerShell.Management.ComputerInfo dengan beratus-ratus hartanah disenaraikan.
Kelebihan besarnya ialah output berorientasikan objek dari minit pertama.: anda tidak perlu menghuraikan teks. Anda boleh menyalurkannya ke saluran paip, format, tapis dan eksport secara semula jadi dengan cmdlet seperti Select-Objek, Senarai Format, Isih-Objek o Eksport-Csv. Butiran lanjut dalam panduan ini.
Parameter -Property menerima tatasusunan rentetan (String[]) dan menyokong kad bebas. Ini membolehkan anda memilih set sifat tertentu (contohnya, semua sifat yang berkaitan dengan BIOS dengan *BIOS*) atau senarai kecil seperti OSName, TimeZone, OSProductType. Penting: Alias untuk Get-ComputerInfo ialah gin, sekiranya anda menjumpai skrip yang dipendekkan.
Perbezaan utama dan masa untuk menggunakan setiap satu
Output dan jenis data: systeminfo.exe menghasilkan teks (walaupun ia boleh menjadi CSV), yang memerlukan penukaran kepada objek untuk berfungsi dengan selesa dalam PowerShell; Get-ComputerInfo kembali objek kaya bersedia untuk saluran paip. Sumber ini membantu untuk memahami proses dengan lebih baik.
Prestasi: Sumber bersetuju bahawa Get-ComputerInfo agak perlahan. Minta lebih sedikit hartanah dengan -Harta tidak diterjemahkan ke dalam peningkatan yang ketara, kerana ia mengumpul banyak maklumat. Systeminfo.exe biasanya cukup pantas, terutamanya dengan CSV.
Jauh: systeminfo.exe ada menawarkan /S, /U, /P untuk pertanyaan jauh; Dapatkan-Info Komputer tidak mempunyai -ComputerName atau -CimSession, jadi anda perlu menggunakan Memohon-perintah atau sesi PowerShell jauh (WinRM). Untuk maklumat lanjut, lawati panduan ini.
systeminfo.exe dalam perancangan: daripada teks ke objek
Cara paling praktikal untuk menggunakan systeminfo dalam PowerShell adalah untuk meminta CSV dan menukar kepada objek dengan Tukar Daripada-Csv. Dengan cara ini, anda boleh memilih dan mengendalikan sifat tanpa pemangkasan regex atau manual.
$objetos = systeminfo.exe /FO CSV | ConvertFrom-Csv
$objetos.'Available Physical Memory'
Masalah utama ialah tajuk: Dalam bahasa lain, sifat akan berbeza, yang memecahkan skrip. Untuk mengelakkan ini, menormalkan tajuk dan menggantikannya dengan nama tetap dan stabil.
$headers = 1..30 | ForEach-Object { "Property$_" }
$objetos = systeminfo.exe /FO CSV |
Select-Object -Skip 1 |
ConvertFrom-Csv -Header $headers
$objetos.Property23
Pilihan yang lebih elegan adalah untuk menentukan nama lajur anda sendiri dari awal. Sebagai contoh, petakan semua lajur dengan nama yang jelas seperti HostName, OSName, OSVersion, TotalPhysicalMemory, Dll
$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
Kaedah ini menghapuskan isu bahasa dan menjadikan saluran paip anda lebih mantap.. Selain itu, anda boleh mengeksport ke CSV, JSON atau memanipulasi setiap sifat tanpa kesamaran.
Get-ComputerInfo: Memilih Sifat dan Pemformatan
Perincian yang mengelirukan ramai orang ialah, apabila meminta harta tunggal dengan -Harta, cmdlet kembali objek dengan sifat itu, bukan nilai "telanjang". Sebabnya ialah konvensyen: -Hartanah ialah Rentetan[], dan ia direka supaya, dengan beberapa sifat, anda mendapat objek dengannya. Untuk maklumat lanjut, lihat artikel ini.
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
Write-Output $info
# En formato lista
$info | Format-List
Jika anda hanya mahukan nilai sesuatu hartanah, anda mesti mengekstrak ahli, contohnya, (Get-ComputerInfo).OSName, atau gunakan Select-Object -ExpandProperty. Tetapi ingat itu Meminta lebih sedikit sifat tidak mempercepatkan proses dengan ketara.
Pertanyaan Wildcard: BIOS dan Lagi
Get-ComputerInfo sangat berguna untuk menapis mengikut corak. Sebagai contoh, untuk melihat semua yang berkaitan dengan BIOS, gunakan -Hartanah *BIOS* dan diformatkan dalam senarai untuk kejelasan.
Get-ComputerInfo -Property *BIOS* | Format-List
Boleh juga digabungkan dengan Invoke-Command untuk menanya dari jauh subset sifat dan memaipkan hasilnya ke CSV atau konsol berformat.
Prestasi dan amalan baik
Get-ComputerInfo menawarkan banyak kandungan tetapi bukan yang terpantas. Sumber bersetuju bahawa Menyebutnya beberapa kali untuk sifat yang berbeza tidak disyorkan.: akan bermakna mengulang kerja. Adalah lebih baik untuk memulihkan objek lengkap. sekali sahaja y pilih sifat selepasUntuk maklumat lanjut, semak artikel ini.
ysteminfo.exe sangat cekap dalam CSV dan, menggabungkannya dengan Tukar Daripada-Csv dan pengepala tersuai, boleh menjadi asas untuk pelaporan pantas dalam persekitaran heterogen, di mana pengalihan PowerShell tidak sentiasa didayakan.
Pelaksanaan Jauh: Pendekatan dan Contoh
Dengan systeminfo.exe Anda boleh menanyakan komputer jauh secara terus menggunakan /S (nama pasukan), /U (pengguna) dan /P (kata laluan). Ia berguna apabila WinRM tidak dikonfigurasikan atau anda memerlukan hasil tertentu.
systeminfo /S EQUIPO01 /U DOMINIO\usuario /P ContraseñaSegura
# Sin dominio, cuenta local
systeminfo /S EQUIPO01 /U .\Administrador /P ContraseñaSegura
Dengan Get-ComputerInfo, tiada parameter -ComputerName. Untuk kerja jauh, gunakan Memohon-perintah dan satu blok skrip. Pengumpulan dilakukan pada hos jauh dan objek lengkap dikembalikan. Untuk meluaskan pengetahuan anda, layari .
Invoke-Command -ComputerName 'DC1' -ScriptBlock {
Get-ComputerInfo -Property *BIOS*
}
Contoh praktikal untuk inventori hotfix: kami mengembangkan harta itu OSHotFixes, kami mengisih mengikut nama pasukan dan mengeksport jika perlu.
Invoke-Command -ComputerName 'DC1','SRV01','Localhost' -ScriptBlock {
Get-ComputerInfo | Select-Object -ExpandProperty OSHotFixes
} | Sort-Object PSComputerName | Export-Csv -NoTypeInformation SRV-Updates.csv
Ralat biasa: bukti kelayakan, pembolehubah dan sintaks
1) "Satu atau lebih nama komputer tidak sah" dalam Invoke-Command. Ia biasanya berlaku kerana lulus nama yang tidak sah atau salah eja. Ingat: $CD3160-05 Ia bukan nama pasukan, ia adalah a ungkapan yang cuba menolak 05 daripada pembolehubah $CD3160 (yang kemungkinan besar tidak wujud). Ia menggunakan petikan dan teks literal: -Nama Komputer '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) Menutup pendakap dan mengunci ScriptBlock. Pastikan buka dan tutup dengan betul { } dan elakkan mencampurkan konsol interaktif dalam ScriptBlock. Tulis arahan untuk dilaksanakan dari jauh, tanpa gesaan atau “PS C:\>”.
3) Kata laluan gesaan apabila menggunakan systeminfo /S. Jika komputer jauh tidak berkongsi konteks pengesahan, anda mesti nyatakan /U dan /P. Untuk akaun tempatan, gunakan .\Pengguna. Jika ada domain, DOMAIN\Pengguna. Jika anda tidak mengetahui domain tersebut, semak pada komputer tempatan dengan siapakah saya atau %USERDOMAIN%. Untuk butiran lanjut, lihat .
4) WinRM dan polisi. Untuk Invoke-Command, WinRM mesti didayakan dan komputer jauh mesti menerima sambungan (firewall dan TrustedHosts). Lari Aktifkan-PSRemoting-Force di destinasi dan semak peraturan firewall untuk Pengurusan WS (HTTP 5985/HTTPS 5986)Untuk mengetahui lebih lanjut, lawati .
Meneroka bantuan rasmi Get-ComputerInfo
Gunakan Get-Help Get-ComputerInfo para consultar la sintaks dan sifat. Parameter -Harta terima Tali[], menyokong kad bebas dan mengembalikan objek Maklumat Komputer. Anda boleh paip rentetan yang merupakan nama harta dan ingat itu hanya berfungsi pada Windows.
Get-Help Get-ComputerInfo
# Sintaxis relevante
Get-ComputerInfo <String[]>]
# Alias: gin
Untuk memeriksa semua hartanah yang ada dalam sistem anda, salurkan ke Dapatkan-AhliDalam Windows 10, banyak sifat yang berkaitan dengan BIOS, OS, Hyper-V, dll. dipaparkan.
Get-ComputerInfo | Get-Member | more
Contoh dan pemformatan yang berguna
Senaraikan semua (tetapi ia boleh menjadi sangat panjang; gunakan lebih banyak untuk membuat penomboran):
Get-ComputerInfo | more
Tapis mengikut versi menggunakan kad bebas:
Get-ComputerInfo -Property '*version'
Pilih sifat tertentu dan paparkan dengan jelas:
$info = Get-ComputerInfo -Property OSName, TimeZone, OSProductType
$info | Format-List
Contoh dengan systeminfo + CSV dan pengepala tersuai untuk keputusan seragam dalam bahasa yang berbeza:
$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
Keserasian, lokasi dan alatan yang berkaitan
systeminfo.exe ialah binari Windows asli dan kodnya boleh didapati dalam projek seperti ReactOS. Lokasi tipikalnya di System32 dan dalam SysWOW64 untuk sistem x64. Menyokong format output melalui /FO (Jadual, Senarai, CSV). Anda juga boleh berunding bagaimana untuk memastikan komponen bantuan dikemas kini.
Get-ComputerInfo telah diperkenalkan dengan PowerShell 5.1, meliputi keperluan yang sebelum ini kami selesaikan Get-WmiObject / Get-CimInstance. Alat lain yang berkaitan ialah msinfo32.exe, berguna untuk diagnostik GUI, walaupun kurang mesra saluran paip.
Penulis yang bersemangat tentang dunia bait dan teknologi secara umum. Saya suka berkongsi pengetahuan saya melalui penulisan, dan itulah yang akan saya lakukan dalam blog ini, menunjukkan kepada anda semua perkara yang paling menarik tentang alat, perisian, perkakasan, trend teknologi dan banyak lagi. Matlamat saya adalah untuk membantu anda mengemudi dunia digital dengan cara yang mudah dan menghiburkan.