haiopai
Goto Top

Batch bzw. Script grösse Arbeitsspeicher auslesen und Pagefile anpassen

Hallo zusammen

Ich habe hier folgende Problematik bei der ich nicht weiterkomme.
Wir haben im Unternehmen 3 Notebook-Klassen mit 512 MB / 1024 MB und 2048MB RAM

Unseren Notebooks der 512 MB Klasse soll nun das Pagefile auf den 4 fachen Wetr (2048 MB) angepasst werden, da es sich hier aber um mehrere Standorte handelt, soll das ganze mit einem Script (VBS) oder einem Batchfile durchgeführt werden.

Da ich nun nicht grade bewandert mit VBS bin scheitere ich hier schon mal,.
Batchen geht ein bisschen ich bekomme den Physikalischen RAM mit

call systeminfo | findstr /C:"Gesamter physikalischer Speicher" ausgelesen

die Änderung würde ich mit

REG ADD "\HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles /t REG_MULTI_SZ /d "d:\pagefile.sys 2048 2048"

durchführen, nur wie bekomme ich das hin, das er es nur bei einer RAM Grösse kleiner als z.B 520 MB durchführt ?

Könntet ihr mir hier einmal auf die Sprünge helfen mit der Übergabe vom Call zum REG ADD, bzw. habt ihr eine Möglichkeit via VBS für mich ?

Ich sage schon mal danke im Voraus.

Gruss Marc

Content-Key: 108606

Url: https://administrator.de/contentid/108606

Printed on: April 16, 2024 at 16:04 o'clock

Member: paulepank
paulepank Feb 10, 2009 at 16:27:47 (UTC)
Goto Top
Hallo,

wenn du deine Lösungsansätze weiterführen willst geht es so in einer Batch
for /f %%i in ('systeminfo^|findstr Gesamter^|findstr /v "\."') do REG ADD "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles /f /t REG_MULTI_SZ /d "d:\pagefile.sys 2048 2048"  

Erklärung:Es wird überprüft, ob es eine Zeile gibt, die Gesamter aber keinen Punkt enthält.
Das bedeutet RAM<1000 MB und damit kann REG .... ausgeführt werden.
Deine REG-Anweisung habe ich korrigiert. Vergleiche deine und meine !
Einen Restart solltest du noch in die Batch einbauen.

Ich sage schon mal danke im Voraus.
Das wird hier nicht gern gelesen. Wir legen Wert auf Feedback.

cu paulepank
Mitglied: 60730
60730 Feb 10, 2009 at 22:12:03 (UTC)
Goto Top
Servus,

auch wenn dir Paulepank schon eine fix und fertige Batch zur Verfügung gestellt hat....

Bedenke, was du da tust, das vorhaben ist mehr als fragwürdig.

Google einfach mal zwei Sachen heraus:

  • Windows Auslagerungsdatei optimal / oder je nach belieben
  • Hersteller deines Notebooks und dessen Typ Ram Preis

"zwischen 1.5 und 2 facher Größe des echten Rams" - das ist seit ca. 10? Jahren der std. Satz, den einem jeder MCxyzT herunterbetet. Und da sich das schon so lange gehalten hat, wird was dran sein face-wink

Ergo - kauf Ram für die Notebooks - auch wenn du denkst, per Pagefile gehts auch.

Gruß
Member: Haiopai
Haiopai Feb 11, 2009 at 06:48:53 (UTC)
Goto Top
Hallo Paulepank

Habe dein Script an einer stelle noch angepasst

##blue¦for /f %%i in ('systeminfo^|findstr Gesamter^|findstr /v "\'"')##

habe den Punkt durch ein Hochkomma ersetzt und nun funktioniert es.

Hier auch nochmal eine VBS Lösung

' Konfiguration des Pagefiles

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(CreatePagefile)}")
Set colPhysicalMemory = objWMIService.ExecQuery("SELECT Capacity FROM Win32_PhysicalMemory")

intMemorySize = 0
For Each objItem In colPhysicalMemory
intMemorySize = intMemorySize + objItem.Capacity/1024/1024
Next

If intMemorySize = 512 Then

Set objShell = CreateObject("Wscript.Shell")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")

objShell.LogEvent 4, WScript.ScriptName & ": 512MB RAM gefunden - Pagefile anpassen"

' D:\pagefile.sys erstellen
Set objPageFileClass = objWMIService.Get("Win32_PageFile")
Set objPageFileD = objPageFileClass.SpawnInstance_(0)
objPageFileD.Name = "D:\pagefile.sys"
objPageFileD.InitialSize = 2048
objPageFileD.MaximumSize = 2048
objPageFileD.Put_

' Versuche C:\pagefile.sys zu löschen, falls D:\pagefile.sys existiert
If objFileSystem.FileExists("D:\pagefile.sys") Then
On Error Resume Next
Set objPageFileC = objWMIService.Get("Win32_PageFileSetting='C:\pagefile.sys'")
objPageFileC.Delete_
objFileSystem.DeleteFile("C:\pagefile.sys")
On Error Goto 0
End If
End If

Habe gestern Abend noch diese Variante erhalten.

@Timo

Du hast schon Recht mit der Aussage nur bedenke RAM ist für dich günstig du gehst in kaufen und baust ihn ein, bei uns wäre das ein Rollout in einer ziemlichen Grössenordung wo ne 1/2 Mio schnell erreicht wäre an Kosten. Mein Rat war auch dementsprechend, aber wenn der Kunde dieses nicht will und ein PL mit dieser Vorgabe kommt kannste net viel machen Ich wäre einen ähnlichen Weg gegangen.

Gruss Marc
Mitglied: 60730
60730 Feb 11, 2009 at 08:43:15 (UTC)
Goto Top
Servus Marc,

es ist ja nicht so, das Hier einmal eine Frage gestellt wird - die für denjenigen gelöst wird - der die Frage gestellt hat.
Auch spätere Besucher kommen irgenwann (vielleicht) und sehen "ahh so geht das also...."

Und wegen "ich geh kaufen" - eher weniger - seit wann kommt der Baum zum Hund?

Wir machen gerade ein Rollout von Notebooks, da ist auch gerade eine viertel 1/2 Mio über den Tresen gewandert, aber da war bei dem Notebookspeicher auch ein Notebook dabei.

Ich bin mir sehr sicher, dass die Umschichtung nicht wirklich etwas bringt - und da es dann halt so ist, wie es scheint....

Gruß
Member: Haiopai
Haiopai Feb 11, 2009 at 08:54:21 (UTC)
Goto Top
Servus Timo

Du ich gebe dir auch hier recht es wird nicht das bringen was benötigt wird, es ist halt Beschlossen von oben und wird nun umgesetzt, auch auf unser zureden wurde dieses net verändert.

Die Massnahme die ich mir vorgestellt hätte wäre Erweiterung des RAM's, Reduzierung reservierter Kernelspeicher im RAM, alles unnötige abdrehen usw, um die Performance zu verbessern.

Gruss

Marc
Member: paulepank
paulepank Feb 11, 2009 at 09:04:26 (UTC)
Goto Top
Hallo Marc,

auch wenn der Thread als gelöst markiert ist - deine Aussage
habe den Punkt durch ein Hochkomma ersetzt und nun funktioniert es.
kann ich so nicht stehen lassen, da falsch.

In der Zeile, die Gesamter enthält wirst du nie ein Hochkomma finden,d.h die REG-Anweisung wird immer (egal wieviel RAM) ausgeführt und das ist ja nicht gewollt.
Sofern meine Codezeile bei dir nicht funktioniert hat, liegt es bei einer fehlerhaften Umsetzung oder du hast sie falsch herauskopiert. Da du für dich jetzt eine Lösung gefunden hast, will ich das jetzt nicht weiter ausdiskutieren.

cu paulepank
Member: Haiopai
Haiopai Feb 11, 2009 at 10:19:01 (UTC)
Goto Top
Servus Paulepank

Wenn ich bei mir eine Abfrage mache auf den Arbeitsspeicher ( Notebook > 1GB RAM ) mit

call systeminfo | findstr /C:"Gesamter physikalischer Speicher" > d:\speicher.txt

Bekomme ich die Ausgabe in der Datei

Gesamter physikalischer Speicher: 2'022 MB

Damit würde eine Abfrage auf den Punkt nicht wirken, da keiner vorhanden ist, sondern nur eben das Hochkomma.

Aus diesem Grunde habe ich geschwenkt, hatte dein Script auf beiden Typen von Systemen ausprobiert via cmd File und erst der Schwenk auf das Hochkomma brachte den gewünschten Erfolg.

Gruss Marc
Member: paulepank
paulepank Feb 11, 2009 at 13:13:01 (UTC)
Goto Top
Hallo ,

dann ist die Anpassung allerdings richtig.
Jetzt werde ich doch neugierig. Bei welchem Betriebssystem mit welcher Sprache wird so etwas ausgeben ?

EDIT: ok, ihr habt am Symbol für die Zifferngruppierung rumgespielt face-smile

cu paulepank
Member: Haiopai
Haiopai Feb 11, 2009 at 13:45:21 (UTC)
Goto Top
Servus Paulepank

Betriebssystem ist Windows XP Prof Sprache Deutsch(CH)

Gruss Marc
Member: paulepank
paulepank Feb 11, 2009 at 14:01:16 (UTC)
Goto Top
habe den Punkt durch ein Hochkomma ersetzt und nun funktioniert es.

weil

Betriebssystem ist Windows XP Prof Sprache Deutsch(CH)

hättest du das als Grund erwähnt, hätten wir uns alle anderen Threads ersparen können.

viel Erfolg bei dem von Oben beschlossenen Projekt, das so gut wie nichts bringt.

cu paulepank