1

我正在尝试使用以下代码获取用户的最后登录日期。我的问题是将 powershell 结果从 powershell 变量 $MailboxData 获取到 VB.net 变量中。

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 " & _

作为没有换行符的单行传递给 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 回答