Как ссылаться на модуль PowerShell на сайте ASP.NET - PullRequest
0 голосов
/ 28 января 2012

Я пытаюсь выяснить, как использовать команды PowerShell для набора средств Microsoft Online Services из веб-сайта ASP.NET (с использованием vb.NET).

Я начал с руководства покак использовать PowerShell в ASP.NET - отсюда: http://devinfra -us.blogspot.com / 2011/02 / using-powershell-20-from-aspnet-part-1.html

Я пытаюсь понять, как реализовать командлеты PowerShell для набора онлайн-сервисов миграции.

Вот фрагмент из моего кода:

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» не распознается как имя командлета, функции, файла сценария или работоспособной программы.,Проверьте правильность написания имени или, если путь был указан, убедитесь, что путь указан правильно, и повторите попытку.

Так что, я полагаю, я не понял, как импортировать онлайн-службыНабор инструментов миграции PowerShell CmdLets.Я также не совсем уверен, что строка:

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

является точно правильной.Есть ли способ проверить имя модуля?

Я также не уверен, где и как обращаться к файлам .dll.На данный момент я скопировал их в папку bin, но не могу добавить их в качестве ссылок, так как же оператор ImportPSModule знает, где их найти?Особенно, когда веб-сайт публикуется на конечном производственном сервере.

Еще один вопрос, должен ли я использовать командлеты x86 или x64?Я занимаюсь разработкой на Win7 x64, но не уверен, что сайт собирается как x86 или x64?Нужно ли выяснять архитектуру сервера?

1 Ответ

1 голос
/ 28 января 2012

«Get-MSOnlineUser -Enabled» не является командой; "Get-MSOnlineUser" есть. Я немного сбит с толку, как вы исправили это дальше по сценарию с connect.Parameters.Add("Credential", ...), но не сделали то же самое для -Enabled.

Используйте connect.AddArgument("Enabled") или connect.Parameters.Add("Enabled", true) и все будет хорошо.

...