Guido Oliveira
  • Home
  • Sobre
  • Contato
  • Home
  • Sobre
  • Contato
Menu
  • Home
  • Sobre
  • Contato

Removendo dispositivos órfãos do Windows com Powershell

Published by Guido Oliveira on 05/01/2021
Categories
  • Azure
  • Powershell
  • Windows Server
Tags
  • azure
  • dispositivos orfaos
  • Get-Item
  • Get-PnPDevice
  • powershell
  • Remove-ItemProperty
  • remover
  • windows server
Facebook0
Twitter0
LinkedIn0
Google+0
Pinterest0

Olá Pessoal,

Há um tempo atrás, tive um problema com o Windows server 2012 R2 rodando no Azure, na época do Azure Service Management, isso em meados de 2014. O servidor não funcionava devidamente, porque cada vez que ele desligava e o Azure desalocava os recursos, ele “instalava” uma interface de rede nova, e em determinado momento tinham mais de 150 interfaces “Fantasma”(possivel ver plelo Gerenciador de dispositivos habilitando os ocultos). Na época precisei recorer a outra forma mais “legada” no script, mas hoje, é possivel remediar isso com PowerShell Nativo.

O comando Get-PnPDevice, permite listar os dispositivos com status desconhecido, que são basicamente os desconectados. e Através disso, podemos listar no registro do Windows e fazer a limpeza disso. O script abaixo vai percorrer todos os dispositivos desconhecidos encontrados  e criar um caminho no registro com o ID desse dispositivo e remover essas entradas, no caso não irá remover o driver, apenas o histórico desses dispositivos. Deixei no comando Remove-ItemProperty o parametro WhatIf para que voce veja tudo que será feito sem que seja feita nenhuma alteração de imediato afim de evitar acidentes. Lembrando também que é necessário executar o terminal em modo elevado visto que estão sendo buscadas chaves de registro da maquina, e nao do usuário.

Script:

ForEach ($Device in @(Get-PnPDevice -Status 'Unknown')) {
    Write-Host "Removing $($Device.FriendlyName)" -ForegroundColor Cyan
    $RemoveKey = 'HKLM:\SYSTEM\CurrentControlSet\Enum\{0}' -f $Device.InstanceId
    Get-Item -Path $RemoveKey | Select-Object -ExpandProperty Property | ForEach-Object -Process {
        Remove-ItemProperty -Path $RemoveKey -Name $PSItem -Verbose -WhatIf
    }
}

Resultado:

Lembrando que todo cuidado é pouco! teste em um ambiente controlado antes de fazer qualquer modificação em produção!

 

Dúvidas? Sugestões? Comente!

Até a próxima!

Share
Guido Oliveira
Guido Oliveira

Related posts

09/02/2021

Removendo acentos de palavras usando Powershell


Read more
08/02/2021

Alterando campos de usuários em lote no Active Directory


Read more
01/02/2021

Como criar usuários em lote no Active Directory


Read more

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Busca

Prêmios

Powershell MVP
Facebook
© 2019 Guido Oliveira. All Rights Reserved.
Menu
  • Home
  • Sobre
  • Contato