2008-09-09 47 views
2

写在PowerShell中下面作为一个快速的iTunes演示: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 
+0

PowersHell - 我喜欢它:) – samjudson 2008-09-10 13:22:37

回答

4

下面是我在PowerShell脚本中添加播客到iTunes的一件事。我在服务器上使用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提示符运行。

根据您的意见,我做了一些测试,并确定我会在运行iTunes时收到消息,如果我以使PowerShell运行的方式运行我的脚本。 iTunes似乎跟踪了这一点。以运行后退出处理的方式运行脚本,消除该消息。

从powershell运行脚本的一种方法是使用powershell为脚本添加前缀。

powershell .\scriptname.ps1

上面的命令将启动脚本,然后退出这是用来运行它的进程,但仍让你在PowerShell提示符。

+0

不幸的是,我不工作。我已经尝试多次打开和关闭iTunes,以确保没有其他人试图使用iTunes,然后使用上面的行来运行我的脚本,并退出相同的结果。 – 2008-09-09 16:42:53

+0

我每天都在使用我的脚本,但我没有收到那条消息。你有没有其他的工具可以访问iTunes?您是否使用任何其他iTunes对象?也许你需要重新启动才能清理它,一旦你得到这个消息? – bruceatk 2008-09-09 17:04:32

0

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