معلومات الكمبيوتر: بسيطة وسريعة



في كثير من الأحيان ، تحتاج إلى الحصول على معلومات سريعة وجيزة ، ولكن بشكل إعلامي عن جهاز كمبيوتر ثابت أو كمبيوتر محمول ، بدون برامج إضافية وبدون "فتح الغطاء".

يمكن تنفيذ ذلك ، على سبيل المثال ، باستخدام أدوات سطر الأوامر في Windows أو PowerShell.
CMD - وظيفة تم اختبارها بالوقت في أي إصدار من Windows.
بالإضافة إلى ذلك ، بالنسبة للمهام الإدارية البسيطة ، يعد أمر cmd أكثر شيوعًا في الاستخدام وأكثر ملاءمة في مكان ما.

أيهما أفضل - CMD أو PowerShell؟ لست على استعداد للإجابة على هذا السؤال بشكل لا لبس فيه.
ومع ذلك ، لا شيء يمنعنا من استخدام كليهما ، كل هذا يتوقف على المهمة.

لن نقوم بجمع جميع المعلومات حول جهاز الكمبيوتر - لذلك هناك العديد من البرامج المتخصصة!


التنفيذ باستخدام CMD.


سنقوم بجمع المعلومات باستخدام متغيرات بيئة Windows وتشغيل البرامج النصية لـ WMI.

لعرض جميع متغيرات البيئة في Windows وقيمها ، استخدم الأمر set.

استخدم أمر WMIC للحصول على معلومات حول الأجهزة والنظام ، وإدارة العمليات ومكوناتها ، وتغيير الإعدادات باستخدام إمكانيات Windows Management Instrumentation (Windows Management Instrumentation أو WMI).

يمكنك الحصول على تلميح للعمل باستخدام الأداة المساعدة wmic.exe من خلال الأمر:
  • wmic /؟ - عرض المساعدة العامة.
  • wmic /؟: BRIEF - عرض مساعدة مختصرة.
  • wmic /؟: FULL - عرض المساعدة الكاملة.


سوف نستخدم:
  • BASEBOARD (إدارة اللوحة الأم) ؛
  • نظام الكمبيوتر (التحكم بالكمبيوتر) ؛
  • وحدة المعالجة المركزية (التحكم في وحدة المعالجة المركزية) ؛
  • DISKDRIVE (إدارة القرص الفعلي) ؛
  • MEMORYCHIP (معلومات شريحة الذاكرة).


يحتوي البرنامج النصي على العديد من الحلقات مع FOR.
السمة المميزة لـ FOR / F هي القدرة على العمل من خلال الرموز المميزة ، بالإضافة إلى دعم الكلمات الرئيسية الإضافية:
  • تخطي (تخطي عدد معين من الخطوط المعالجة من بداية الملف) ؛
  • delims (حدد محددًا (محددات) مختلفة ، بشكل افتراضي ، مسافة وحرف علامة تبويب) ؛
  • الرموز المميزة (عدد الرموز المميزة (سلاسل فرعية) المتلقاة في جسم الحلقة وحدود الانهيار بواسطة الفاصل). يمكنك أيضًا تعيين رقم مميز معين يقع في متغير الحلقة الأولى ؛
  • usebackq (تغيير قواعد استخدام الاقتباسات داخل IN (...)).


يوجد أدناه برنامج نصي.
@echo off
:    
set fname=pcinfo.txt
: 
Echo pcname: %computername% >>%fname%
:IP-    
FOR /F "usebackq tokens=2 delims=[]" %%i IN (`ping %Computername% -n 1 -4`) DO if not "%%i"=="" Set ip=%%i
Echo IP %computername%: %ip% >>%fname%
:  
Echo username: %username%  >>%fname%
: 
set cmd=wmic computersystem get model
for /f "skip=1 delims=" %%Z in ('%cmd%') do (
    set _pn=%%Z
	GOTO BREAK1
)
:BREAK1
echo CS Model: %_pn% >>%fname%
:
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('wmic cpu get name') do (
for /f "tokens=1-2 delims=" %%A in ("%%i") do (
set CPULbl=%%A
set /a mmr=!mmr!+1
echo CPU !mmr!: !CPULbl! >>%fname%
))
: 
set cmd=wmic baseboard get product
for /f "skip=1 delims=" %%Z in ('%cmd%') do (
    set _mb=%%Z
    GOTO BREAK2
)
:BREAK2
echo MB: %_mb% >>%fname%
: 
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('WMIC MemoryChip get BankLabel^,DeviceLocator^,PartNumber^,Speed^,Capacity') do (
for /f "tokens=1-5 delims=" %%A in ("%%i") do (
set BnkLbl=%%A
set /a mmr=!mmr!+1
echo Memory !mmr!: !BnkLbl! >>%fname%
wmic MEMORYCHIP get banklabel, partnumber, capacity, speed,  manufacturer
))
:
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('wmic diskdrive get model^,size') do (
for /f "tokens=1-2 delims=" %%A in ("%%i") do (
set HDDLbl=%%A
set /a mmr=!mmr!+1
echo DISK !mmr!: !HDDLbl! >>%fname%
))


التنفيذ مع PowerShell.


في PowerShell ، قبل تشغيل البرنامج النصي ، تحتاج إلى تشغيل أمر يسمح بتنفيذ البرامج النصية غير الموقعة لجلسة shell الحالية:
Set-ExecutionPolicy RemoteSigned -Scope Process

سيتم جمع المعلومات باستخدام Get-WmiObject -Class win32 بشكل أساسي ، كل شيء بسيط ، يعمل مع الحلقات.

سوف نستخدم:
  • Get-WmiObject -Class win32_processor ؛
  • احصل على WmiObject -Class win32_baseboard ؛
  • Get-WmiObject Win32_PhysicalMemory ؛
  • احصل على قرص مادي ؛
  • احصل على WmiObject -Class Win32_ComputerSystem ؛
  • الحصول على WmiObject Win32_NetworkAdapter ؛
  • Win32_NetworkAdapterConfiguration.


توجد صعوبات بسيطة في تحديد عنوان IP لبطاقة الشبكة النشطة. للقيام بذلك ، نستخدم عامل تصفية NetConnectionStatus - "2" ، بعد أن نأخذ معلومات عنوان mac من فئة Win32_NetworkAdapter وعنوان IP من فئة Win32_NetworkAdapterConfiguration ودمجها في طلب واحد:
PS C:\Users\admin> Get-WmiObject Win32_NetworkAdapter -Filter 'NetConnectionStatus=2'
ServiceName      : Qcamain10x64
MACAddress       : 58:00:E3:7D:87:3F
AdapterType      : Ethernet 802.3
DeviceID         : 1
Name             : Qualcomm Atheros QCA61x4A Wireless Network Adapter
NetworkAddresses :
Speed            : 144400000

للحصول على معلمات الشبكة عن طريق MACAddress لبطاقة الشبكة النشطة ، نقرأ أيضًا Win32_NetworkAdapterConfiguration.

يوجد أدناه برنامج نصي.
#    
$fname = "pcinfo.txt"
$CPU = Get-WmiObject  -Class win32_processor
$MB = Get-WmiObject  -Class win32_baseboard
$MEM = Get-WmiObject Win32_PhysicalMemory
$DD = Get-PhysicalDisk
$pcn = Get-WmiObject -Class Win32_ComputerSystem

# 
"pcname:	"+$pcn.Name | Out-File -FilePath $fname -Append -Encoding Default
#IP-    
Get-WmiObject Win32_NetworkAdapter -Filter 'NetConnectionStatus=2' |
ForEach-Object {
$pcip = 1 | Select-Object IP
$config = $_.GetRelated('Win32_NetworkAdapterConfiguration') 
$pcip.IP = $config | Select-Object -expand IPAddress
$pcip
}
foreach($aip in $pcip) {
"IP:	"+$aip.IP | Out-File -FilePath $fname -Append -Encoding Default
}
#  
"username:	"+$pcn.PrimaryOwnerName | Out-File -FilePath $fname -Append -Encoding Default
# 
"CS Model:	"+$pcn.Model | Out-File -FilePath $fname -Append -Encoding Default
#
$num = 0
foreach($processor in $CPU) {
$num = $num+1
"CPU "+$num+":	"+$processor.Name | Out-File -FilePath $fname -Append -Encoding Default
}
# 
"MB:	"+$MB.Product | Out-File -FilePath $fname -Append -Encoding Default
# 
$num = 0
foreach($memory in $MEM) {
$num = $num+1
"MEMORY "+$num+":	"+$memory.PartNumber+"	"+$memory.Capacity+"	"+$memory.Speed | Out-File -FilePath $fname -Append -Encoding Default
}
#
$num = 0
foreach($disk in $DD) {
$num = $num+1
"DISK "+$num+":	"+$disk.FriendlyName+"	"+$disk.Size+"	"+$disk.MediaType | Out-File -FilePath $fname -Append -Encoding Default
}

All Articles