Question

J'ai écrit ce qui suit dans PowersHell comme une démonstration rapide sur iTunes :

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

Cela fonctionne bien et récupère une liste de noms de listes de lecture.Cependant, en essayant de fermer iTunes, un avertissement apparaît

Une ou plusieurs applications utilisent l'interface de script iTunes.Êtes-vous sûr de vouloir quitter?

Évidemment, je peux simplement ignorer le message et appuyer sur [Quitter] ou simplement attendre environ 20 secondes, mais existe-t-il un moyen propre de dire à iTunes que j'ai fini de travailler avec ?

Itunes 7.7.1, Windows XP
Était-ce utile?

La solution

Voici une chose que j'ai faite sur mon script Powershell qui ajoute des podcasts à iTunes.J'utilise Juice sur un serveur pour télécharger tous les podcasts que j'écoute.Le script utilise les méthodes .Net pour libérer les objets COM.Lorsque j'ai écrit mon script iTunes, j'avais lu quelques articles indiquant que vous deviez publier vos objets COM en utilisant .NET.


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

J'exécute également mes scripts la plupart du temps à partir d'un raccourci, et non à partir de l'invite PowerShell.

Sur la base de vos commentaires, j'ai effectué quelques tests et j'ai déterminé que j'obtiendrais le message lors de l'exécution sur iTunes, si j'exécutais mon script de manière à laisser PowerShell fonctionner.iTunes semble en garder une trace.L'exécution du script de manière à quitter son processus après son exécution a éliminé le message.

Une méthode pour exécuter votre script à partir de PowerShell consiste à préfixer votre script avec PowerShell.

powershell .\scriptname.ps1

La commande ci-dessus lancera votre script, puis quittera le processus qui a été utilisé pour l'exécuter, tout en vous laissant à l'invite PowerShell.

Autres conseils

Vous devriez pouvoir définir $itunes sur $null.Alternativement, $ iTunes devrait avoir une méthode de sortie que vous pouvez appeler.$itunes.quit()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top