3

在 PowersHell 中写了以下内容作为 iTunes 的快速演示:

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

这很好用,可以拉回播放列表名称列表。但是在尝试关闭 iTunes 时会出现警告

一个或多个应用程序正在使用 iTunes 脚本接口。你确定你要退出吗?

显然,我可以忽略该消息并按 [退出] 或等待 20 秒左右,但是有没有一种干净的方法可以告诉 iTunes 我已经完成了它的工作?

Itunes 7.7.1, Windows XP
4

2 回答 2

4

这是我在将播客添加到 iTunes 的 Powershell 脚本上所做的一件事。我在服务器上使用 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 运行脚本的一种方法是在脚本前面加上 powershell。

powershell .\scriptname.ps1

上面的命令将启动您的脚本,然后退出用于运行它的进程,但仍将您留在 powershell 提示符下。

于 2008-09-09T16:34:28.537 回答
0

您应该能够将 $itunes 设置为 $null。或者,$itunes 应该有一个可以调用的退出方法。$itunes.quit()

于 2008-09-10T13:13:39.930 回答