Como automatizar a limpeza de memoria ram em cache no RAMMAP

Matheus Mohr 0 Pontos de reputação
2024-11-27T20:41:40.22+00:00

Olá, estou tentando criar uma automatização para executar o RAMMap (Sysinternals) com o argumento -Et, que limpa a memória RAM em cache, sem precisar abrir o aplicativo manualmente. Planejo implementar isso por meio do Microsoft Intune, mas encontrei problemas ao usar o Agendador de Tarefas do Windows para configurar essa execução automática.

Mesmo configurando a tarefa corretamente com o argumento -Et, ela não funciona como esperado. Meu script cria a tarefa agendada, mas parece que o RAMMap não é executado com o argumento.

Segue o código que utilizei para criar a tarefa:

# Configurações iniciais
$DownloadUrl = "https://live.sysinternals.com/RAMMap.exe"  # URL do RAMMap
$DestinationPath = "C:\RAMMap"  # Pasta destino
$RAMMapPath = Join-Path -Path $DestinationPath -ChildPath "RAMMap.exe"

# Cria a pasta de destino, se não existir
if (-not (Test-Path -Path $DestinationPath)) {
    New-Item -Path $DestinationPath -ItemType Directory -Force | Out-Null
}

# Baixa o RAMMap.exe
Write-Host "Baixando o RAMMap.exe..."
Invoke-WebRequest -Uri $DownloadUrl -OutFile $RAMMapPath -UseBasicParsing
if (-not (Test-Path -Path $RAMMapPath)) {
    Write-Error "Falha ao baixar o RAMMap.exe. Verifique a URL ou a conexão de rede."
    exit 1
}

Write-Host "RAMMap.exe baixado com sucesso para $RAMMapPath"

# Comando que será executado pela tarefa agendada
$action = New-ScheduledTaskAction -Execute $RAMMapPath -Argument "-Et"

# Configuração de disparador para repetir a cada 10 minutos, por tempo indeterminado
$repetitionTrigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 10) -Once -At (Get-Date).AddMinutes(1)

# Configuração de execução com privilégios elevados, sem a condição de ociosidade
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable

# Adiciona a configuração para execução com privilégios elevados (administração)
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

# Registra a tarefa agendada
Register-ScheduledTask -TaskName "Clear Standby Memory" -Action $Action -Trigger $repetitionTrigger -Settings $Settings -Principal $Principal -Force
Write-Host "Tarefa agendada criada com sucesso! Ela começará imediatamente, se repetirá a cada 10 minutos."

 

Problema:

  • A tarefa é criada, mas o RAMMap não executa corretamente com o argumento -Et.
  • Quero aplicar essa configuração via Intune e garantir que a limpeza da memória RAM ocorra automaticamente.

Como posso corrigir esse problema para que o RAMMap seja executado corretamente com o argumento -Et? Existe alguma configuração extra ou alternativa recomendada?

Microsoft Q&A
Microsoft Q&A
Use esta marca para compartilhar sugestões, solicitações de recursos e bugs com a equipe de perguntas e respostas da Microsoft. A equipe de perguntas e respostas da Microsoft avaliará seus comentários regularmente e fornecerá atualizações eventuais.
279 perguntas
0 comentários Sem comentários
{count} votos

1 resposta

Classificar por: Mais útil
  1. Jonathan Pereira Castillo 9,965 Pontos de reputação Fornecedor da Microsoft
    2024-11-27T23:00:21.6633333+00:00

    Oi Matheus Mohr!

    Bem-vindo ao Microsoft Q&A!

    Parece que você está enfrentando dificuldades para automatizar a execução do RAMMap com o argumento -Et usando o Agendador de Tarefas do Windows. Vamos tentar resolver isso.

    Aqui estão alguns passos para garantir que o RAMMap seja executado corretamente com o argumento -Et:

    Verifique o Caminho do Executável: Certifique-se de que o caminho para o executável do RAMMap está correto e acessível. Você pode testar manualmente executando o comando no PowerShell:

    & "C:\RAMMap\RAMMap.exe" -Et
    

    Permissões e Privilégios: Verifique se a tarefa agendada está configurada para ser executada com privilégios elevados. Isso é crucial para que o RAMMap tenha as permissões necessárias para limpar a memória.

    Log de Erros: Adicione um log para capturar qualquer erro que possa ocorrer durante a execução da tarefa. Isso pode ajudar a identificar o problema:

    $action = New-ScheduledTaskAction -Execute $RAMMapPath -Argument "-Et" -ErrorAction SilentlyContinue -ErrorVariable err
    if ($err) {
    Write-Error "Erro ao executar RAMMap: $err"
    }
    

    Script Atualizado: Aqui está uma versão atualizada do seu script com algumas melhorias:

       # Configurações iniciais
    $DownloadUrl = "https://live.sysinternals.com/RAMMap.exe"  # URL do RAMMap
    $DestinationPath = "C:\RAMMap"  # Pasta destino
    $RAMMapPath = Join-Path -Path $DestinationPath -ChildPath "RAMMap.exe"
    
    # Cria a pasta de destino, se não existir
    if (-not (Test-Path -Path $DestinationPath)) {
        New-Item -Path $DestinationPath -ItemType Directory -Force | Out-Null
    }
    
    # Baixa o RAMMap.exe
    Write-Host "Baixando o RAMMap.exe..."
    Invoke-WebRequest -Uri $DownloadUrl -OutFile $RAMMapPath -UseBasicParsing
    if (-not (Test-Path -Path $RAMMapPath)) {
        Write-Error "Falha ao baixar o RAMMap.exe. Verifique a URL ou a conexão de rede."
        exit 1
    }
    
    Write-Host "RAMMap.exe baixado com sucesso para $RAMMapPath"
    
    # Comando que será executado pela tarefa agendada
    $action = New-ScheduledTaskAction -Execute $RAMMapPath -Argument "-Et"
    
    # Configuração de disparador para repetir a cada 10 minutos, por tempo indeterminado
    $repetitionTrigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 10) -Once -At (Get-Date).AddMinutes(1)
    
    # Configuração de execução com privilégios elevados, sem a condição de ociosidade
    $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
    
    # Adiciona a configuração para execução com privilégios elevados (administração)
    $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
    
    # Registra a tarefa agendada
    Register-ScheduledTask -TaskName "Clear Standby Memory" -Action $action -Trigger $repetitionTrigger -Settings $settings -Principal $Principal -Force
    Write-Host "Tarefa agendada criada com sucesso! Ela começará imediatamente, se repetirá a cada 10 minutos."
    

    Testar Manualmente: Antes de registrar a tarefa, teste o comando manualmente no PowerShell para garantir que o RAMMap está funcionando corretamente com o argumento -Et.

    Documentação e Recursos: Consulte a documentação oficial do RAMMap e do Agendador de Tarefas para verificar se há alguma configuração adicional necessária.

    Espero que essas sugestões ajudem a resolver o problema. Se precisar de mais assistência, estou à disposição!

    RAMMap - Sysinternals

    Espero que essas dicas ajudem a resolver o problema! Se precisar de mais assistência, estou à disposição.

    Saudações

    Jonathan.

    -----------

    Sua opinião é muito importante para nós! Se esta resposta resolveu sua consulta, por favor clique em ‘YES‘. Isso nos ajuda a melhorar continuamente a qualidade e relevância de nossas soluções. Obrigado pela sua colaboração!

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como Respostas Aceitas pelo autor da pergunta, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.