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
似乎有输入错误。请仔细检查这是否只是一个复制粘贴错误或罪魁祸首。我能够修复它,谢谢。正如你所说,是打字错误