结合powershell命令

时间:2012-04-10 21:53:29

标签: powershell powershell-v2.0 powershell-remoting

伙计我有这个独特的问题,一直在为我的答案而烦恼。我基本上有两个很好的运行脚本,但我需要将它们组合起来。由于某些原因,这不起作用,我得到所有类型的语法PowerShell错误。

第一个正常运行的脚本。请参阅下面的第二个脚本

Get-Content c:\list.txt | foreach {
    Get-Mailboxstatistics -id $_ | foreach{
        $mbx = $_ | select DisplayName, @{Label=’MailboxSize("MB")’;Expression={$_.TotalItemSize/1MB}}, ItemCount
        $date_captured=get-date | select datetime

        Get-Mailbox -id $_ | foreach{
            $mbx | add-member -type noteProperty -name Alias -value $_.Alias
            $mbx | add-member -type noteProperty -name ServerName -value $_.ServerName
            $mbx | add-member -type noteProperty -name ProhibitSendReceiveQuota -value $.ProhibitSendReceiveQuota 
            $mbx | add-member -type noteProperty -name UseDatabaseQuotaDefaults -value $.UseDatabaseQuotaDefaults 
            $mbx | add-member -type noteProperty -name IssueWarningQuota -value $_.IssueWarningQuota
        } $mbx, $date_captured

    }

}

这是第二个运行的命令。这本身很有效,并再次尝试

将此与上面的命令结合起来就失败了。

get-mailboxfolderstatistics -id "alias" | select name, foldersize, itemsinfolder

现在我想要的是让我的输出得到如下所示。

  

DisplayName MailboxSize(“MB”)ItemCount
  别名ServerName
  ProhibitSendReceiveQuota UseDatabaseQuotaDefaults IssueWarningQuota

     

日期时间:2012年4月10日星期二下午4:04:28

     

名称Foldersize Itemsinfolder topofinfromationstore 0 3日历
  1234 54收件箱1024785 241已发送邮件14745 54已删除   项目5414745 875

2 个答案:

答案 0 :(得分:1)

您可以使用Out-File记录两个命令的输出,例如:

<first-command> | Out-File c:\log.txt
<second-command> | Out-File c:\log.txt -Append

或者如果您更喜欢重定向运算符:

<first-command>   > c:\log.txt
<second-command> >> c:\log.txt

答案 1 :(得分:1)

如果我按照您的问题,我认为您想要做的是组合两个命令的结果,以便最终得到一个新对象。此代码将使用您似乎遵循的值将自定义对象写入管道。要保存到文件,请运行脚本并将其传输到Out-File或其他任何内容。

Get-Content c:\list.txt | foreach {
Get-Mailboxstatistics -id $_ | foreach-object {
    #define a hash table of properties
    $size=($_.TotalItemSize)/1MB
    $props=@{
    MailboxSizeMB=$size;
    Displayname=$_.DisplayName;
    ItemCount=$_.ItemCount;
    DateCaptured=Get-Date;
    } #close hash

    Get-Mailbox -id $_ | foreach-object {
        $props.Add("Alias",$_.Alias)
        $props.Add("ServerName",$_.ServerName)
        $props.Add("ProhibitSendReceiveQuota",$_.ProhibitSendReceiveQuota)
        $props.Add("UseDatabaseQuotaDefaults",$_.UseDatabaseQuotaDefaults)
        $props.Add("IssueWarningQuota",$_.IssueWarningQuota)
    } #foreach mailbox

    #write a custom object
    New-Object -TypeName PSObject -Property $props

} #foreach mailboxstatistic

} #foreach内容