我正在探索PSCustomObject并且PowerShell ISE自动完成向我展示了一些我似乎无法找到更多信息的有趣内容。
如果你有一个包含PSCustomObject的变量,似乎有一个不容易找到的过滤方法。
这种过滤方法是否比使用管道和Where-Object
?
$CusomObject.Where({$_ -like '*hidden*'})
使用$CustomObject | Get-Member -Force
不会列出此重载。我发现reference to this overload here但在我的搜索中似乎找不到多少用途。
答案 0 :(得分:0)
这似乎只是执行一个脚本块并确认返回为True。从有限的测试中,PS对象上的Where更快(~1秒)。注意:Stopwatch可能不准确。 Where-Object具有文档并且比ForEach-Object执行得更快。 BeWhere PSv4中存在错误。
脚本块
write-host "Started at $(get-date)"
$j = $i.Where({$_ -like "*"})
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:00.0309266
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
write-host "Started at $(get-date)"
$j = $i | %{$_ -like "*"}
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:01.0555753
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
write-host "Started at $(get-date)"
$j = $i | ?{$_ -like "*"}
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:00.0348174