Como usar o comando eventvwr para gerenciar logs de eventos no Windows

 O comando eventvwr é uma ferramenta integrada do Windows que permite visualizar e gerenciar os logs de eventos do sistema. Ele é uma ferramenta muito útil para diagnóstico de problemas do sistema operacional, incluindo falhas de hardware, software e de segurança.


Sintaxe:

eventvwr [/s computer] [/c command] [/l logname] [/f file] [/e eventtype] [/u username] [/p password] [/d domain] [/q]

Opções:

  • /s computer: Especifica o nome ou endereço IP do computador remoto cujos logs de eventos você deseja exibir.
  • /c command: Executa um comando em um arquivo de log de eventos.
  • /l logname: Especifica o nome do arquivo de log de eventos que você deseja exibir.
  • /f file: Salva a saída em um arquivo de log.
  • /e eventtype: Especifica o tipo de evento que você deseja exibir.
  • /u username: Especifica o nome de usuário para autenticação no computador remoto.
  • /p password: Especifica a senha do usuário para autenticação no computador remoto.
  • /d domain: Especifica o nome do domínio para autenticação no computador remoto.
  • /q: Executa o comando sem exibir mensagens de saída.

Exemplo:
eventvwr /l System

Nenhum comentário:

Como usar o comando driverquery para visualizar informações sobre drivers no Windows

 O comando driverquery é uma ferramenta útil para visualizar informações sobre drivers instalados no sistema operacional Windows. Ele permite obter informações detalhadas sobre todos os drivers instalados, incluindo o nome, descrição, data e hora de criação, versão, fabricante e muito mais.


Sintaxe:

driverquery [/v] [/si] [/fo {TABLE|LIST|CSV}] [/nh]

Opções:

  • /v: Exibe informações adicionais sobre os drivers, incluindo detalhes sobre os arquivos de driver e serviços associados.
  • /si: Exibe informações sobre a assinatura digital dos drivers.
  • /fo {TABLE|LIST|CSV}: Especifica o formato de saída da lista de drivers. Os formatos disponíveis são: TABLE (tabela), LIST (lista) e CSV (valores separados por vírgula).
  • /nh: Suprime a exibição de cabeçalhos de coluna na lista de drivers.
Exemplo:
driverquery /v /si /fo list
Este comando exibe informações detalhadas sobre todos os drivers instalados no sistema em formato de lista.
Nenhum comentário:

Como usar o comando DISM para gerenciar imagens do sistema no Windows

O comando dism (Deployment Image Servicing and Management) é uma ferramenta poderosa do Windows para gerenciamento de imagens e manutenção do sistema operacional. Ele pode ser usado para realizar diversas tarefas, como reparação de arquivos corrompidos, adição ou remoção de pacotes de recursos e drivers, além de ser utilizado para criar imagens de instalação personalizadas.


Sintaxe básica:

dism.exe /option

Opções mais comuns:

/online: Especifica que a imagem do sistema atualmente em execução será gerenciada.
/image: Especifica o caminho da imagem do sistema que será gerenciada.
/cleanup-image: Realiza a limpeza de componentes não utilizados e reduz o tamanho da imagem do sistema.
/restorehealth: Verifica a integridade da imagem do sistema e realiza reparos necessários.
/get-packages: Exibe uma lista de todos os pacotes instalados na imagem do sistema.
/add-package: Adiciona um pacote à imagem do sistema.
/remove-package: Remove um pacote da imagem do sistema.
/add-driver: Adiciona um driver à imagem do sistema.
/remove-driver: Remove um driver da imagem do sistema.

Exemplo:
dism.exe /online /cleanup-image /restorehealth
Este comando verifica a integridade da imagem do sistema atualmente em execução e realiza as reparações necessárias.
Nenhum comentário:

Como usar o comando comp para comparar arquivos no Windows 10

 Com o comando comp, é possível comparar o conteúdo de dois arquivos ou conjuntos de arquivos. Ele é uma ferramenta muito útil para verificar se duas versões de um arquivo estão diferentes, por exemplo.


Sintaxe:

comp [drive1:][path1]filename1 [drive2:][path2]filename2 [/d] [/a] [/l] [/n=number] [/c]

Opções:

  • [drive1:][path1]filename1: Especifica o caminho e nome do primeiro arquivo ou conjunto de arquivos a serem comparados.
  • [drive2:][path2]filename2: Especifica o caminho e nome do segundo arquivo ou conjunto de arquivos a serem comparados.
  • /d: Realiza uma comparação binária de arquivos. A comparação padrão é baseada em texto.
  • /a: Exibe todos os caracteres diferentes entre os arquivos, em vez de apenas exibir os caracteres diferentes nas linhas correspondentes.
  • /l: Exibe apenas os números das linhas em que os arquivos são diferentes.
  • /n=number: Compara os primeiros number linhas de cada arquivo.
  • /c: Ignora diferenças de maiúsculas e minúsculas.

Exemplo:
comp C:\file1.txt D:\file2.txt
Este comando compara o conteúdo dos arquivos file1.txt em C:\ e file2.txt em D:\.
Nenhum comentário:

Como Usar o Comando Chkdsk no Windows 10 para Verificar e Corrigir Problemas no Disco Rígido

O comando chkdsk é usado no Windows 10 para verificar e corrigir problemas no disco rígido. Ele é útil quando você precisa corrigir erros de setores defeituosos, setores não utilizados ou problemas de arquivos em um disco rígido. Neste post, vamos explicar como usar o comando chkdsk para verificar e corrigir problemas no disco rígido no Windows 10.

Passo 1: Abrir o Prompt de Comando

Para usar o comando chkdsk, primeiro você precisa abrir o Prompt de Comando. Para fazer isso, clique no menu Iniciar e digite "Prompt de Comando" na caixa de pesquisa. Clique com o botão direito do mouse em "Prompt de Comando" nos resultados da pesquisa e selecione "Executar como administrador".

Passo 2: Verificar o Disco Rígido

Para verificar o disco rígido em busca de erros, digite "chkdsk" seguido do nome da unidade que você deseja verificar no Prompt de Comando e pressione Enter. Por exemplo, se você quiser verificar a unidade C:, digite "chkdsk C:" e pressione Enter.

O Windows iniciará a verificação e exibirá uma lista de erros encontrados, se houver. Se o Windows encontrar erros, ele tentará corrigi-los automaticamente.

Passo 3: Verificar e Corrigir Erros

Para verificar e corrigir erros no disco rígido, use as opções apropriadas. As opções disponíveis incluem:

  • /f: corrige erros encontrados no disco rígido.
  • /r: localiza setores defeituosos e recupera informações legíveis.
  • /x: força o desmonte do volume antes da verificação.

Por exemplo, para verificar e corrigir erros na unidade C:, digite "chkdsk C: /f" no Prompt de Comando e pressione Enter. Se a unidade estiver em uso, você será solicitado a agendar uma verificação na próxima vez que o computador for reiniciado.


Observação: a verificação e correção de erros no disco rígido pode levar um tempo considerável, especialmente se houver muitos erros a serem corrigidos. Certifique-se de fazer backup de seus arquivos importantes antes de executar o comando chkdsk.

Nenhum comentário:

Como Usar o Comando Attrib no Windows 10 para Modificar Atributos de Arquivo

O comando attrib é usado no Windows 10 para exibir ou modificar os atributos de um arquivo. Ele é útil quando você precisa alterar as permissões de acesso, ocultar ou mostrar arquivos ou remover a atribuição de somente leitura de um arquivo. Neste post, vamos explicar como usar o comando attrib para modificar atributos de arquivo no Windows 10.

Passo 1: Abrir o Prompt de Comando

Para usar o comando attrib, primeiro você precisa abrir o Prompt de Comando. Para fazer isso, clique no menu Iniciar e digite "Prompt de Comando" na caixa de pesquisa. Clique com o botão direito do mouse em "Prompt de Comando" nos resultados da pesquisa e selecione "Executar como administrador".

Passo 2: Exibir os Atributos de um Arquivo

Para exibir os atributos de um arquivo específico, digite "attrib" seguido do caminho completo do arquivo no Prompt de Comando e pressione Enter. O Windows exibirá os atributos do arquivo, incluindo se ele é somente leitura, oculto ou de sistema.

Passo 3: Modificar os Atributos de um Arquivo

Para modificar os atributos de um arquivo, use o comando attrib seguido das opções apropriadas. As opções disponíveis incluem:

  • +r: adiciona o atributo de somente leitura ao arquivo.
  • -r: remove o atributo de somente leitura do arquivo.
  • +h: adiciona o atributo de arquivo oculto ao arquivo.
  • -h: remove o atributo de arquivo oculto do arquivo.
  • +s: adiciona o atributo de arquivo de sistema ao arquivo.
  • -s: remove o atributo de arquivo de sistema do arquivo.

Por exemplo, para adicionar o atributo de somente leitura a um arquivo chamado "exemplo.txt", digite "attrib +r exemplo.txt" no Prompt de Comando e pressione Enter. Para remover o atributo de somente leitura, digite "attrib -r exemplo.txt" no Prompt de Comando e pressione Enter.


Observação: tenha cuidado ao modificar os atributos de arquivo, pois isso pode afetar o funcionamento de programas que usam esses arquivos.

Nenhum comentário:

Unable to find a volume that is suitable for staging the boot image. Element not found. (Error: 80070490; Source: Windows)

  • Unable to find a volume that is suitable for staging the boot image. Element not found. (Error: 80070490; Source: Windows)
  • Failed to validate for boot image staging
  • StageBootImage() failed. 0x80070490.
  • Failed to stage WinPE. Code(0x80070490

O erro "Unable to find a volume that is suitable for staging the boot image. Element not found. (Error: 80070490; Source: Windows)" geralmente ocorre durante a TS (Task Sequence) de implantação do sistema operacional usando o SCCM. O erro indica que o processo de implantação não consegue encontrar um volume adequado para armazenar a imagem de inicialização temporariamente.

Geralmente esse erro ocorre em dispositivos que tem mais de uma unidade de armazenamento, como unidades NVMe, SSD e HD. Você pode fazer uma busca pelos os tipos de unidade\disco e contar antes de realizar a formatação da unidade  e se houver mais de 1 disco físico, verifica se há algum NVMe maior que 120 GB e faz os devidos tratamento para instalar o sitema operacional.

Segue abaixo um exemplo de script que pode ser usado:
Realizar validações em seu ambiente de teste
# Contagem de unidades físicas
Write-Output "Verificando a contagem de unidades físicas..."
$diskCount = (Get-Disk).Number.Count
if ($diskCount -eq 1) {
    # Se houver apenas 1 disco, avança a instalação
    Write-Output "Apenas 1 disco físico instalado. Avançando..."
} elseif ($diskCount -gt 1) {
    # Se houver mais de 1 disco físico, verifica se há algum NVMe maior que 120 GB
    Write-Output "Mais de 1 disco físico instalado. Verificando se há algum NVMe..."
    $nvmeDsks = (Get-WmiObject -Namespace root\microsoft\windows\storage -Class msft_disk) | ?{$_.BusType -eq 17} | Where-Object {$_.Size -gt 128849018880}
    $i = $nvmeDsks.Count
    if ($i -gt 0) {
        # Se houver algum disco NVMe maior que 120 GB, identifica o menor disco para instalar o SO
        Write-Output "Encontrado(s) $i disco(s) NVMe."
        Write-Output "Determinando o menor disco para atribuir como disco 0..."
        $osDisk = ($nvmeDsks | Sort-Object -Property Size | Select-Object -First 1).Number
        Write-Output "Pronto para implantar."
    } else {
        # Se não houver nenhum disco NVMe maior que 120 GB, avança a instalação
        Write-Output "Nenhum unidade NVMe maior que 120 GB encontrado. Avançando..."
    }
}

# Inicializa o ambiente SMS TS
$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment
if ($nvmeDsks) {
    # Se houver algum unidade NVMe maior que 120 GB, define a variável TS 'OSDDiskIndex' para o menor unidade
    $TSEnv.Value("OSDDiskIndex") = $osDisk
    Write-Output "NVMe agora deve ser igual ao unidade 0 no TS."
}

Se o script acima não resolver, abaixo estão algumas outras possíveis soluções:

Verifique a sequência de tarefas:

  • Certifique-se de que a etapa "Format and Partition Disk" esteja presente e configurada corretamente na sequência de tarefas.
  • Verifique se a etapa "Apply Operating System" está usando a opção "Next available formatted partition" ou se a partição de destino está configurada corretamente.

Verifique o BIOS e o modo de inicialização:

  • Certifique-se de que o computador esteja configurado para usar o modo de inicialização correto (Legacy BIOS ou UEFI) de acordo com a imagem de inicialização.
  • Se o computador estiver usando o modo UEFI, verifique se a etapa "Format and Partition Disk" na sequência de tarefas está configurada para criar uma partição EFI.

Verifique o arquivo SMSTS.log:

  • Analise o arquivo de log SMSTS.log no computador afetado para obter mais informações sobre a causa do erro. O arquivo SMSTS.log pode ser encontrado em diferentes locais, dependendo do estágio da implantação:
  • Durante a execução do WinPE: X:\Windows\Temp\SMSTS\
  • Após a primeira reinicialização: C:_SMSTaskSequence\Logs\Smstslog\
  • Após a conclusão da sequência de tarefas: C:\Windows\CCM\Logs\

Verifique os drivers de armazenamento:

  • Verifique se os drivers de armazenamento apropriados estão incluídos na imagem de inicialização. Drivers ausentes ou incorretos podem causar problemas para encontrar ou acessar o disco rígido.

Verifique o hardware do computador:

  • Verifique se há problemas de hardware no computador, como um disco rígido com defeito ou uma conexão solta.

Limpe o disco antes da implantação:

  • Em alguns casos, limpar o disco antes da implantação pode resolver o problema. Você pode usar o utilitário Diskpart no ambiente WinPE antes de iniciar a sequência de tarefas para limpar o disco. Tenha cuidado ao fazer isso, pois limpar o disco apagará todos os dados nele.
Nenhum comentário:

Como Usar o Comando Assoc no Windows 10 para Associar Extensões de Arquivo

O comando assoc é usado no Windows 10 para exibir ou modificar as associações de extensão de arquivo. Ele é útil quando você precisa definir qual programa deve ser usado para abrir um determinado tipo de arquivo. Neste post, vamos explicar como usar o comando assoc para associar extensões de arquivo no Windows 10.

Passo 1: Abrir o Prompt de Comando

Para usar o comando assoc, primeiro você precisa abrir o Prompt de Comando. Para fazer isso, clique no menu Iniciar e digite "Prompt de Comando" na caixa de pesquisa. Clique com o botão direito do mouse em "Prompt de Comando" nos resultados da pesquisa e selecione "Executar como administrador".

Passo 2: Exibir as Associações de Extensão de Arquivo

Para exibir as associações de extensão de arquivo atuais, digite "assoc" no Prompt de Comando e pressione Enter. O Windows exibirá uma lista de todas as extensões de arquivo e os programas associados a elas. Por exemplo, a extensão ".docx" pode estar associada ao Microsoft Word.

Passo 3: Modificar as Associações de Extensão de Arquivo

Para modificar uma associação de extensão de arquivo existente, use o comando assoc seguido da extensão de arquivo e o programa que você deseja associar. Por exemplo, para associar arquivos .txt com o Bloco de Notas, digite "assoc .txt=notepad.exe" no Prompt de Comando e pressione Enter.

Se você quiser remover uma associação de extensão de arquivo, use o comando assoc novamente, mas desta vez sem especificar um programa. Por exemplo, para remover a associação de arquivos .txt, digite "assoc .txt=" no Prompt de Comando e pressione Enter.

Observação: tenha cuidado ao modificar as associações de extensão de arquivo, pois isso pode afetar o funcionamento de programas que usam esses tipos de arquivos.

Nenhum comentário:

Como copiar arquivos e diretórios de maneira eficiente e segura com o comando robocopy

O comando robocopy é uma ferramenta de linha de comando para cópia de arquivos e diretórios em ambientes Windows. Ele permite que o usuário faça cópias de arquivos de maneira mais eficiente e segura do que o comando xcopy, que é uma ferramenta mais antiga. Com o robocopy, é possível copiar arquivos em lote, manter a estrutura de diretórios original, fazer cópias parciais e verificar a integridade dos arquivos.

Sintaxe:

robocopy <origem> <destino> [<arquivos> ...] [<opções>]

Opções:

  • /e: Copia subdiretórios, incluindo os vazios.
  • /mir: Copia subdiretórios e exclui arquivos do destino que não existem na origem.
  • /z: Usa o modo de cópia em reinício (para cópias de arquivos grandes).
  • /r:<número>: Especifica o número de vezes que o comando deve tentar copiar um arquivo antes de desistir.
  • /w:<tempo>: Especifica o tempo em segundos que o comando deve esperar antes de tentar copiar novamente um arquivo.
  • /log:<arquivo>: Especifica o arquivo de log a ser gerado.
  • /np: Impede que o progresso da cópia seja exibido.

Exemplo 1:

robocopy C:\Origem D:\Destino /E /R:0 /W:0 /LOG:d:\Apps\QualALei.log

Em resumo, o comando está copiando todos os arquivos e pastas da unidade C:\Origem para a unidade D:\Destino, sem interrupções em caso de falha e registrando informações detalhadas sobre a operação em um arquivo de log na unidade D:\Apps.

Exemplo 2

robocopy C:\Origem D:\Destino /e /mir /z /r:3 /w:10 /log:c:\temp\robocopy.log

Esse comando vai copiar todos os arquivos e pastas da unidade C:\Origem para a unidade D:\Destino, incluindo subpastas e arquivos ocultos. 

Os parâmetros /e e /mir especificam que o robocopy deve copiar todos os arquivos e subpastas da origem para o destino, incluindo arquivos e pastas vazias, e manter a mesma estrutura de diretórios na origem e no destino. 

O parâmetro /z especifica que deve usar o modo de cópia em rede com reinício automático em caso de interrupções. 

O parâmetro /r:3 especifica que o deve tentar copiar cada arquivo até três vezes em caso de falha. O parâmetro /w:10 especifica que o robocopy deve aguardar 10 segundos entre as tentativas em caso de falha.

O parâmetro /log:c:\temp\robocopy.log especifica que um arquivo de log deve ser criado em c:\temp\robocopy.log para registrar as informações sobre a operação de cópia.


Exemplo 3 (Dica para copiar arquivos de rede instáveis ou muito lenta):

Para copiar a mídia de instalação do Windows 10 da rede para uma unidade USB com ajustes para conexões de rede lentas ou instáveis, você pode usar o seguinte comando:
robocopy "\\dicasquefunfa\midia\windows10\setup" "c:\usb" /E /Z /R:5 /W:15 /FFT
Neste exemplo, o parâmetro "/E" é usado para copiar todos os subdiretórios, incluindo os vazios, além de copiar os arquivos. O parâmetro "/Z" permite que a cópia continue a partir do ponto em que parou, caso a conexão seja interrompida. Os parâmetros "/R" e "/W" estão ajustados para cinco tentativas de cópia e um tempo de espera de 15 segundos entre as tentativas. O parâmetro "/FFT" é usado para ajustar a janela de tempo em que o Robocopy considera que um arquivo foi modificado. Isso pode ajudar a evitar a cópia de arquivos que não foram modificados, economizando tempo e largura de banda.

Observações importantes:

  • Lembrando que mesmo com essas sugestões, a cópia pode levar mais tempo do que o normal devido à sua conexão de rede. É bom você se certificar de que a conexão de rede esteja estável e tente executar a cópia durante um período de baixa atividade da rede para minimizar a interferência.
  • O exemplo 2 deve ser utilizando com muito cuidado. Esse comando está copiando todos os arquivos e pastas da unidade C:\Origem para a unidade D:\Destino, sem interrupções em caso de falha e registrando informações detalhadas sobre a operação em um arquivo de log na unidade D:\Apps.


Bat para fazer backup de arquivos e pastas

Segue abaixo um exemplo de arquivo de lote (bat) para fazer backup de arquivos e pastas de uma determinada origem para um destino:

@echo off

set origem=C:\Meus Documentos

set destino=D:\Backup

robocopy %origem% %destino% /e /mir /z /r:3 /w:10 /log:C:\Temp\backup.log

pause

Nesse exemplo, o comando robocopy está sendo utilizado para copiar todos os arquivos e pastas da unidade C:\Meus Documentos para a unidade D:\Backup, mantendo a sincronização entre as duas unidades e registrando informações detalhadas sobre a operação em um arquivo de log na unidade C:\Temp. O comando pause é utilizado para manter a janela do prompt aberta após a execução do script, permitindo a verificação dos resultados.

Lembrando que é importante ajustar as variáveis origem e destino de acordo com o que você se deseja fazer backup e onde se deseja salvar. É possível também alterar os parâmetros do comando robocopy de acordo com as necessidades específicas do backup

⚠️Atenção!

Lembre sempre que o comando robocopy é uma ferramenta poderosa e que pode causar danos irreparáveis se não for utilizado com cuidado. É recomendável fazer testes antes de executar o comando em produção e verificar se o destino está correto antes de executar a cópia.


É isso aí, com essas dicasquefunfa é possível utilizar o comando robocopy para copiar arquivos e diretórios de maneira eficiente e segura em ambientes Windows. 🙂
Nenhum comentário:

10 Comandos Úteis do Windows 10 ou 11 para Gerenciamento e Solução de Problemas

O Windows 10 ou o 11 vem com uma variedade de comandos que podem ajudar a gerenciar e solucionar problemas em seu sistema operacional. Aqui estão 10 comandos úteis que podem ajudar a melhorar a eficiência e a produtividade do seu trabalho no dia a dia:



Comandos:

  1. ipconfig: para usar o comando ipconfig, abra o Prompt de Comando do Windows (pressionando a tecla Win + R e digitando "cmd" na caixa de diálogo) e digite "ipconfig" e pressione Enter. Isso exibirá as informações de configuração de rede, incluindo o endereço IP, gateway padrão, servidores DNS e muito mais.
  2. ping: para usar o comando ping, abra o Prompt de Comando e digite "ping" seguido do endereço IP ou nome do host que você deseja testar a conectividade. Por exemplo, "ping google.com" testa a conexão com o Google. O comando ping enviará pacotes de dados para o host e exibirá o tempo de resposta.
  3. tracert: para usar o comando tracert, abra o Prompt de Comando e digite "tracert" seguido do endereço IP ou nome do host que você deseja testar o caminho de rede. Por exemplo, "tracert google.com" exibirá o caminho de rede que os pacotes de dados seguem para alcançar o Google.
  4. netstat: para usar o comando netstat, abra o Prompt de Comando e digite "netstat" para exibir informações de conexão de rede. Por padrão, o comando exibirá todas as conexões de rede ativas, mas você pode usar opções adicionais para exibir informações mais detalhadas.
  5. tasklist: para usar o comando tasklist, abra o Prompt de Comando e digite "tasklist" para exibir uma lista de todos os processos em execução no sistema.
  6. taskkill: para usar o comando taskkill, abra o Prompt de Comando e digite "taskkill /IM nome_do_processo.exe" para encerrar um processo específico em execução no sistema.
  7. systeminfo: para usar o comando systeminfo, abra o Prompt de Comando e digite "systeminfo" para exibir informações detalhadas do sistema, como nome do computador, versão do sistema operacional, informações do processador e muito mais.
  8. sfc /scannow: para usar o comando sfc /scannow, abra o Prompt de Comando e digite "sfc /scannow" para verificar e reparar arquivos do sistema corrompidos no sistema operacional.
  9. chkdsk: para usar o comando chkdsk, abra o Prompt de Comando e digite "chkdsk /f" para verificar e reparar erros em discos rígidos.
  10. diskpart: para usar o comando diskpart, abra o Prompt de Comando e digite "diskpart" para gerenciar discos rígidos e partições no sistema. Este comando é mais avançado e requer mais conhecimento técnico do que os outros comandos listados aqui. Certifique-se de ter um backup de seus dados importantes antes de usar o comando diskpart.

Nenhum comentário:

Module load completed but symbols could not be loaded for WdFilter.sys FLTMGR.SYS

O problema

O dispositivo apresentava tela azul e reinicialização logo em seguida.


Resumo

O dispositivo apresentava tela azul e reinicialização logo em seguida. Durante a análise do problema, verificou-se que o recurso de despejo de memória no arquivo de DUMP estava desabilitado na máquina, impedindo a coleta de evidências. Após habilitar a opção de despejo de memória, identificou-se um problema relacionado aos drivers FLTMGR.SYS e WdFilter.sys, mas as informações sobre o erro não foram carregadas corretamente no arquivo de DUMP, impossibilitando uma análise mais precisa. Suspeitando de um possível comportamento causado pelo antivírus, atualizamos o antivírus e em seguida executamos comandos para procurar e corrigir arquivos corrompidos no sistema, resolvendo o problema de tela azul.


Análise do problema

Durante a análise do problema, verificou-se que o recurso de despejo de memória no arquivo de DUMP estava desabilitado na máquina, impedindo a coleta de evidências. Após habilitar a opção de despejo de memória, identificou-se um problema relacionado aos drivers FLTMGR.SYS e WdFilter.sys, mas as informações sobre o erro não foram carregadas corretamente no arquivo de DUMP, impossibilitando uma análise mais precisa. Suspeitamos de um possível comportamento causado pelo antivírus, então, atualizamos o antivírus e executamos alguns comandos para procurar e corrigir arquivos corrompidos no sistema, resolvendo o problema de tela azul.

Além disso, tivemos também dificuldade para instalar as atualizações do Windows devido à aplicação de uma GPO antiga que configurava o serviço de Wpdade do Windows e apontava para o servidor WSUS com chaves de registro para pausar as atualizações do Windows. A solução encontrada foi apagar todas as chaves de registro aplicadas via GPO no equipamento.


Causa Raiz

A causa raiz do problema foram os drivers FLTMGR.SYS e WdFilter.sys por uma possível interferência do antivírus, que foi solucionada com a atualização do antivírus e a correção de arquivos corrompidos no sistema. Por fim, a dificuldade na instalação de atualizações do Windows se deu pela aplicação de uma GPO antiga que configurava o serviço de Update do Windows e apontava para os servidores WSUS com chaves de registro para pausar as atualizações do Windows, sendo solucionada com a remoção das chaves de registro aplicadas via GPO no equipamento.


Solução

A solução para o problema de tela azul foi a habilitação do recurso de despejo de memória no arquivo de DUMP, a atualização do antivírus e a correção de arquivos corrompidos no sistema. Já para a dificuldade em instalar as atualizações do Windows, a solução foi apagar todas as chaves de registro aplicadas via GPO no equipamento.

Script em PowerShell para automatizar a solução:

# Script:  WindowsUpdateDefender.ps1
# Descrição: Esse script vai aplicar atualização do antivírus, executar correção de arquivos corrompidos no sistema,
# Atualizar o Windows e apagar todas as chaves de registro aplicadas via GPO para o serviço do Windows Update.
# Autor: DicasQueFunfa
# Data: 09/03/2023
# Dependências: Install-Module -Name PSWindowsUpdate e Import-Module PSWindowsUpdate

# Adiciona log de execução
$logFile = "C:\temp\Logs\WindowsUpdateDefender.log"
Start-Transcript -Path $logFile -Append

# Alterar a política de execução de scripts do PowerShell para "RemoteSigned"
function Set-ExecutionPolicyRemoteSigned {
    # Obtém a política de execução atual
    $policy = Get-ExecutionPolicy

    # Verifica se a política atual é diferente de "RemoteSigned"
    if ($policy -ne "RemoteSigned") {
        # Define a política de execução como "RemoteSigned"
        Set-ExecutionPolicy RemoteSigned -Force

        # Verifica se a política de execução foi definida com sucesso
        if ((Get-ExecutionPolicy) -eq "RemoteSigned") {
            Write-Host "A política de execução de scripts foi alterada para 'RemoteSigned'."
        } else {
            Write-Warning "Não foi possível alterar a política de execução de scripts."
        }
    } else {
        Write-Host "A política de execução de scripts já está definida como 'RemoteSigned'."
    }
}


# Função para verificar e instalar o módulo PowerShellGet
function Install-PowerShellGetModule {
    # Verifica se o módulo PowerShellGet está instalado
    $module = Get-Module -Name "PowerShellGet" -ListAvailable -ErrorAction SilentlyContinue

    if ($module -eq $null) {
        # Instala o módulo PowerShellGet
        Write-Host "O módulo PowerShellGet não está instalado. Instalando o módulo agora..."
        Install-Module -Name "PowerShellGet" -Force
    } else {
        Write-Host "O módulo PowerShellGet já está instalado."
    }
}

# Chama a função para verificar e instalar o módulo PowerShellGet
Install-PowerShellGetModule


function Install-ModuloWindowsUpdate {
    # Verifica se o módulo PSWindowsUpdate está instalado
    $module = Get-Module -Name "PSWindowsUpdate" -ListAvailable -ErrorAction SilentlyContinue

    if ($module -eq $null) {
        # Instala o módulo PSWindowsUpdate
        Write-Host "O módulo PSWindowsUpdate não está instalado. Instalando o módulo agora..."
        Install-Module -Name "PSWindowsUpdate" -Force
    } else {
        Write-Host "O módulo PSWindowsUpdate já está instalado."
    }
}

# Chama a função para verificar e instalar o módulo PSWindowsUpdate
Install-ModuloWindowsUpdate


try {
    # Atualizar antivírus
    Write-Host "Atualizando antivírus..."
    Update-MpSignature -UpdateSource "MicrosoftUpdateServer" -ErrorAction Stop
    Write-Host "Antivírus atualizado com sucesso!"

    # Procurar e corrigir arquivos corrompidos do sistema
    Write-Host "Verificando e corrigindo arquivos corrompidos no sistema..."
    sfc /scannow

    # Remover chaves do registro associadas à política de grupo do serviço de atualização do Windows aplicada via GPO
    Write-Host "Removendo chaves do registro associadas à política de grupo do serviço de atualização do Windows..."
    Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Recurse -ErrorAction SilentlyContinue
    Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Recurse -ErrorAction SilentlyContinue
    Write-Host "Chaves do registro removidas com sucesso!"

    # Verifica se o serviço do Windows Update está em execução
    $service = Get-Service -Name wuauserv
    if ($service.Status -ne "Running") {
        # Inicializa o serviço do Windows Update
        Write-Host "Iniciando o serviço do Windows Update..."
        Start-Service -Name wuauserv
        Write-Host "Serviço do Windows Update iniciado com sucesso!"
    }
    
    # Verifica se há atualizações disponíveis
    Write-Host "Verificando atualizações disponíveis..."
    $updates = Get-WindowsUpdate -ErrorAction Stop
    if ($updates -eq $null) {
        Write-Host "Não há atualizações disponíveis no momento."
    } else {
        Write-Host "Atualizações disponíveis:"
        $updates | Format-Table -AutoSize

        $opcao = Read-Host "Deseja instalar agora (SIM) ou (Não)?"
        switch ($opcao) {
            "Sim" {
                Write-Host "Instalação Aceita. O dispositivo será atualizado."
                # Verifica se o serviço do Windows Update foi interrompido
                $wuService = Get-Service -Name wuauserv
                if ($wuService.Status -eq "Stopped") {
                    Write-Host "O serviço do Windows Update estava parado e foi iniciado."
                    Start-Service -Name wuauserv
                }

                # Instala as atualizações
                Write-Host "Instalando atualizações..."
                Install-WindowsUpdate -AcceptAll -AutoReboot -ErrorAction Stop
                Write-Host "As atualizações foram instaladas com sucesso!"
            }
            "Não" {
                Write-Host "Instalação recusada"
                break
                
            }
            Default {
                Write-Host "Resposta incorreta:" $_
            }
        }
        
    }    
    
}
catch {
    # Captura e trata erros
    Write-Host "Erro: $_" -ForegroundColor Red
}

# Finaliza o log de execução
Stop-Transcript



Arquivo de DUMP

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request.  Typically this is at a bad IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 000000000000000d, type of pool violation the caller is guilty of.
Arg2: ffffd3086d6e5b30
Arg3: 000000007266504d
Arg4: 77d327bd6f192610
Debugging Details:
------------------
*** ERROR: Module load completed but symbols could not be loaded for WdFilter.sys
Page 20040eb33 too large to be in the dump file.
BUGCHECK_STR:  0xc2_d
DEFAULT_BUCKET_ID:  WIN8_DRIVER_FAULT
PROCESS_NAME:  MsMpEng.exe
CURRENT_IRQL:  0
ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) amd64fre
LAST_CONTROL_TRANSFER:  from fffff8014486896e to fffff801447f6210
STACK_TEXT:  
fffff60c`45cbee98 fffff801`4486896e : 00000000`000000c2 00000000`0000000d ffffd308`6d6e5b30 00000000`7266504d : nt!KeBugCheckEx
fffff60c`45cbeea0 fffff801`44db2019 : ffffd308`63dd5050 ffffd308`6d6e5b48 00000000`00000081 01000000`00100000 : nt!ExFreeHeapPool+0x1a0a6e
fffff60c`45cbef80 fffff801`44dd3226 : ffffd308`6d6e5b30 00000000`00000000 00000000`00000001 00000000`00000000 : nt!ExFreePool+0x9
fffff60c`45cbefb0 fffff801`46335243 : 0000008b`c487ddc0 ffffd308`63dd5050 00000000`00000000 00000000`00000000 : nt!VerifierExFreePoolWithTag+0x56
fffff60c`45cbefe0 fffff801`442cb7fb : 00000000`00000000 00000193`4e0b0f70 d3086b9b`000002b0 0000008b`c487ddc0 : WdFilter+0x25243
fffff60c`45cbf090 fffff801`44303499 : ffffbc01`f4906500 ffffbc01`f4906430 0000008b`c487ddc0 ffffa552`a94fff20 : FLTMGR!FltpFilterMessage+0xdb
fffff60c`45cbf0f0 fffff801`442c4910 : ffffbc01`f203bd60 00000000`00000002 00000000`00000000 ffffbc01`f4906430 : FLTMGR!FltpMsgDispatch+0x179
fffff60c`45cbf160 fffff801`446ce6c5 : ffffbc01`f4906430 00000000`00000000 fffff60c`45cbf540 00000000`00000001 : FLTMGR!FltpDispatch+0xe0
fffff60c`45cbf1c0 fffff801`44ac3528 : ffffbc01`f4906430 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IofCallDriver+0x55
fffff60c`45cbf200 fffff801`44ac2df5 : 00000000`00000000 fffff60c`45cbf540 00000000`00000000 fffff60c`45cbf540 : nt!IopSynchronousServiceTail+0x1a8
fffff60c`45cbf2a0 fffff801`44ac27f6 : 00007ff9`07f1f4ac 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IopXxxControlFile+0x5e5
fffff60c`45cbf3e0 fffff801`44807bb5 : 00000000`00000000 00000000`00000000 00000000`00000000 0000008b`c487e4b0 : nt!NtDeviceIoControlFile+0x56
fffff60c`45cbf450 00007ff9`24fabe84 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x25
0000008b`c487dc78 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ff9`24fabe84
STACK_COMMAND:  kb
FOLLOWUP_IP: 
WdFilter+25243
fffff801`46335243 0f1f440000      nop     dword ptr [rax+rax]
SYMBOL_STACK_INDEX:  4
SYMBOL_NAME:  WdFilter+25243
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: WdFilter
IMAGE_NAME:  WdFilter.sys
DEBUG_FLR_IMAGE_TIMESTAMP:  0
FAILURE_BUCKET_ID:  0xc2_d_VRF_WdFilter+25243
BUCKET_ID:  0xc2_d_VRF_WdFilter+25243
ANALYSIS_SOURCE:  KM
FAILURE_ID_HASH_STRING:  km:0xc2_d_vrf_wdfilter+25243
FAILURE_ID_HASH:  {90c175c5-7cf9-66d5-0c76-92c98cb21ab0}
Followup: MachineOwner
Read more » Nenhum comentário:

Descubra quem fez login no seu computador com PowerShell

O registro de eventos de segurança do Windows contém informações importantes sobre as atividades que acontecem no sistema, incluindo os logons de usuário. Saber quem fez login no seu computador pode ser útil para fins de segurança, administração e solução de problemas. Neste post, vamos mostrar como usar o PowerShell para descobrir quem fez login no seu computador.


Passo 1: Abrir o PowerShell. Você pode fazer isso pressionando as teclas Windows + X e selecionando a opção Windows PowerShell ou pesquisando no menu Iniciar por PowerShell

Passo 2: Com o PowerShell aberto, executar o comando:

Get-WinEvent -FilterHashtable @{Logname='Security'; ID='4624'} | Select-Object -First 1 | Format-List

Este comando irá procurar no registro de eventos de segurança do Windows (Security) pelo evento de ID 4624, que é registrado quando um usuário inicia uma sessão de logon no sistema. A opção Select-Object -First 1 irá retornar apenas o primeiro evento encontrado, que é o mais recente. Se você quisar pegar mais evento basta trocar o valor 1 pelo valor desejado ou remover o paramentro "Select-Object -First 1" para exibir todos os evento de login.

O resultado, como é apresentando



O PowerShell irá exibir as propriedades do evento de logon, incluindo o nome do usuário que iniciou a sessão (propriedade Nome da Conta) e a data e hora em que a sessão foi iniciada (propriedade TimeCreated). 

Se você quiser pesquisar por um usuário específico, você pode utilizar o seguinte comando, substituindo o "username" pelo nome do usuário que deseja buscar:
Get-WinEvent -FilterHashtable @{Logname='Security'; ID='4624'; Data="NomeDoUsuárioAqui"} | Select-Object -First 1 | Format-List

ou 

Get-WinEvent -FilterHashtable @{Logname='Security'; ID='4624'; Data="NomeDoUsuárioAqui"}  | Format-List 

Com este comando, você pode descobrir quem fez login no seu computador e quando, o que pode ajudar a solucionar problemas e identificar possíveis ameaças à segurança. Lembre-se de que o registro de eventos de segurança deve ser utilizado com cautela e sempre em conformidade com as políticas de segurança da sua organização.
Nenhum comentário: