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

GPG提示找不到指定文件但文件存在的PowerShell脚本问题

问题原因与解决方案

核心问题

你遇到的加密报错,本质是**Start-Process的参数传递逻辑错误**:当把GPG的所有参数拼接成单个字符串传递给ArgumentList时,PowerShell会将整个字符串当作一个参数传给GPG,导致GPG无法正确解析命令和文件路径。单个过滤器时能运行只是偶然情况,参数数量少未触发解析故障。

修正后的加密代码

Get-ChildItem -Path $Source -Include $FileFilter -Recurse | ForEach-Object -Verbose {
    $FileFullPath = $_.FullName
    
    Write-Host "Encrypting" $FileFullPath
    
    $NewEncryptFile = $_.FullName + '.PGP'
    Write-Host "New file name is $NewEncryptFile."
    
    Write-Host "In test. Using GnuPG."
    Write-Host $NewEncryptFile
    Write-Host $FileFullPath

    # 改用数组传递参数,每个参数作为独立元素
    $gpgArgs = @(
        "--batch",
        "--yes",
        "--output", $NewEncryptFile,
        "--encrypt",
        "--recipient", $GPGUser,
        $FileFullPath
    )

    Start-Process -FilePath $GPGExePath -RedirectStandardError "E:\Scripts\error.txt" -Wait -ArgumentList $gpgArgs
}

额外验证项

  • 确认$GPGExePath是GPG可执行文件的完整路径(例如"C:\Program Files\GnuPG\bin\gpg.exe"),路径含空格时数组传递会自动处理引号问题。
  • 检查$GPGUser是否为有效的GPG收件人ID或邮箱,避免因收件人配置错误间接引发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:06:18