質問

iTunes の簡単なデモとして PowersHell に次の内容を書きました。

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

これはうまく機能し、プレイリスト名のリストを取得します。ただし、iTunesを閉じようとすると警告が表示されます

1 つ以上のアプリケーションが iTunes スクリプト インターフェイスを使用しています。本当にやめる気?

もちろんメッセージを無視して [Quit] を押すか、20 秒ほど待つこともできますが、作業が終了したことを iTunes に伝えるきれいな方法はあるのでしょうか?

Itunes 7.7.1, Windows XP
役に立ちましたか?

解決

ここでは、Powershell スクリプトでポッドキャストを iTunes に追加するために実行したことを 1 つ示します。私はサーバー上で Juice を使用して、聞いているすべてのポッドキャストをダウンロードしています。スクリプトは .Net メソッドを使用して COM オブジェクトを解放します。iTunes スクリプトを作成したときに、.NET を使用して COM オブジェクトを解放する必要があると述べた記事をいくつか読みました。


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

また、スクリプトはほとんどの場合、PowerShell プロンプトからではなくショートカットから実行します。

あなたのコメントに基づいて、いくつかのテストを行った結果、PowerShell を実行したままにしてスクリプトを実行すると、iTunes に対して実行するときにメッセージが表示されることがわかりました。iTunesはそれを追跡しているようです。実行後にプロセスを終了する方法でスクリプトを実行すると、メッセージが表示されなくなりました。

PowerShell からスクリプトを実行する 1 つの方法は、スクリプトの前に powershell を付けることです。

powershell .\scriptname.ps1

上記のコマンドはスクリプトを起動し、スクリプトの実行に使用されたプロセスを終了しますが、PowerShell プロンプトが表示されたままになります。

他のヒント

$itunes を $null に設定できるはずです。あるいは、$itunes には呼び出すことができる quit メソッドが必要です。$itunes.終了()

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top