Como regla general, ¿cómo puedo encontrar más información sobre un objeto de PowerShell?

Como regla general, ¿cómo puedo encontrar más información sobre un objeto de PowerShell?

Encontré el siguiente código mientras investigaba cómo puedo ver el estado de la verificación de Windows Update de una computadora:

$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 no satisface mis necesidades tal como está, pero creo que podría ser lo suficientemente potente como para hacerlo. Me deshice de la Select-Object Titlelimitación y la devolución tenía muchas propiedades, es decir, Typelo que despertó mi interés porque espero que Typepueda delimitar entre actualizaciones de controladores, actualizaciones de terceros (como Microsoft Silverlight) y verdaderas "Actualizaciones de Windows", pero no importa cómo. Busco mucho más información y no encuentro nada.

He buscado "Microsoft.Updates.Session"en Google y MSDN, no puedo encontrar ninguna fuente que realmente me diga qué propiedades están disponibles y qué significan las enumeraciones (como Tipo=1 vs Tipo=2).

¿Existe una referencia de objeto de PowerShell que debería buscar o cómo hago para encontrar más información sobre un objeto de PowerShell cuando la necesito?

Respuesta1

Para empezar, el tipo [Microsoft.Update.Session]no es realmente un objeto integrado de Powershell, sino parte delAPI del agente de actualización de Windows (WUA). Como tal, no tiene ningún archivo de ayuda integrado ni ejemplos que PowerShell pueda mostrarle, pero se puede buscar en el sitio de Microsoft.

El documento de MS vinculado tiene algunos buenos ejemplos de cómo usar la API para hacer diferentes cosas con Windows Update y, en su mayoría, se puede convertir directamente para usar en Powershell.

Resulta que he usado esto antes, así que aquí hay algunos conceptos básicos de PowerShell:

# Create a new update session, and search for updates
$updateObject = New-Object -ComObject Microsoft.Update.Session
$updateObject.ClientApplicationID = "Example Client ID"
$updateSearcher = $updateObject.CreateUpdateSearcher()

# Search for updates using a simple search filter, and save the results to a variable:
$searchResults = $updateSearcher.Search("IsInstalled=0")

# If there are updates available, download them:
if ($searchResults.Updates -and $searchResults.Updates.count -gt 0){
    $count=$searchResults.Updates.count
    Write-Output ( "Found " + $searchResults.Updates.Count + " Updates" )
    $updateDownloader = $updateObject.CreateUpdateDownloader()
    $updateDownloader.Updates = $searchResults.Updates
    Write-Output "Downloading..."
    $updateDownloader.Download()

    # Then install the updates:
    $updateInstaller = $updateObject.CreateUpdateInstaller()
    $updateInstaller.Updates = $searchResults.Updates
    Write-Output "Installing..."
    $result = $updateInstaller.Install()

    # Then output the result
    Write-Output ("Installation Result: " + $Result.ResultCode)
    Write-Output ("Reboot Required: " + $Result.RebootRequired)
}
else { Write-Output "No updates found. Exiting..." }

En cuanto a buscar actualizaciones específicas, querrás agregar tus filtros a la$UpdateSearcher.Buscar()método. Parece que esto puede tener type='Software' o type='Driver', por ejemplo.

Tenga en cuenta que la API WUA tiene un error/característica que generalmenterequierepara que se ejecute localmente en una máquina en lugar de iniciarse de forma remota, aunque puede solucionar esto creando una tarea programada que ejecute su script.

Y finalmente, para responder realmente a su pregunta: como regla general, Get-Member $MyObjectlo Get-Help $MyCommandayudará a descubrir la mayoría de las capacidades integradas de Powershell.

Respuesta2

Lo más sencillo es utilizar el Get-Membercmdlet, como:

$Updates | Get-Member

en este caso lo más probable es que sea un objeto COM, pero aún así debería mostrarle los Métodos y Propiedades

información relacionada