none
Alterar memoria Virtual do windows XP RRS feed

  • Pergunta

  • Pessoal bom dia !

    Preciso criar um scrip.vbs para que seja alterada a memoria swap do windows.O que acontece eh que trabalho em um empresa grande e com servidor de dominio e precisava que ao efetuar o logon , todas as maquinas que logan no dominio , tivessem suas memorias swap alteradas.Manualmente falando , eu clico com o botao direito em /Meu computador/propriedades/avancado e em avancado clico em configuracoes ai clico na aba avancado de novo.Em memoria virtual clico em alterar e ai altero o tamanho maximo da memoria e o tamanho inicial para um valor que eu desejo.Caso eu consiga criar um .vbs para executar isso, conseguirei resolver o problema de 400 maquinas.

    Obs WinXP

    Muito obrigado.
    quarta-feira, 8 de outubro de 2008 11:22

Todas as Respostas


  • Tamanho em MB

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set colPageFiles = objWMIService.ExecQuery _
        ("Select * from Win32_PageFileSetting")

    For Each objPageFile in colPageFiles
        objPageFile.InitialSize = 300
        objPageFile.MaximumSize = 600
        objPageFile.Put_
    Next


    quarta-feira, 8 de outubro de 2008 15:21
    Moderador
  • Filipe bom dia !

    Perfeito o Script , funcionou mesmo e ja estou fazendo um laboratorio para alterar todas as maquinas , porem uma coisa me preocupa , pois nos testes que fiz , a memoria so eh alterada se o usuario for administrador , ou se o usuario em questao for admin......

    O problema eh que este script ira para um server de dominio , e alterara em media umas 400 maquinas e voce sabe se existe uma forma de mesmo os usuarios comuns conseguirem ter suas memorias alteradas pelo script?
    sexta-feira, 10 de outubro de 2008 12:34
  •  

    Vc pode colocar ele em uma gpo, os scripts de gpo são executados com a conta de sistema, deve funcionar.

     

     

    sexta-feira, 17 de outubro de 2008 11:28
    Moderador
  • Boa tarde !

    Teria como alterar este script para que ele leia a memoria fisica da maquina e depois multiplique ela por 1.5 que eh a recomendacao da microsft .

    Exemplo ;

    se a maquina tem 1 GB de Ram , ele ira colocar como swap 2.5 GB  eh possivel ??

    Abracos !
    sexta-feira, 24 de outubro de 2008 18:46

  • Cara...

    Sim, mas isso não tem grande influência..

    O que faz o swap dar uma melhorada de performance é colocar o tamanho de forma constante.. tipo

    incial: 2000 (2gb)
    fimal: 2000

    Assim ele mantém um tamanho só, não fica desfragmentando sempre que diminui e não tem que redimensionar pra aumentar, isso que faz uma certa diferença..

    Mas se vc tiver só metade do tamanho da memória ele funciona igual, vc não sente diferença.

    segunda-feira, 27 de outubro de 2008 10:59
    Moderador
  • Seguinte pessoal , cheguei a uma conclusao com o pessoal aqui da empresa .

    Preciso que o script faça o seguinte;

    Verifique se existe a bat no seguinte caminho;

    c:\programmi\apl\portal\portal.bat   , se existe esta bat entao o script devera fazer o seguinte;

    (Caso a bat nao exista , o script nao devera fazer nada)
    se existir swap para outras unidades como d: e: , deverao ser todas deletadas

    se memo ram = 512  ==>  1.5 GB de swap

    se memo ram = 1.0 GB ==> 2.5 GB de Swap

    se memo ram = 1.5 GB ==> 4090 GB de Swap

    se memo ram >= 2GB ==>  4090 de swap ...

    Bom eh isto que eu preciso apos varias reunioes .

    Sei que estas regras fogem ao que a microsoft recomenda , mas trata-se de uma excessao para auma aplicacao .e preciso que seja feito assim ....


    Obrigado.

     
    quinta-feira, 30 de outubro de 2008 12:22
  •  

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")

    Set colPageFiles = objWMIService.ExecQuery("Select * from Win32_PageFileSetting")

     

    if fs.FileExists("c:\programmi\apl\portal\portal.bat") then

    For Each objPageFile in colPageFiles

    For Each objComputer in colSettings

    memorys = int((objComputer.TotalPhysicalMemory) /1048576)+1
    if  memorys >=512 and memorys <=999 and then

        objPageFile.InitialSize = 1500
        objPageFile.MaximumSize = 1500

        objPageFile.Put_

    elseif memorys >=1000 and memorys <=1499 then

        objPageFile.InitialSize = 2500
        objPageFile.MaximumSize = 2500

        objPageFile.Put_

    elseif memorys >=1500 then

        objPageFile.InitialSize = 4090
        objPageFile.MaximumSize = 4090
        objPageFile.Put_

    end if

    Next

    end if

    quinta-feira, 30 de outubro de 2008 13:55
    Moderador
  • Filipe , so uma pergunta ...


    Que parte do script que deleta memoria de paginacao para outras unidades ??

    Ex ...

    se tiver paginacao para outras unidades , como d:  e:    a memoria devera ser apagada.

    Que parte do script faz isso ?

    E este script podera rodar via GPO tambem , nao podera ??

    Abracos
    quinta-feira, 30 de outubro de 2008 17:35
  • Filipe, uma outra questao ;

    Renomei o arquivo para .vbs e executei, porem deu o seguinte erro;

    Windows Script Host
    script:      c:\script.vbs
    Line :        20
    Char:        41
    Error:        Syntax error
    Code:        800A03EA
    Source:     Microsoft VBScript Compilation Error


    Bom , pelo que me parece existe algum erro de sintaxe...

    O que pode ser ??

    Abracos ..
    quinta-feira, 30 de outubro de 2008 17:55
  • Testa esse aqui..

     

    Code Snippet

    strComputer = "."
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    Set colPageFiles = objWMIService.ExecQuery("Select * from Win32_PageFileSetting")

    if fs.FileExists("c:\programmi\apl\portal\portal.bat") then
     For Each objComputer in colSettings
      For Each objPageFile in colPageFiles
       memorys = int((objComputer.TotalPhysicalMemory) /1048576)+1
       if  memorys >=512 and memorys <=999 then
           objPageFile.InitialSize = 1500
           objPageFile.MaximumSize = 1500
           objPageFile.Put_
       elseif memorys >=1000 and memorys <=1499 then
           objPageFile.InitialSize = 2500
           objPageFile.MaximumSize = 2500
           objPageFile.Put_
       elseif memorys >=1500 then
           objPageFile.InitialSize = 4090
           objPageFile.MaximumSize = 4090
           objPageFile.Put_
       end if
       if instr(lcase(objPageFile.Name),"d:")<>0 then
        objPageFile.Delete_
       end if
      Next
     Next
    end if

     

     

     

    sexta-feira, 31 de outubro de 2008 10:17
    Moderador