You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PowerShell转换Pub文件为PDF时出现的Unauthorized Access异常?

问题原因

你遇到的Unauthorized Access异常核心原因是ExportAsFixedFormat方法的第二个输出参数要求传入完整的PDF文件路径,你当前传入的是文件夹路径,Publisher无法直接将内容写入文件夹对象,因此抛出访问权限错误。

解决方案
  • 首先修正输出路径参数,调用函数时传入完整的PDF文件路径,示例如下:
# 修正后的调用示例
Pub-PDF -f "C:\Users\User\Desktop\testFolder\01_afr_mod1_00.pub" -p "C:\Users\User\Desktop\testFolder\01_afr_mod1_00.pdf"
  • 如果需要支持直接传入文件夹自动生成输出文件名,可以修改函数逻辑,增加路径判断:
Function Pub-PDF($f, $p)
{
    # 新增路径判断:如果$p是文件夹,自动拼接PDF文件名
    if (Test-Path $p -PathType Container) {
        $baseName = [System.IO.Path]::GetFileNameWithoutExtension($f)
        $p = Join-Path -Path $p -ChildPath "$baseName.pdf"
    }
    $Pub = New-Object -ComObject Publisher.Application
    $Doc = $Pub.Open($f)
    $Doc.ExportAsFixedFormat([Microsoft.Office.Interop.Publisher.PbFixedFormatType]::pbFixedFormatTypePDF, $p)
    $Doc.Close()
    [gc]::Collect()
    [gc]::WaitForPendingFinalizers()
    $Pub.Quit()
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Pub)
    Remove-Variable Pub
}
# 此时直接传文件夹也可以正常运行
Pub-PDF -f "C:\Users\User\Desktop\testFolder\01_afr_mod1_00.pub" -p "C:\Users\User\Desktop\testFolder"
  • 若修正路径后仍报错,按以下步骤检查权限配置:
    • 右键目标输出文件夹,选择「属性→安全」,确认当前登录的Windows用户拥有该文件夹的写入、修改权限
    • 右键PowerShell图标,选择「以管理员身份运行」后重新执行脚本
    • 检查目标输出路径下是否存在同名PDF文件被其他软件(如Adobe Acrobat、浏览器)打开占用,关闭占用程序后重试
    • 配置Publisher COM组件权限:按下Win+R输入dcomcnfg打开组件服务,依次进入「组件服务→计算机→我的电脑→DCOM配置」,找到「Microsoft Publisher Application」右键选择「属性→安全」,分别编辑「启动和激活权限」「访问权限」,添加当前用户账户,授予本地启动、本地激活、本地访问权限。

内容的提问来源于stack exchange,提问作者user1676729

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:09:03