0

ASP.NET Web サイト内から (vb.NET を使用して) Microsoft Online Services Migration Toolkit PowerShell コマンドを使用する方法を理解しようとしています。

ASP.NET で PowerShell を使用する方法に関するガイドの使用を開始しました - ここから: 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 フォルダーにコピーしましたが、それらを参照として追加することはできません。特に、Web サイトが最終的な運用サーバーに公開されている場合。

もう 1 つ質問があります。x86 または x64 コマンドレットを使用する必要がありますか? Win7 x64 で開発していますが、Web サイトが x86 と x64 のどちらでビルドされているかわかりません。サーバーのアーキテクチャを調べる必要はありますか?

4

1 に答える 1

1

"Get-MSOnlineUser -Enabled" はコマンドではありません。「Get-MSOnlineUser」です。スクリプトのさらに下でそれをどのように修正したのか少し混乱していますがconnect.Parameters.Add("Credential", ...)、-Enabledに対して同じことをしませんでした。

connect.AddArgument("Enabled")またはを使用するconnect.Parameters.Add("Enabled", true)と、準備完了です。

于 2012-01-28T15:51:15.030 に答える