我们已经创建了一个用于在asp.net中运行PowerShell的迷你Web程序。 PowerShell命令运行正常。但是当我们尝试导入MSOnline模块时,将显示以下错误:
无法加载文件或程序集 '文件:/// C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ MSOnline \ Microsoft.Online.Administration.Automation.PSModule.dll' 或其中一个依赖项。尝试加载程序 格式不正确。
Dim Ps As PowerShell = PowerShell.Create()
Dim tempScript As String = "Import-Module MSOnline " + Environment.NewLine
tempScript = tempScript + "$username = 'xxx@xxx.com' " + Environment.NewLine
tempScript = tempScript + "$password = 'abcd1234' " + Environment.NewLine
tempScript = tempScript + "$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force " + Environment.NewLine
tempScript = tempScript + "$creds = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $secureStringPwd " + Environment.NewLine
tempScript = tempScript + "Connect-MsolService -Credential $creds " + Environment.NewLine
tempScript = tempScript + "Get-MsolDomain" + Environment.NewLine
Ps.Commands.AddScript(tempScript)
' Execute the script
Dim results = Ps.Invoke()
PS C:> $ PSVersionTable |出字符串
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.3.9600.17400
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
更新:2017年8月3日
尝试使用process.start调用CMD,然后cmd调用powershell,但它也失败了。同样的错误信息。
Private Function RunBatch() As String
Dim proc As New Process
Dim strBuilder As StringBuilder = New System.Text.StringBuilder
proc.StartInfo.FileName = "C:\temp\enableMFA.bat"
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.Start()
proc.WaitForExit()
Dim output() As String = proc.StandardOutput.ReadToEnd.Split(CChar(vbLf))
For Each ln As String In output
strBuilder.Append(ln & vbNewLine + vbLf)
Next
Return strBuilder.ToString
End Function
错误讯息:
C:\ Users \ admin \ Desktop \ Preview \ Preview \ bin \ Debug> powershell -File “C:\ temp \ enableMFA.ps1”
Import-Module:无法加载文件或程序集 '文件:/// C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ MSOnline \ Microsoft.Online.Administration.Automation.PSModule.dll' 或
其中一个依赖项。尝试加载带有的程序 格式不正确。
在C:\ temp \ enableMFA.ps1:1 char:1
导入模块MSOnline
~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo:InvalidOperation :( :) [Import-Module],BadImageFormatException
FullyQualifiedErrorId:FormatXmlUpdateException,Microsoft.PowerShell.Commands.ImportModuleCommand
答案 0 :(得分:3)
最后通过将CPU更改为x64来修复问题,这是步骤
右键单击项目>>属性>> complie>>将CPU定位到x64
转到工具>>选项>>项目和解决方案>>网络项目>>使用64位IIS Express
**请记得关闭VS2013并再次打开项目**
**来自David Brabant的提示**