Ini lebih akurat untuk menggunakan Kapasitas properti dari Win32_PhysicalMemory dari WMI, daripada menggunakan TotalPhysicalMemory properti dari Win32_ComputerSystem . Yang telah dibilang...
Untuk mengingatkan pengguna, Anda mungkin ingin semacam pesan sembulan. VBScript di bawah ini dapat digunakan sebagai skrip login pengguna, baik dalam GPO domain Anda atau menggunakan editor Kebijakan Grup lokal ( gpedit.msc
). Script harus disimpan dengan a .vbs
perpanjangan.
Option Explicit
Const TargetGBMemory = 4
Dim wmi
Dim physicalMemory
Dim mem
Dim resultsReturned
Dim totalMem
Set wmi = GetObject("winmgmts:\root\cimv2")
Set physicalMemory = wmi.ExecQuery ("SELECT Capacity FROM Win32_PhysicalMemory")
resultsReturned = False
On Error Resume Next
Err.Clear
mem = physicalMemory.Count
resultsReturned = CBool(Err.Number = 0)
Err.Clear
On Error Goto 0
totalMem = 0
If resultsReturned Then
For Each mem In physicalMemory
If Not IsNull(mem.Capacity) Then
totalMem = CDbl(mem.Capacity)
End If
Next
End If
Set physicalMemory = Nothing
Set wmi = Nothing
If ((totalMem / (2 ^ 30)) < TargetGBMemory) Then
WScript.Echo "Something happened to your memory. You only have", FormatNumber(totalMem / (2 ^ 30)), "GB."
End If
Untuk ide file log, Anda mungkin tidak ingin sembulan. Cukup tulis ke file dan diam. Anda dapat menggunakan skrip di bawah ini dengan cara yang sama, tetapi Anda ingin skrip startup mesin di domain atau Kebijakan Grup lokal. Script menulis file bernama "memory_log.txt"
dalam folder Sistem. Secara default, area ini hanya dapat ditulis oleh admin. Pengguna akan dapat melihat file log dan membacanya, tetapi mereka tidak bisa menghapus atau memodifikasinya. Script harus disimpan dengan a .wsf
perpanjangan.
<package>
<job>
<object id="fso" progid="Scripting.FileSystemObject" />
<reference object="Scripting.FileSystemObject" />
<script language="VBScript">
Option Explicit
Const TargetGBMemory = 4
Dim wmi
Dim physicalMemory
Dim mem
Dim resultsReturned
Dim totalMem
Set wmi = GetObject("winmgmts:\root\cimv2")
Set physicalMemory = wmi.ExecQuery ("SELECT Capacity FROM Win32_PhysicalMemory")
resultsReturned = False
On Error Resume Next
Err.Clear
mem = physicalMemory.Count
resultsReturned = CBool(Err.Number = 0)
Err.Clear
On Error Goto 0
totalMem = 0
If resultsReturned Then
For Each mem In physicalMemory
If Not IsNull(mem.Capacity) Then
totalMem = CDbl(mem.Capacity)
End If
Next
End If
Set physicalMemory = Nothing
Set wmi = Nothing
If ((totalMem / (2 ^ 30)) < TargetGBMemory) Then
Dim ts
Set ts = fso.OpenTextFile (fso.BuildPath (fso.GetSpecialFolder(SystemFolder), "memory_log.txt"), ForAppending, True)
ts.Write Now
ts.Write vbTab
ts.WriteLine "Something happened to your memory. You only have " & FormatNumber(totalMem / (2 ^ 30)) & " GB."
ts.Close
Set ts = Nothing
End If
</script>
</job>
</package>