我使用 NextPVR 录制一些电视节目,并有一个 powershell 脚本将录制的 TS 文件转换为 MP4,用 MetaX 标记文件,然后打算将文件添加到 iTunes。
NextPVR 在完成录制后会自动调用一个名为 PostProcessing.bat 的批处理文件,并传递一些参数。在这个批处理文件中,我有以下命令来调用我的 Powershell 脚本:
::Place this batch file in "C:\Users\Public\NPVR\Scripts"
@ECHO OFF
cd /d "%~dp0"
SET parent=%~dp1
IF %parent:~-1%==\ SET parent=%parent:~0,-1%
:: Call PowerShell script to handle post processing.
powershell -ExecutionPolicy RemoteSigned -File "C:\Users\Steve\Dropbox\Applications\Scripts\NVPR.ps1" "%parent%" %1
EXIT
我相信这个脚本被称为本地系统,我认为这是我的主要问题。我有以下功能,以我自己的身份运行时效果很好,但通过批处理文件调用时失败:
function addToiTunes($path) {
# get reference to the running iTunes
$iTunes = New-Object -ComObject iTunes.application
$LibrarySource = $iTunes.LibrarySource
foreach ($pList in $LibrarySource.Playlists) {
if ($pList.Name -eq "Library") {
$playList = $pList
Break
}
}
try {
$playList.AddFile($path)
} catch {
return $false
}
return $true
}
有没有办法可以将 PS1 称为当前登录用户而无需使用凭据等,或者我可以将 ComObject 附加到在登录用户下运行的进程?