无法在ASP.NET

时间:2017-08-03 03:22:39

标签: asp.net powershell

我们已经创建了一个用于在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

    •   
  •   

1 个答案:

答案 0 :(得分:3)

最后通过将CPU更改为x64来修复问题,这是步骤

  
      
  • 右键单击项目>>属性>> complie>>将CPU定位到x64

  •   
  • 转到工具>>选项>>项目和解决方案>>网络项目>>使用64位IIS Express

  •   

**请记得关闭VS2013并再次打开项目**

  

**来自David Brabant的提示**