使用PS Core 6.2.3从C#调用PS代码时,导入模块不工作
我有一个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中。这是
导入模块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内部启用导入模块。