0

我有一个 ASP.NET MVC Web 项目,用于Microsoft.Powershell.SDK执行 PowerShell,它运行良好:

var powerShell = PowerShell.Create()
                           .AddCommand("Get-DhcpServerv4Scope")
                           .AddParameter("ComputerName", dhcpServer)
                           .Invoke();

我将 Web 应用程序迁移到 .NET 6 并使用相同的调用,现在出现错误:

在模块“DhcpServer”中找到“Get-DhcpServerv4Scope”命令,但无法加载该模块。有关更多信息,请运行“导入模块 DhcpServer”

我尝试以这种方式在 .NET 6 控制台应用程序上对其进行测试,并且效果很好:

powerShell.AddScript("Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Confirm:$false -Force; Get-DhcpServerv4Scope").Invoke();

尽管当我尝试在网络应用程序中使用代码段 2 中的代码时,我得到了异常。在这种情况下,Web 应用程序与控制台应用程序有何不同?

System.Management.Automation.CommandNotFoundException:在模块“DhcpServer”中找到“Get-DhcpServerv4Reservation”命令,但无法加载该模块。有关更多信息,请运行“Import-Module DhcpServer”。

在 System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable 输入)
在 System.Management.Automation.Runspaces.Pipeline.Invoke()
在 System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspace rs, Boolean performSyncInvoke)
在System.Management.Automation.PowerShell.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
在 System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection 1 input, PSDataCollection1 输出,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell。 CoreInvoke[TInput,TOutput](PSDataCollection 1 input, PSDataCollection1 输出,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell.Invoke(IEnumerable 输入,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell.Invoke()

4

0 回答 0