gpt4 book ai didi

c# - 术语 ' ' 未被识别为 cmdlet 的名称,

转载 作者:太空狗 更新时间:2023-10-29 23:47:29 25 4
gpt4 key购买 nike

我有一个 PowerShell 脚本存储在文件 MergeDocuments.ps1 中。当我从 Windows PowerShell 命令提示符运行脚本时,它运行良好
.\MergeDocuments.ps1 1.docx 2.docx merge.docx

从 Windows 控制台应用程序调用脚本也能正常运行。

当我尝试从 Asp.Net Web 服务调用脚本时,我遇到了一些有关注册表访问的问题。我使用模拟并将网络服务帐户权限授予注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell 以解决此问题

接下来我遇到了有关 PowerShell 无法创建类型为 OpenXmlPowerTools.DocumentSource[] 的对象的问题,因此我将以下内容添加到我的脚本中

Add-Type -Path "C:\Users\Administrator\Documents\WindowsPowerShell\Modules\OpenXmlPowerTools\OpenXmlPowerTools.dll"
Import-Module OpenXmlPowerTools

现在的问题是我收到错误消息“术语‘Merge-OpenXmlDocument’未被识别为 cmdlet 的名称,...”

我该如何解决?

PowerShell 脚本

Add-Type -Path "C:\Users\Administrator\Documents\WindowsPowerShell\Modules\OpenXmlPowerTools\OpenXmlPowerTools.dll"

Import-Module OpenXmlPowerTools

# The last argument is the path of the merged document
$noOfSourceDocs = ($($args.length) - 1)

# Create an array to hold all the source documents
[OpenXmlPowerTools.DocumentSource[]] $docs = New-Object OpenXmlPowerTools.DocumentSource[] $noOfSourceDocs

for ($i = 0; $i -lt $noOfSourceDocs; $i++)
{
$docs[$i] = New-Object -TypeName OpenXmlPowerTools.DocumentSource -ArgumentList $args[$i]
$docs[$i].KeepSection = 1
}

Merge-OpenXmlDocument -OutputPath $args[-1] -Sources $docs

网络服务.Net代码

using (new Impersonator(username, domain, password))
{
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();

RunspaceInvoke invoker = new RunspaceInvoke(runspace);
invoker.Invoke("Set-ExecutionPolicy Unrestricted");

// create a pipeline and feed it the script file
Pipeline pipeline = runspace.CreatePipeline();
Command command = new Command(ConfigurationManager.AppSettings["PowerShellScript"]);
foreach (var file in filesToMerge)
{
command.Parameters.Add(null, file);
}
command.Parameters.Add(null, outputFilename);
pipeline.Commands.Add(command);

pipeline.Invoke();
runspace.Close();
}

最佳答案

您能否尝试在 PowerShell 系统模块路径中安装 OpenXmlPowerTools 模块:

C:\Windows\system32\WindowsPowerShell\v1.0\Modules

关于c# - 术语 ' ' 未被识别为 cmdlet 的名称,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com