Descobrir quem instalou Software no Windows com Powershell

Want create site? Find Free WordPress Themes and plugins.

Como descobrir qual usuário instalou um Software no Windows

Em casos onde o usuário de um computador é administrador ou tem permissão de instalar software, as vezes pode ser necessário descobrir qual usuário instalou software no computador para evitar softwares indevidos ou não licenciados.

Nas novas versões do Windows, por padrão vem habilitado uma série de auditorias, dentre elas a instalação de software. Este recurso registra em log todos as instalações de software. Porém, os logs do Windows nem sempre são amigáveis e fáceis de entender.

Para descobrir qual usuário instalou software no computador vamos utilizar o powershell para consultar essas informações nos logs do Event Viewer.

Powershell

Com o Powershell é possível consultar os logs do Windows e filtrar os resultados para uma melhor visualização e entendimento. Vamos ver a seguir os princípios básicos da nossa consulta de instalação de software.

Consultando os logs do Windows com Powershell:

PS C:\> Get-WinEvent -FilterHashtable @{LogName=”Application”;ID=11707;ProviderName=”MsiInstaller”}

Para filtrar e ter uma melhor visualização das informações podemos utilizar outros recursos do Powershell, segue abaixo o código que cria uma função chamada Get-AppInstalled:

function Get-AppInstalled{
Param (
[string]$Computer = (Read-Host Remote computer name)
)
cls
$Result = @()
Write-Host “Gathering Event Logs, this can take awhile…”
$ELogs = Get-WinEvent -FilterHashtable @{LogName=”Application”;ID=11707;ProviderName=”MsiInstaller”} -ComputerName $Computer
If ($ELogs)
{ Write-Host “Processing…”
ForEach ($Log in $ELogs)
{
$Result += New-Object PSObject -Property @{
Time = $Log.TimeCreated
Application = $Log.Message
User = (New-Object System.Security.Principal.SecurityIdentifier $Log.UserID.Value).Translate([System.Security.Principal.NTAccount])
}
}
$Result | Select Time,Application,User | Sort Time -Descending | Out-GridView
Write-Host “Done.”
}
Else
{
Write-Host “Problem with $Computer.”
Write-Host “If you see a ‘Network Path not found’ error, try starting the Remote Registry service on that computer.”
Write-Host “Or there are no logon/logoff events (XP requires auditing be turned on)”
}
}

Após executar o código acima basta executar a função na linha de comando do powershell para obter as informações sobre instalações recentes de software.

PS C:\> Get-AppInstalled
Remote computer name: <nome do computador>

Caso você deseje obter o histórico de login no computador local basta digitar o hostname.

Quer aprende Poweshell e fazer scripts como este? Acesse http://www.flexxo.com.br

Did you find apk for android? You can find new Free Android Games and apps.
Contato Rápido

Escreva sua mensagem que o mais rápido possível retornaremos!

Start typing and press Enter to search