【发布时间】:2020-08-12 16:49:28
【问题描述】:
我有一个以静默模式运行程序的命令,它使用 XML 文件作为数据存储库,并使用 word 模板根据过滤器 xml 文件创建多个 word 文档。
我使用的命令是:
"P:\ath to\executable" -Username:Admin -Password:Pa55w0rd -Datadefinition:"C:\Data.xml" -Datafilter:"C:\Filter.xml" -wordtemplate:"C:\Batch\Paul1.dotx" -Targetdocument:="C:\Batch\Paul1.pdf" -filetype:PDF -Log:"C:\Logs\error.log" -Usage:DOCGENSILENT
我需要将它作为我主要管理的 PowerShell 脚本运行:
set-executionpolicy unrestricted
$datadefinition = Get-Content "C:\Data file.xml"
$datafilter = Get-Content "C:\Filter for data file.xml"
$wordTemplate = Get-Content "C:\"C:\Template\Paul1.dotx"
$targetFolder = Get-Content "C:\"C:\Paul\Paul.pdf"
Stop-Job = "Executable path" -Username:Admin -Password:Pa55w0rd -Datadefinition:%dataDefinition% -Datafilter:%dataFilter% -wordtemplate:%wordTemplate% -Targetdocument:%targetFolder% -filetype:docx -Log:%logPath% -Usage:DOCGENSILENT
Stop-Job 1
set-executionpolicy restricted
Write-Host -NoNewLine "Press any key to continue..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
我的问题是脚本启动了可执行文件但没有传递变量,谁能指导我正确的方向来解决这个问题?
【问题讨论】:
-
set targetFolder=..设置文件的路径。$datadefinition = Get-Content但是从文件中获取第一行作为内容。那么您似乎仍在 powershell 脚本中使用batch-file变量?%dataFilter% -
所以摆脱
Get-Content,只需将变量设置为$datadefinition = "C:\Data file.xml"等。将可执行路径中的变量更改为$dataDefinition而不是%dataDefinition%。另外,Stop-Job的目的是什么,我没有看到与批处理文件中的内容有任何关系?最后,您当前的batch-file会覆盖您的 2 个变量。wordTemplate和targetFolder都会以Paul1.*结束。 -
您的问题在技术上是关于从 PowerShell 运行带有参数/参数的命令,批处理文件和文件转换与您的问题无关。因此,我删除了您对batch-file 和file-conversion 的引用。此外,我删除了批处理文件的内容,只提供了批处理文件正在运行的命令行。另外,你的路径字符串有两个错误,
"C:\"C:\Template\Paul1.dotx",应该是"C:\Template\Paul1.dotx","C:\"C:\Paul\Paul.pdf",应该是"C:\Paul\Paul.pdf"。 -
Stop-Job =应该做什么?我非常怀疑它会启动一个带有参数的可执行文件。也许你想看看使用&或start-process代替。
标签: powershell command