1

次のコードを使用して、ユーザーの最終ログオン日を取得しようとしています。私の問題は、powershell 変数 $MailboxData から VB.net 変数に powershell の結果を取得することです。

このdisplayname = obj.Members("alias").Value.ToString行はエラー以外は何も返しません。

誰にもアイデアはありますか?

Dim scripttext As String

scripttext = "$MailboxData = @() " & vbCrLf & _
            "$mailboxes = Get-Mailbox -ResultSize unlimited " & vbCrLf & _
            "foreach ($mailbox in $mailboxes) { " & _
            "$DBObject = new-object PSObject " & _
            "$DBObject | add-member NoteProperty -Name Alias  $Mailbox.alias " & _
            "$DBObject | add-member NoteProperty -Name LastLogonTime  (Get-MailboxStatistics $mailbox.alias).LastLogonTime " & vbCrLf & _
            "$MailboxData = $MailboxData + $DBObject " & _
            "}" & vbCrLf & _
             "$mailboxData " & vbCrLf


powershell.Commands.AddScript(scripttext)
powershell.Runspace = myRunSpace
results = powershell.Invoke()

Dim displayname As String
Dim lastLogon As String

For Each obj As PSObject In results

    Try
        displayname = obj.Members("alias").Value.ToString
    Catch ex As Exception
        displayname = Nothing
    End Try

    Try
        lastLogon = Convert.ToDateTime(obj.Members("LastLogonTime").Value.ToString)
    Catch exc As Exception
        lastLogon = Nothing
    End Try
Next
4

1 に答える 1

0

VB コードの次の行のようになります。

"foreach ($mailbox in $mailboxes) { " & _
          "$DBObject = new-object PSObject " & _
          "$DBObject | add-member NoteProperty -Name Alias  $Mailbox.alias " & _

改行なしの 1 行として PowerShell に渡されます。これらの各行の末尾に vbCrLf を追加するか、各行の末尾に PowerShell ステートメント セパレータを使用します$DBObject

"foreach ($mailbox in $mailboxes) { " & _
          "$DBObject = new-object PSObject; " & _
          "$DBObject | add-member NoteProperty -Name Alias  $Mailbox.alias; " & _
于 2012-09-09T18:40:48.513 に答える