Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PS Core 6.2.3从C#调用PS代码时,导入模块不工作_C#_.net_Powershell_Sdk_Core - Fatal编程技术网

使用PS Core 6.2.3从C#调用PS代码时,导入模块不工作

使用PS Core 6.2.3从C#调用PS代码时,导入模块不工作,c#,.net,powershell,sdk,core,C#,.net,Powershell,Sdk,Core,我有一个PS脚本,它有一个导入模块psmod1.psm1语句 在PS脚本中,我执行一个get模块,然后将所有加载模块的名称写入一个文本文件 当从CLI上的pwsh运行时脚本运行良好,我看到写入文本文件的psmod1.psm1 我正在从.NET核心C#应用程序中调用脚本。这次脚本运行正常,但没有模块名写入文本文件(我正在编写一些其他文本,以确保文件本身被成功写入,等等,所有这些都可以正常工作) 因此,由于PS脚本中的import module似乎不起作用,因此我将模块加载添加到C#code中。这是

我有一个PS脚本,它有一个
导入模块psmod1.psm1
语句

在PS脚本中,我执行一个
get模块
,然后将所有加载模块的名称写入一个文本文件

当从CLI上的
pwsh
运行时脚本运行良好,我看到写入文本文件的
psmod1.psm1

我正在从.NET核心C#应用程序中调用脚本。这次脚本运行正常,但没有模块名写入文本文件(我正在编写一些其他文本,以确保文件本身被成功写入,等等,所有这些都可以正常工作)

因此,由于PS脚本中的
import module
似乎不起作用,因此我将模块加载添加到C#code中。这是通过使用
initialsessionstate.CreateDefault()
然后使用
ImportPSModule
完成的

我仍然得到相同的结果,似乎对于通过
RunSpaceFactory.CreateRunspace
从C#内调用的PS代码,不可能在PS代码文件内或从C#内导入模块。我已经在Windows 2008R2和Windows 2012R2上对此进行了测试。

我将C#中的代码更改为使用PowerShell.Create而不是CreatePipeline(),将PS文件读入C#字符串并通过AddScript将其提供给PowerShell实例,现在PS代码中的import module语句工作正常。我可以接受这一点,虽然这是一个很大的痛苦,因为所有的路径等现在都不同了,我必须解释这一点。我仍然不知道如何使用PowerShell。从C#创建时会在PS中导入模块,而使用从C#创建的CreatePipeline()时会在PS中导入模块。我将C#中的代码更改为使用PowerShell。创建而不是CreatePipeline(),将PS文件读入C#字符串,并通过AddScript将其提供给PowerShell实例,现在,PS代码中的import module语句工作正常。我可以接受这一点,虽然这是一个很大的痛苦,因为所有的路径等现在都不同了,我必须解释这一点。使用PowerShell时,我仍然不知道。从C#创建会在PS内部启用导入模块,而使用从C#创建的CreatePipeline()不会在PS内部启用导入模块。