Frage

Habe Folgendes in PowersHell als kurze iTunes-Demonstration geschrieben:

$iTunes = New-Object -ComObject iTunes.Application
$LibrarySource = $iTunes.LibrarySource
foreach ($PList in $LibrarySource.Playlists)
{
  write-host $PList.name
}

Das funktioniert gut und ruft eine Liste mit Playlist-Namen ab.Beim Versuch, iTunes zu schließen, wird jedoch eine Warnung angezeigt

Eine oder mehrere Anwendungen verwenden die iTunes-Skriptschnittstelle.Sind Sie sicher, dass Sie aufhören wollen?

Natürlich kann ich die Meldung einfach ignorieren und auf [Beenden] drücken oder einfach etwa 20 Sekunden warten, aber gibt es eine saubere Möglichkeit, iTunes mitzuteilen, dass ich mit der Arbeit fertig bin?

Itunes 7.7.1, Windows XP
War es hilfreich?

Lösung

Hier ist eine Sache, die ich an einem Powershell-Skript gemacht habe, das Podcasts zu iTunes hinzufügt.Ich verwende Juice auf einem Server, um alle Podcasts herunterzuladen, die ich höre.Das Skript verwendet .Net-Methoden, um die COM-Objekte freizugeben.Als ich mein iTunes-Skript schrieb, hatte ich einige Artikel gelesen, in denen es hieß, Sie sollten Ihre COM-Objekte mit .NET freigeben.


    [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$LibrarySource)
    [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$iTunes)

Außerdem führe ich meine Skripte die meiste Zeit über eine Verknüpfung aus, nicht über die Powershell-Eingabeaufforderung.

Basierend auf Ihren Kommentaren habe ich einige Tests durchgeführt und festgestellt, dass ich beim Ausführen mit iTunes die Meldung erhalten würde, wenn ich mein Skript so ausführen würde, dass Powershell ausgeführt wird.iTunes scheint das im Auge zu behalten.Durch die Ausführung des Skripts in einer Weise, die den Prozess nach der Ausführung beendet, wurde die Meldung entfernt.

Eine Methode zum Ausführen Ihres Skripts über Powershell besteht darin, Ihrem Skript Powershell voranzustellen.

powershell .\scriptname.ps1

Der obige Befehl startet Ihr Skript und beendet dann den Prozess, mit dem es ausgeführt wurde. Sie bleiben jedoch weiterhin an der Powershell-Eingabeaufforderung.

Andere Tipps

Sie sollten $itunes auf $null setzen können.Alternativ sollte $itunes über eine Quit-Methode verfügen, die Sie aufrufen können.$itunes.quit()

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top