2013-07-16 6 views
9

मैं PowerShell का उपयोग करके भौतिक स्मृति आकार प्राप्त करने का प्रयास कर रहा हूं, लेकिन get-wmiobject का उपयोग किए बिना।मैं WMI के बिना PowerShell का उपयोग कर कुल भौतिक स्मृति आकार कैसे प्राप्त करूं?

मैं भौतिक स्मृति आकार प्राप्त करने के लिए निम्नलिखित पीएस cmdlet का उपयोग कर रहा हूं, लेकिन प्रत्येक नए सर्वेक्षण के साथ मूल्य बदलता है। 8605425664 बाइट्स

मैं भी से

(get-wmiobject -class "win32_physicalmemory" -namespace "root\CIMV2").Capacity 

इससे दिए गए मान के साथ इन काउंटरों जोड़ने से मूल्य मैं परीक्षण कर रहा हूँ:

(get-counter -counter "\Memory\Available Bytes").CounterSamples[0].CookedValue + 
(get-counter -counter "\Memory\Committed Bytes").CounterSamples[0].CookedValue 

सामान्य तौर पर, यह मेरे चारों ओर एक मूल्य देता है मुझे मूल्य: 858 9934592 बाइट्स

तो न केवल काउंटर बदलने से गणना की गई कुल भौतिक स्मृति है, लेकिन यह मूल्य दो जोड़े द्वारा डब्लूएमआई मूल्य से अलग है gabytes। किसी के पास कोई विचार है कि WMI का उपयोग किए बिना भौतिक स्मृति आकार कैसे प्राप्त करें?

+0

आप क्या चाहते हैं? शारीरिक डिस्क या शारीरिक स्मृति? आपका उदाहरण भौतिक स्मृति दिखाता है और आपका प्रश्न भौतिक डिस्क के बारे में है। – ravikanth

+0

क्षमा करें। मैं उन्हें उलझन में मिला। मुझे भौतिक स्मृति आकार चाहिए। मैं अपना प्रश्न संपादित करूंगा। धन्यवाद! – eltaco431

+2

जिज्ञासा से बाहर, आप डब्लूएमआई से क्यों बचना चाहते हैं? –

उत्तर

17

यदि आप डब्लूएमआई का उपयोग नहीं करना चाहते हैं, तो मैं systeminfo.exe का सुझाव दे सकता हूं। लेकिन, ऐसा करने का एक बेहतर तरीका हो सकता है।

(systeminfo | Select-String 'Total Physical Memory:').ToString().Split(':')[1].Trim() 
+1

दिलचस्प, मेरे सिस्टम पर 8 जीबी स्थापित है (या बिल्कुल 8192 एमबी), सिस्टम जानकारी रिपोर्ट करता है कि मेरे पास कुल 8155 एमबी है। मुझे संदेह है कि 8 जीबी सभी सिस्टम द्वारा प्रयोग योग्य नहीं है जो अंतर के लिए जिम्मेदार हो सकता है। –

+0

हां। BIOS छायांकन कार्यों के लिए आपका BIOS कुछ स्मृति की मैपिंग कर सकता है। – ravikanth

+0

तो सवाल यह है कि वास्तव में ओपी क्या है? कंप्यूटर द्वारा उपयोग के लिए स्थापित स्मृति या कुल मेमोरी उपलब्ध है? –

9

मैं भविष्य में संदर्भ में लोगों के लिए इसका एक नोट बनाना चाहता हूं।

मैं डब्लूएमआई से बचना चाहता था क्योंकि यह डीसीओएम प्रोटोकॉल का उपयोग करता है, जिसके लिए रिमोट कंप्यूटर की आवश्यक अनुमतियां होती हैं, जो केवल उस दूरस्थ कंप्यूटर पर मैन्युअल रूप से सेटअप की जा सकती है।

तो, मैं डब्लूएमआई का उपयोग करने से बचना चाहता था, लेकिन अक्सर काउंटर-काउंटर का उपयोग करने से प्रदर्शन काउंटर नहीं था।

मेरे द्वारा उपयोग किया जाने वाला समाधान सामान्य सूचना मॉडल (सीआईएम) था। डब्लूएमआई के विपरीत, सीआईएम डिफ़ॉल्ट रूप से डीसीओएम का उपयोग नहीं करता है। WMI ऑब्जेक्ट्स लौटने के बजाय, सीआईएम cmdlets PowerShell ऑब्जेक्ट्स लौटाता है।

सीआईएम डिफ़ॉल्ट रूप से WS-MAN प्रोटोकॉल का उपयोग करता है, लेकिन यह केवल उन कंप्यूटरों के साथ काम करता है जिनके पास Ws-Man 3.0 या बाद में पहुंच है। तो, PowerShell के पुराने संस्करण सीआईएम cmdlets जारी करने में सक्षम नहीं होंगे।

cmdlet मैं कुल भौतिक स्मृति आकार पाने के लिए का उपयोग कर समाप्त हो गया था:

get-ciminstance -class "cim_physicalmemory" | % {$_.Capacity} 
+1

यदि मशीन में कई रैम बैंक स्थापित हैं, तो आपका आदेश एक सूची लौटाएगा। निम्नलिखित में कुल दिखाया जाएगा: '(Get-CimInstance -ClassName 'Cim_PhysicalMemory' | माप-ऑब्जेक्ट-प्रॉपर्टी क्षमता -सम) .um' –

+0

मैंने 'गेट-सीमइन्स्टेंस' को 'माप-WmiObject' के साथ अच्छी माप के लिए बदल दिया –

4

ईद कहना है कि बजाय systeminfo के साथ जा रहा से इस पर मदद मिलेगी जीबी की मशीन में कुल भौतिक स्मृति प्राप्त करना चाहते

Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum | Foreach {"{0:N2}" -f ([math]::round(($_.Sum/1GB),2))} 

आप चर को यह मान पास और मशीन में कुल भौतिक स्मृति के लिए कुल उत्पादन प्राप्त कर सकते हैं

$totalmemory = Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum | Foreach {"{0:N2}" -f ([math]::round(($_.Sum/1GB),2))} 
    $totalmemory 
0

उसके बाद वाला दिन और उम्र और एक एक काम कर समाधान से यहाँ आने वाले लोगों के लिए:

(Get-WmiObject -class "cim_physicalmemory" | Measure-Object -Property Capacity -Sum).Sum 

इस बाइट की कुल राशि दे देंगे।

$bytes = (Get-WmiObject -class "cim_physicalmemory" | Measure-Object -Property Capacity -Sum).Sum 

$kb = $bytes/1024 
$mb = $bytes/1024/1024 
$gb = $bytes/1024/1024/1024 

मैं इस 6 winver Windows Server 2008 अप करने के लिए परीक्षण किया (।0) यहां तक ​​कि यह आदेश काम करता है

संबंधित मुद्दे