Where-Object 在本地工作但不在远程工作
Where-Object works locally but not remotely
我正在尝试学习 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-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)}}
}
Cannot bind argument to parameter 'FilterScript' because it is null.
+ CategoryInfo : InvalidData: (:) [Where-Object], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.WhereObject
Command
我尝试了所有我能想到的方法,但不幸的是。
我什至与通用汽车核实过,标签确实存在……
有什么建议吗?
看起来您要连接的端点是 PowerShell 2.0,它没有简化的 Where-object 语法。
试试这个 where-object:
Where-Object {$_.Label -ne "System Reserved"}
我正在尝试学习 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-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)}}
}
Cannot bind argument to parameter 'FilterScript' because it is null. + CategoryInfo : InvalidData: (:) [Where-Object], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.WhereObject Command
我尝试了所有我能想到的方法,但不幸的是。 我什至与通用汽车核实过,标签确实存在…… 有什么建议吗?
看起来您要连接的端点是 PowerShell 2.0,它没有简化的 Where-object 语法。
试试这个 where-object:
Where-Object {$_.Label -ne "System Reserved"}