如何在ASP.NET站点中引用PowerShell模块

如何在ASP.NET站点中引用PowerShell模块,asp.net,powershell,cmdlets,Asp.net,Powershell,Cmdlets,我正在尝试了解如何从ASP.NET网站(使用vb.NET)中使用Microsoft Online Services迁移工具包PowerShell命令 我已经开始使用ASP.NET中有关如何使用PowerShell的指南-从这里开始: 我正在尝试解决如何实现在线服务迁移工具包PowerShell cmdlet 以下是我的代码隐藏中的一个片段: Sub GetUsers() Dim iss As InitialSessionState = InitialSessionState.Creat

我正在尝试了解如何从ASP.NET网站(使用vb.NET)中使用Microsoft Online Services迁移工具包PowerShell命令

我已经开始使用ASP.NET中有关如何使用PowerShell的指南-从这里开始:

我正在尝试解决如何实现在线服务迁移工具包PowerShell cmdlet

以下是我的代码隐藏中的一个片段:

Sub GetUsers()

    Dim iss As InitialSessionState = InitialSessionState.CreateDefault()
    iss.ImportPSModule(New String() {"MSOnline"})
    Using myRunSpace As Runspace = RunspaceFactory.CreateRunspace(iss)
        myRunSpace.Open()

        ' Execute the Get-CsTrustedApplication cmdlet.
        Using powershell As System.Management.Automation.PowerShell = System.Management.Automation.PowerShell.Create()

            powershell.Runspace = myRunSpace

            Dim connect As New Command("Get-MSOnlineUser -Enabled")
            Dim secureString As New System.Security.SecureString()
            Dim myPassword As String = "ThePassword"

            For Each c As Char In myPassword
                secureString.AppendChar(c)
            Next

            connect.Parameters.Add("Credential", New PSCredential("admin@thedomain.apac.microsoftonline.com", secureString))
            powershell.Commands.AddCommand(connect)

            Dim results As Collection(Of PSObject) = Nothing
            Dim errors As Collection(Of ErrorRecord) = Nothing

            results = powershell.Invoke()
            errors = powershell.Streams.[Error].ReadAll()

            For Each obj As PSObject In results
                Response.Write(obj.Properties("Identity").Value.ToString())
            Next

        End Using
    End Using

End Sub
当我试图通过页面运行代码时,我得到以下错误

术语“Get-MSOnlineUser-Enabled”不被识别为的名称 cmdlet、函数、脚本文件或可操作程序。检查 名称的拼写,或者如果包含路径,请验证路径 是正确的,请重试

所以我猜我还没有弄清楚如何导入在线服务迁移工具包PowerShell cmdlet。我也不确定这句话:

iss.ImportPSModule(New String() {"MSOnline"})
这是完全正确的。有没有办法验证模块名称

我也不确定在哪里以及如何引用.dll文件。目前我已经将它们复制到我的bin文件夹中,但我无法将它们添加为引用,那么ImportPSModule语句如何知道在哪里可以找到它们呢?尤其是当网站发布到最终生产服务器时

还有一个问题,我应该使用x86还是x64 cmdlet?我正在Win7 x64上开发,但不确定网站是以x86还是x64构建的?我需要知道服务器是什么体系结构吗?

“Get-MSOnlineUser-Enabled”不是命令;“Get-MSOnlineUser”是。我有点搞不懂您是如何通过
connect.Parameters.Add(“Credential”,…)
在脚本的后面纠正它的,但是对于-Enabled没有做同样的事情


使用
connect.AddArgument(“Enabled”)
connect.Parameters.Add(“Enabled”,true)
,您应该可以开始了。

我试过了。。。现在,错误为:术语“Get-MSOnlineUser”未被识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。我需要弄清楚如何确保ASP.NET站点正在访问cmdlet并确保它们已正确导入。这是一个完全愚蠢的问题,但是,您是否确实在尝试加载MSOnline模块的ASP.NET服务器上安装了该模块?