Powershell scriptblock不返回任何值

Powershell scriptblock不返回任何值,powershell,Powershell,在下面的脚本中,$recexternal和$recinternal始终返回零,就好像第二个块存在一些问题一样。 但是,第一个成功执行并获得正确的$i和$e输出。 我做错了什么 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 $e = 0; $i = 0; $recexternal = 0; $recinternal = 0; $array = @("JayanManniath.Nair@contoso.com") fore

在下面的脚本中,
$recexternal
$recinternal
始终返回,就好像第二个块存在一些问题一样。 但是,第一个成功执行并获得正确的
$i
$e
输出。 我做错了什么

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

$e = 0;
$i = 0;
$recexternal = 0;
$recinternal = 0;
$array = @("JayanManniath.Nair@contoso.com")
foreach ($user in $array) {
    $sender = Get-TransportServer |
              Get-MessageTrackingLog -ResultSize Unlimited -Sender $user 
    $sender | %{
        if (($_.Source -eq "SMTP") -and ($_.EventId -eq "SEND")) {$e++}
        if (($_.Source -eq "STOREDRIVER") -and ($_.EventId -eq "DELIVER")) {$i++}
    }

    $recipient = Get-TransportServer |
                 Get-MessageTrackingLog -ResultSize Unlimited -Recipients $user
    $reipient | %{
        if (($_.Source -eq "SMTP") -and ($_.EventId -eq "RECEIVE")) {$recexternal++}
        if (($_.Source -eq "STOREDRIVER") -and ($_.EventId -eq "DELIVER" )) {$recinternal++}
    }
}

Write-Host "$user has sent $i emails internally"
Write-Host "$user has sent $e emails externally"
Write-Host "$user has received $recexternal emails from outside organization"
Write-Host "$user has received $recinternal emails from inside the organization"

除了明显的打字错误外,您的代码还错误地放置了输出,
如果
$array
中有多个
$user
,则写入主机命令
应放置在
ForEach

A
其中的对象
()。计数
而不是
每个对象的
%
)和
IF
可能更有效

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

$array = @("JayanManniath.Nair@contoso.com")
ForEach ($user in $array) {
    $sender = Get-TransportServer |
              Get-MessageTrackingLog -ResultSize Unlimited -Sender $user 

    $e = ($sender | Where-Object {($_.Source  -eq "SMTP") -and 
                                  ($_.EventId -eq "SEND")} ).Count
    $i = ($sender | Where-Object {($_.Source  -eq "STOREDRIVER") -and 
                                  ($_.EventId -eq "DELIVER")} ).Count

    $recipient = Get-TransportServer |
                 Get-MessageTrackingLog -ResultSize Unlimited -Recipients $user

    $recexternal = ($recipient | Where-Object {($_.Source  -eq "SMTP") -and 
                                               ($_.EventId -eq "RECEIVE")} ).Count
    $recinternal = ($recipient | Where-Object {($_.Source  -eq "STOREDRIVER") -and 
                                               ($_.EventId -eq "DELIVER")} ).Count

    Write-Host "$user has sent $i emails internally"
    Write-Host "$user has sent $e emails externally"
    Write-Host "$user has received $recexternal emails from outside organization"
    Write-Host "$user has received $recinternal emails from inside the organization"
}

变量名、
$reipient
$recipient
似乎有输入错误。请仔细检查这是否只是一个复制粘贴错误或罪魁祸首。我能够修复它,谢谢。正如你所说,是打字错误