Пожалуйста, используйте блоки кода для кода при публикации вопроса.
-Format
в Get-Date
возвращает строку, поэтому вы не можете сравнить $old
с $_.SubmittedTime
Get-PrintJob
возвращает MSFT_PrintJob , поэтому он не содержит значение NodeName
. Однако у него есть свойство PrinterName
.
Пример
$CurrentTime = Get-Date
Get-Printer -ComputerName "Hgjyu-79ujk" |
Get-Printjob |
Where-Object {$_.jobstatus -ne "Normal" -and $_.SubmittedTime -gt (Get-Date).AddHours(-1) } | # You want -and here.
Select-Object @{name="Name";expression={$_.printerName}},
@{name="Submitted Time";expression={$_.SubmittedTime}},
jobstatus, PrinterName,
@{name="Document Name";expression={$_.documentname}},
@{n='Time Difference';e={[math]::Truncate(($CurrentTime - $_.SubmittedTime).TotalHours)}} |
Sort-Object -Property jobstatus -Descending
РЕДАКТИРОВАТЬ
Согласно вашему комментарию, если NodeName
существует как часть Get-Printer
, тогда вы можете сделать это:
$CurrentTime = Get-Date
Get-Printer -ComputerName "Hgjyu-79ujk" | Foreach-Object {
$Printer = $_
$Printer | Get-Printjob |
Where-Object {$_.jobstatus -ne "Normal" -and $_.SubmittedTime -gt (Get-Date).AddHours(-1) } | # You want -and here.
Select-Object @{name="Name";expression={$_.printerName}},
@{name="Submitted Time";expression={$_.SubmittedTime}},
jobstatus, @{name="NodeName";expression={$Printer.NodeName}},
@{name="Document Name";expression={$_.documentname}},
@{n='Time Difference';e={[math]::Truncate(($CurrentTime - $_.SubmittedTime).TotalHours)}} |
Sort-Object -Property jobstatus -Descending
}
Обратите внимание, что вывод, который вы видите в PowerShell, может быть переименован, чтобы иметь метку NodeName
. Объект MSFT_Printer обычно не имеет этого свойства. Вы можете подтвердить это, выполнив нижеприведенный список, чтобы увидеть все свойства возвращаемого объекта:
(Get-Printer)[0] | Format-List *