Как ссылаться на модуль PowerShell на сайте ASP.NET
Я пытаюсь понять, как использовать команды PowerShell для Microsoft Online Services Migration Toolkit на веб-сайте 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 PowerShell для набора онлайн-сервисов. Я также не совсем уверен, если строка:
iss.ImportPSModule(New String() {"MSOnline"})
Это точно правильно. Есть ли способ проверить имя модуля?
Я также не уверен, где и как ссылаться на файлы.dll. На данный момент я скопировал их в папку bin, но не могу добавить их в качестве ссылок, так как же оператор ImportPSModule знает, где их найти? Особенно, когда веб-сайт публикуется на конечном производственном сервере.
Еще один вопрос, я должен использовать командлеты x86 или x64? Я занимаюсь разработкой на Win7 x64, но не уверен, что сайт собирается как x86 или x64? Нужно ли выяснять архитектуру сервера?
1 ответ
"Get-MSOnlineUser -Enabled" не является командой; "Get-MSOnlineUser" есть. Я немного сбит с толку, как вы сделали это правильно дальше по сценарию с connect.Parameters.Add("Credential", ...)
но не сделал то же самое для -Enabled.
использование connect.AddArgument("Enabled")
или же connect.Parameters.Add("Enabled", true)
и тебе должно быть хорошо идти.