Domanda

Ha scritto quanto segue in PowersHell come rapida dimostrazione di iTunes:

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

Funziona bene e recupera un elenco di nomi di playlist.Tuttavia, quando si tenta di chiudere iTunes, viene visualizzato un avviso

Una o più applicazioni utilizzano l'interfaccia di scripting di iTunes.Sei sicuro di voler uscire?

Ovviamente posso semplicemente ignorare il messaggio e premere [Esci] o semplicemente attendere circa 20 secondi, ma esiste un modo pulito per dire a iTunes che ho finito di lavorarci?

Itunes 7.7.1, Windows XP
È stato utile?

Soluzione

Ecco una cosa che ho fatto sul mio script Powershell che aggiunge podcast a iTunes.Utilizzo Juice su un server per scaricare tutti i podcast che ascolto.Lo script utilizza metodi .Net per rilasciare gli oggetti COM.Quando ho scritto il mio script iTunes avevo letto un paio di articoli che affermavano che dovresti rilasciare i tuoi oggetti COM utilizzando .NET.


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

Inoltre, eseguo i miei script per la maggior parte del tempo da un collegamento, non dal prompt di PowerShell.

In base ai tuoi commenti, ho eseguito alcuni test e ho stabilito che avrei ricevuto il messaggio durante l'esecuzione su iTunes, se avessi eseguito il mio script in modo da lasciare PowerShell in esecuzione.iTunes sembra tenerne traccia.L'esecuzione dello script in modo da uscire dal processo dopo l'esecuzione ha eliminato il messaggio.

Un metodo per eseguire lo script da PowerShell è prefissare lo script con PowerShell.

powershell .\scriptname.ps1

Il comando precedente avvierà il tuo script e quindi uscirà dal processo utilizzato per eseguirlo, ma ti lascerà comunque al prompt di PowerShell.

Altri suggerimenti

Dovresti essere in grado di impostare $ itunes su $ null.In alternativa, $itunes dovrebbe avere un metodo quit che puoi chiamare.$itunes.esci()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top