salut,
une petite amelioration du filtre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?xml version="1.0" encoding="utf-8" ?>
<Types>
<Type>
<Name>System.Array</Name>
<Members>
<ScriptMethod>
<Name>Where</Name>
<Script>
$arg = $args[0] -as [String]
$members = ($this |gm -Type *property |select -Unique -Expand name) +'PSItem'
$members | foreach {
if($arg -match "\b$_\b") {
if($Matches[0] -eq 'PSItem')
{ $arg=$arg -replace "(?<=\W|^)$_\b",'$$_'
}
else
{ $arg=$arg -replace "(?<=\W|^)$_\b",'$$_.$0'
}
}
}
$sb=$ExecutionContext.InvokeCommand.NewScriptBlock($arg)
$this | Where-Object -Filter $sb
</Script>
</ScriptMethod>
</Members>
</Type>
</Types> |
apres que vous mettiez à jour le fichier de configuration:
PS II> update-typeData $env:script/dsc/dfe.ps1xml -verbose
vous pouvez maintenant l'utilisez ainsi:
1 2 3 4
| PS II> $items = Get-ChildItem $env:windir
PS II> $items.Where("VersionInfo.isPatched") | select -expand name
45.exe |
1 2 3 4 5 6 7 8 9 10
| PS II> (0:0:0 421,00) PS > $items.Where("!PSISContainer -and (Length -gt 2mb -or basename -like '*e')")
Répertoire*: D:\WINDOWS
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 30/04/2011 16:55 0 Trace.log
-a--- 05/08/2013 06:54 5.6mb Win3.log |
1 2 3 4 5
| PS II> (get-process).where("StartTime -and Path -and name.length -lt 4")
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
40 3 1028 3456 31 0,28 1496 osk |
à noter que la propriété PSitem est l'objet en court passé par le pipeline en d'autre terme "$_"
Partager