Вот одна вещь, которую я сделал на своем скрипте Powershell, который добавляет подкасты в iTunes. Я использую Juice на сервере, чтобы загрузить все подкасты, которые я слушаю. Сценарий использует методы .Net для освобождения объектов COM. Когда я писал свой скрипт iTunes, я прочитал несколько статей, в которых говорилось, что вы должны освобождать ваши COM-объекты с использованием .NET.
[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.