在C#调用的PowerShell Core中安装Az模块遇执行错误求助
.NET 6调用PowerShell安装Az模块失败问题
尝试通过C# .NET 6调用PowerShell脚本安装并使用Az库时,出现以下错误:
执行测试失败,原因:
New-AzResourceGroup:
行 |
8 | New-AzResourceGroup -Name 'TestRg123' -Location 'eastus2euap'
| ~~~~~~~~~~~~~~~~~~~
| 术语“New-AzResourceGroup”未被识别为 cmdlet、函数、脚本文件或可执行程序的名称。请检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。
查看ps.ErrorBuffer后发现,PowerShell Core在安装Azure模块时存在问题,这是OneGet的已知问题。
相关代码
Program.cs
using System.Diagnostics; using System.Management.Automation; using System.Management.Automation.Runspaces; var initialState = InitialSessionState.CreateDefault2(); initialState.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Unrestricted; using var ps = PowerShell.Create(initialState); var results = ps.AddScript(@" Install-PackageProvider -Name Nuget -Scope CurrentUser –Force Install-Module –Name PowerShellGet -Scope CurrentUser –Force Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force # 导入Azure模块 Import-Module 'Az' Import-Module 'Az.Accounts' Import-Module 'Az.RecoveryServices' try { New-AzResourceGroup -Name 'TestRg123' -Location 'eastus2euap' } catch { $string_err = $_ | Out-String Write-Output ""Failed to run test $testname because $string_err"" } ").Invoke(); foreach (var outputItem in results) { Debug.WriteLine(outputItem); }
ConsoleApp.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <Platforms>x64</Platforms> <PlatformTarget>x64</PlatformTarget> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.PowerShell.SDK" Version="7.2.6" /> <PackageReference Include="PowerShellStandard.Library" Version="5.1.1" /> <PackageReference Include="System.Management.Automation" Version="7.2.6" /> </ItemGroup> </Project>
详细错误信息
未处理的异常 - 消息:“Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicType”的类型初始值设定项引发异常。 名称:TypeInitializationException 堆栈跟踪: 在 Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicType.Create(Type tInterface, OrderedDictionary`2 instanceMethods, List`2 delegateMethods, List`1 stubMethods, List`2 usedInstances) 在 Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicInterface.CreateProxy(Type tInterface, Object[] instances) 在 Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicInterface.DynamicCast(Type tInterface, Object[] instances) 在 Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicInterface.DynamicCast[TInterface](Object[] instances) 在 Microsoft.PackageManagement.Internal.Utility.Plugin.DynamicInterfaceExtensions.As[TInterface](Object instance) 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletBase.get_PackageManagementHost() 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletBase.SelectProviders(String[] names) 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletWithProvider.get_SelectedProviders() 在 Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider.get_SelectedProviders() 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletWithProvider.<get_CachedSelectedProviders>b__23_0() 在 Microsoft.PackageManagement.Internal.Utility.Extensions.DictionaryExtensions.GetOrAdd[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`1 valueFunction) 在 Microsoft.PackageManagement.Internal.Utility.Extensions.Singleton`1.GetOrAdd(Func`1 newInstance, Object primaryKey, Object[] keys) 在 Microsoft.PackageManagement.Internal.Utility.Extensions.SingletonExtensions.GetOrAdd[TResult](Object primaryKey, Func`1 newInstance, Object[] keys) 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletWithProvider.get_CachedSelectedProviders() 在 Microsoft.PowerShell.PackageManagement.Cmdlets.CmdletWithProvider.GenerateDynamicParameters() 在 Microsoft.PowerShell.PackageManagement.Cmdlets.AsyncCmdlet.<>c__DisplayClass83_0.<AsyncRun>b__0()
错误截图

内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
相关产品推荐

