2015-07-05 2 views
1

Я использовал powershell в версии 2009 и использовал Group-object в своем скрипте.Непоследовательные результаты командлета Group-object

$todaye = (Get-Date -Hour 0 -Minute 00 -Second 00) 
$yesterday = $todaye.AddDays(-1) 

$EventLogs = 'Operations Manager' 
$csv = @() 
$strlog = $EventLogs.Split(',') 
foreach($log in $strlog) 
    { 
     $log | ForEach-Object{ get-eventlog -log $_ -After $yesterday - 
     Before $todaye | Group-Object EventID,EntryType,Source,MachineName, 
    {(([String]$_.TimeGenerated) -split " ")[0]}, 
    {(([String]$_.TimeGenerated) -split " ")[1]}, $_ -NoElement | 
       Sort-Object Count -Descending | 
       Select-Object count,name | ForEach-Object{ 
     $properties = @{ 
     'ServerName' = ($_.Name -split ", ")[3]; 
     'day' = (($_.Name -split ", ")[4] -split " ")[0]; 
     'time' = (($_.Name -split ", ")[5]); 
     'EventID' = ($_.Name -split ", ")[0]; 
     'EventType' = ($_.Name -split ", ")[1]; 
     'Source' = ($_.Name -split ", ")[2]; 
     'Count' = $_.Count; 

     } 
    $psobject = new-object psobject -Property $properties 
    $csv += $psobject 
      } 
     } 
    } 

после запуска моего сценария У меня есть следующая ошибка.

Group-Object : Cannot convert System.Management.Automation.PSObject to one 
of the following types {System.String, 
System.Management.Automation.ScriptBlock}. 

Я запустил свой скрипт в powersell 2012 и не допустил никаких ошибок. как я могу это сделать для решения этой ошибки.

+1

'{(. ([String] $ _ TimeGenerated) -split" «) [1 ]}, $ _ -NoElement' -> '{(([String] $ _. TimeGenerated) -split" ") [1]} -NoElement' – PetSerAl

ответ

0

$_ Удалите из второго {(([String]$_.TimeGenerated) линии, то он будет работать на 2 PowerShell, а так:

{(([String]$_.TimeGenerated) -split " ")[1]} -NoElement 
Смежные вопросы