Где-объект работает локально, но не удаленно


Я пытаюсь изучить PowerShell. Я написал небольшой скрипт для мониторинга своих серверов Exchange. Я не могу понять, почему эта линия работает на локальной машине без проблем

Get-WmiObject -Class win32_volume -Filter 'drivetype = 3' | Where-Object 'Label' -ne "System Reserved" | ft SystemName, DriveLetter, Label, @{LABEL='FreeSpaceGB'; EXPRESSION={"{0:N0}" -f ($_.freespace/1GB)}}

Но если я введу тот же код в команду invoke, я получу эту ошибку.

Invoke-Command -ComputerName $server -credential $c -ScriptBlock {
    Get-WmiObject -Class win32_volume -Filter 'drivetype = 3' | Where-Object 'Label' -ne "System Reserved" | ft SystemName, DriveLetter, Label, @{LABEL='FreeSpaceGB'; EXPRESSION={"{0:N0}" -f ($_.freespace/1GB)}}
    }

Не может привязать аргумент к параметру 'FilterScript', поскольку он равен null. + CategoryInfo: InvalidData: (:) [Where-Object], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrornullnotallowed, Microsoft.PowerShell.Команды.WhereObject Команда

Я испробовал все, что только мог придумать, но безуспешно. Я даже проверяю с gm, и этикетка действительно существует... Любой совет..?
1 2

1 ответ:

Похоже, что конечная точка, к которой вы подключаетесь, является PowerShell 2.0, которая не имеет упрощенного синтаксиса Where-object.

Попробуйте вместо этого where-object:

Where-Object {$_.Label -ne "System Reserved"}