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

时间:2012-01-28 15:04:48

标签: asp.net powershell cmdlets

我正在尝试弄清楚如何在ASP.NET网站中使用Microsoft Online Services Migration Toolkit PowerShell命令(使用vb.NET)。

我开始使用有关如何在ASP.NET中使用PowerShell的指南 - 从这里开始:http://devinfra-us.blogspot.com/2011/02/using-powershell-20-from-aspnet-part-1.html

我正在尝试研究如何实现Online Services Migration Toolkit 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 CmdLets。我也不确定该行:

iss.ImportPSModule(New String() {"MSOnline"})

完全正确。有没有办法验证模块名称?

我也不确定引用.dll文件的位置和方式。目前我已将它们复制到我的bin文件夹但我无法将它们添加为引用,那么ImportPSModule语句如何知道在哪里找到它们?特别是当网站发布到最终的生产服务器时。

另一个问题,我应该使用x86还是x64 cmdlet?我正在开发Win7 x64,但不确定该网站是否构建为x86或x64?我是否需要找出服务器的架构?

1 个答案:

答案 0 :(得分:1)

“Get-MSOnlineUser -Enabled”不是命令; “Get-MSOnlineUser”是。我对你如何使用connect.Parameters.Add("Credential", ...)进一步纠正脚本有点困惑,但对于-Enabled并没有做同样的事情。

使用connect.AddArgument("Enabled")connect.Parameters.Add("Enabled", true),你应该好好去。