Pergunta

Escrevi o seguinte no PowersHell como uma demonstração rápida do iTunes:

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

Isso funciona bem e recupera uma lista de nomes de listas de reprodução.Porém ao tentar fechar o iTunes aparece um aviso

Um ou mais aplicativos estão usando a interface de script do iTunes.Você tem certeza que quer sair?

Obviamente, posso simplesmente ignorar a mensagem e pressionar [Sair] ou apenas esperar cerca de 20 segundos, mas existe uma maneira limpa de informar ao iTunes que terminei de trabalhar com ele?

Itunes 7.7.1, Windows XP
Foi útil?

Solução

Aqui está uma coisa que fiz em meu script Powershell que adiciona podcasts ao iTunes.Eu uso o Juice em um servidor para baixar todos os podcasts que ouço.O script usa métodos .Net para liberar os objetos COM.Quando escrevi meu script do iTunes, li alguns artigos que afirmavam que você deveria liberar seus objetos COM usando .NET.


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

Também executo meus scripts na maioria das vezes a partir de um atalho, não do prompt do PowerShell.

Com base em seus comentários, fiz alguns testes e determinei que receberia a mensagem ao executar no iTunes, se executasse meu script de uma forma que deixasse o PowerShell em execução.O iTunes parece acompanhar isso.A execução do script de maneira que saia do processo após a execução eliminou a mensagem.

Um método de executar seu script no PowerShell é prefixá-lo com o PowerShell.

powershell .\scriptname.ps1

O comando acima iniciará seu script e sairá do processo usado para executá-lo, mas ainda deixando você no prompt do PowerShell.

Outras dicas

Você deve conseguir definir $itunes como $null.Alternativamente, $itunes deve ter um método quit que você possa chamar.$itunes.quit()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top