문제

빠른 iTunes 데모로 PowersHell에 다음을 작성했습니다.

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

이것은 잘 작동하며 재생 목록 이름 목록을 가져옵니다.그러나 iTunes를 닫으려고 하면 경고가 나타납니다.

하나 이상의 응용 프로그램이 iTunes 스크립팅 인터페이스를 사용하고 있습니다.정말 그만두시겠어요?

물론 메시지를 무시하고 [Quit]를 누르거나 20초 정도 기다릴 수도 있지만 작업이 완료되었음을 iTunes에 알릴 수 있는 깔끔한 방법이 있습니까?

Itunes 7.7.1, Windows XP
도움이 되었습니까?

해결책

다음은 iTunes에 Podcast를 추가하는 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 프롬프트는 그대로 유지됩니다.

다른 팁

$itunes를 $null로 설정할 수 있어야 합니다.또는 $itunes에 호출할 수 있는 종료 메소드가 있어야 합니다.$itunes.quit()

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top