我正在尝试使用Powershell中的Kleopatra将.txt文件加密为.txt.gpg文件。但是在PowerShell中出现错误。任何帮助将不胜感激。
下面是我尝试过的代码段:
$kleopatraPath = "C:\Program Files (x86)\GNU\GnuPG\bin\kleopatra.exe"
$inputFile = "D:\Work\data.txt"
$expectedOutputFile = "D:\Work\data.txt.gpg"
$encryptionKeyPath = "D:\Work\key.asc"
Invoke-Item $kleopatraPath {-i --import-certificate $encryptionKeyPath -e -- encrypt $inputFile }
预期结果:输出文件“ D:\ Work \ data.txt.gpg”。
我遇到的错误:
Invoke-Item : A positional parameter cannot be found that accepts argument '-i --import-certificate "D:\Work\QA Batches\CCI\CCI-10050 FW Conversant UC4 Job request\encryption key\narnia.epsilon.com.asc" -e -- encrypt "D:\Work\QA Batches\CCI\CCI-10050 FW Conversant UC4 Job request\test\ etInvAdjust_invadjustcre_2223539_1_2019-04-10_10-49-02-856 - Copy2.xml"'. At line:1 char:1 + Invoke-Item "C:\Program Files (x86)\GNU\GnuPG\bin\kleopatra.exe" {-i ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeItemCommand
答案 0 :(得分:0)
从TechNet上查看运行此类外部工具的定义方法。
PowerShell: Running Executables
按照安斯加的建议:
- 呼叫运营商和Technet
为什么:用于将字符串视为SINGLE命令。对交易有用 带有空格。
在PowerShell V2.0中,如果您正在运行7z.exe(7-Zip.exe)或其他 以数字开头的命令,您必须使用命令 调用运算符&。
PowerShell V3.0解析器现在更加智能,在这种情况下,您不必 需要&了。
详细信息:运行命令,脚本或脚本块。呼叫接线员, 也称为“调用运算符”,使您可以运行以下命令 存储在变量中并由字符串表示。因为打电话 操作员不解析命令,无法解释命令 参数
# Example:
& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen
当外部命令具有很多参数时,事情可能会变得棘手 或者参数或路径中有空格!
对于空格,您必须嵌套引号,而结果却不是 永远清楚!
在这种情况下,最好像这样将所有内容分开:
$CMD = 'SuperApp.exe'
$arg1 = 'filename1'
$arg2 = '-someswitch'
$arg3 = 'C:\documents and settings\user\desktop\some other file.txt'
$arg4 = '-yetanotherswitch'
& $CMD $arg1 $arg2 $arg3 $arg4
# or same like that:
$AllArgs = @('filename1', '-someswitch', 'C:\documents and settings\user\desktop\some other file.txt', '-yetanotherswitch')
& 'SuperApp.exe' $AllArgs
或启动过程。
- 启动过程(启动/ SAP)Technet
为什么:启动一个进程并返回.Net进程对象,如果 提供了PassThru。它还允许您控制启动过程的环境(用户配置文件,输出重定向 等等)。您还可以使用Verb参数(右键单击文件, 动作列表),以便例如播放wav文件。
详细信息:执行一个程序,返回程序的过程对象。 应用。允许您控制文件(动词 以上所述)并控制应用运行的环境。 您还可以等待过程结束。你也可以 订阅流程Exited事件。
# Example:
# starts a process, waits for it to finish and then checks the exit code.
$p = Start-Process ping -ArgumentList "invalidhost" -wait -NoNewWindow -PassThru
$p.HasExited
$p.ExitCode
# to find available Verbs use the following code.
$startExe = new-object System.Diagnostics.ProcessStartInfo -args PowerShell.exe
$startExe.verbs