Encontrei o seguinte código ao pesquisar como posso ver o status da verificação do Windows Update de um computador:
$UpdateSession = New-Object -ComObject Microsoft.Update.Session
$UpdateSearcher = $UpdateSession.CreateupdateSearcher()
$Updates = @($UpdateSearcher.Search("IsHidden=0 and IsInstalled=0").Updates)
$Updates | Select-Object Title
Este código não atende às minhas necessidades como está, mas sinto que pode ser poderoso o suficiente para isso. Eu me livrei da Select-Object Title
limitação e o retorno tinha muitas propriedades, ou seja, o Type
que despertou meu interesse porque espero que Type
possa delinear entre atualizações de driver, atualizações de terceiros (como Microsoft Silverlight) e verdadeiras "Atualizações do Windows", mas não importa o quão difícil eu procuro mais informações não consigo encontrar nada.
Eu procurei "Microsoft.Updates.Session"
no google e no MSDN, não consigo encontrar nenhuma fonte que realmente me diga quais propriedades estão disponíveis para ele e o que as enumerações significam (como Type = 1 vs Type = 2).
Existe uma referência de objeto do PowerShell que devo pesquisar ou como faço para encontrar mais informações sobre um objeto do PowerShell quando necessário?
Para começar, o tipo
[Microsoft.Update.Session]
não é realmente um objeto Powershell interno, mas parte da API do Windows Update Agent (WUA) . Como tal, ele não possui arquivos de ajuda integrados ou exemplos que o powershell pode mostrar, mas é pesquisável no site da Microsoft.O documento do MS vinculado tem alguns bons exemplos de como usar a API para fazer coisas diferentes com a atualização do Windows e pode ser convertido diretamente para uso no Powershell.
Acontece que eu já usei isso antes, então aqui estão alguns conceitos básicos no powershell:
No que diz respeito à procura de atualizações específicas, você desejará adicionar seus filtros ao método
$UpdateSearcher.
Search() . Parece que isso pode ter type='Software' ou type='Driver' por exemplo.Observe que a API WUA tem um bug/recurso que geralmente exige que ela seja executada localmente em uma máquina em vez de ser iniciada remotamente, embora você possa contornar isso criando uma tarefa agendada que executa seu script.
E, finalmente, para realmente responder à sua pergunta - como regra geral,
Get-Member $MyObject
eGet-Help $MyCommand
ajudará você a descobrir a maioria dos recursos internos do Powershell.O mais fácil é usar o
Get-Member
cmdlet, como:neste caso, é mais provável que seja um objeto COM, mas ainda deve mostrar os Métodos e Propriedades