2012-09-06 51 views
1

我试图获取使用以下代码的用户的上次登录日期。我的问题是从powershell变量$ MailboxData的PowerShell变成VB.net变量。将Powershell变量导入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 

回答

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; " & _ 
+0

我知道了,谢谢基思的结束,即正常工作。 – Dougs