Wie kann ich grundsätzlich weitere Informationen zu einem PowerShell-Objekt finden?

Wie kann ich grundsätzlich weitere Informationen zu einem PowerShell-Objekt finden?

Ich habe den folgenden Code gefunden, als ich recherchiert habe, wie ich den Status der Windows Update-Prüfung eines Computers anzeigen kann:

$UpdateSession = New-Object -ComObject Microsoft.Update.Session
$UpdateSearcher = $UpdateSession.CreateupdateSearcher()
$Updates = @($UpdateSearcher.Search("IsHidden=0 and IsInstalled=0").Updates)
$Updates | Select-Object Title

Dieser Code erfüllt meine Anforderungen in seiner jetzigen Form nicht, aber ich denke, er könnte leistungsstark genug sein. Ich habe die Select-Object TitleEinschränkung beseitigt und die Rückgabe hatte viele Eigenschaften, Typedie mein Interesse geweckt haben, weil ich hoffe, dass dies Typezwischen Treiberaktualisierungen, Aktualisierungen von Drittanbietern (wie Microsoft Silverlight) und echten „Windows-Aktualisierungen“ unterscheiden könnte, aber egal, wie sehr ich nach weiteren Informationen suche, ich kann nichts finden.

Ich habe "Microsoft.Updates.Session"bei Google und MSDN gesucht, kann aber keine Quelle finden, die mir wirklich sagt, welche Eigenschaften dafür verfügbar sind und was die Aufzählungen bedeuten (wie Typ=1 vs. Typ=2).

Gibt es eine PowerShell-Objektreferenz, nach der ich suchen sollte, oder wie finde ich bei Bedarf weitere Informationen zu einem PowerShell-Objekt?

Antwort1

Zunächst einmal [Microsoft.Update.Session]ist der Typ kein wirklich eingebautes Powershell-Objekt, sondern Teil desAPI für Windows Update-Agent (WUA). Daher verfügt es nicht über integrierte Hilfedateien oder Beispiele, die Powershell Ihnen anzeigen kann, aber es ist auf der Microsoft-Site durchsuchbar.

Das verlinkte MS-Dokument enthält einige gute Beispiele zur Verwendung der API für verschiedene Aufgaben mit Windows Update und kann größtenteils direkt für die Verwendung in Powershell konvertiert werden.

Ich habe dies zufällig schon einmal verwendet, hier also einige Grundlagen zu 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..." }

Wenn Sie nach bestimmten Updates suchen möchten, fügen Sie Ihre Filter dem$UpdateSearcher.Suchen()Methode. Sieht so aus, als ob dies beispielsweise den Typ „Software“ oder „Treiber“ haben könnte.

Beachten Sie, dass die WUA-API einen Fehler/eine Funktion hat, die im AllgemeinenerfordertEs soll lokal auf einem Computer ausgeführt werden, anstatt remote gestartet zu werden. Sie können dies jedoch umgehen, indem Sie eine geplante Aufgabe erstellen, die Ihr Skript ausführt.

Und schließlich, um Ihre Frage tatsächlich zu beantworten: Als allgemeine Regel gilt, Get-Member $MyObjectdass Get-Help $MyCommandes Ihnen dabei hilft, die meisten integrierten Powershell-Funktionen zu entdecken.

Antwort2

Am einfachsten ist es, das Cmdlet wie folgt zu verwenden Get-Member:

$Updates | Get-Member

in diesem Fall ist es höchstwahrscheinlich ein COM-Objekt, aber es sollten Ihnen trotzdem die Methoden und Eigenschaften angezeigt werden

verwandte Informationen