Con PowerShell hay muchas maneras de negar un conjunto de criterios, pero la mejor manera depende de la situación. Usar un único método de negación en cada situación puede ser muy ineficiente a veces. Si usted quiere devolver todos los artículos que no eran mayores de DLL 05/01/2011, podría ejecutar:
#This will collect the files/directories to negate
$NotWanted = Get-ChildItem *.dll| Where-Object {$_.CreationTime -lt '05/01/2011'}
#This will negate the collection of items
Get-ChildItem | Where-Object {$NotWanted -notcontains $_}
Esto podría ser muy ineficiente, ya que cada elemento que pasa a través de la tubería será comparado con otro conjunto de elementos . Una manera más eficiente para obtener el mismo resultado sería hacer:
Get-ChildItem |
Where-Object {($_.Name -notlike *.dll) -or ($_.CreationTime -ge '05/01/2011')}
Como @riknik Dicho esto, echa un vistazo a:
get-help about_operators
get-help about_comparison_operators
Además, muchos cmdlets tienen un parámetro "Excluir".
# This returns items that do not begin with "old"
Get-ChildItem -Exclude Old*
para almacenar los resultados en una matriz que se puede ordenar, filtrar, reutilización, etc .:
# Wrapping the command in "@()" ensures that an array is returned
# in the event that only one item is returned.
$NotOld = @(Get-ChildItem -Exclude Old*)
# Sort by name
$NotOld| Sort-Object
# Sort by LastWriteTime
$NotOld| Sort-Object LastWriteTime
# Index into the array
$NotOld[0]
Funciona muy bien, gracias. – soandos