Cursos
Módulo
Filtrado de objetos fuera de la canalización - Training
En este módulo se explica cómo filtrar objetos fuera de la canalización mediante el cmdlet Where-Object para especificar varios criterios.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Un selector de dispositivos permite limitar los dispositivos a buscar al enumerar dispositivos, lo que le ayuda a obtener resultados más relevantes y a mejorar el rendimiento del sistema.
En la mayoría de los escenarios, obtiene un selector de dispositivos de una pila de dispositivos. Por ejemplo, puede usar GetDeviceSelector para dispositivos detectados a través de USB. Estos selectores de dispositivos devuelven una cadena de sintaxis de consulta avanzada (AQS). Para obtener más información sobre el formato AQS, consulte Uso de la sintaxis de consulta avanzada mediante programación.
API importantes
Hay algunos casos en los que es necesario enumerar dispositivos y un selector de dispositivos proporcionado no está disponible para su escenario. Un selector de dispositivos es una cadena de filtro de AQS que contiene la siguiente información. Antes de crear una cadena de filtro, debe conocer algunos fragmentos clave de información sobre los dispositivos que desea enumerar.
Al usar las API de Windows.Devices.Enumeration , se combina con frecuencia el selector de dispositivos con el tipo de dispositivo que le interesa. La lista disponible de tipos de dispositivos se define mediante la enumeración DeviceInformationKind. Esta combinación de factores le ayuda a limitar los dispositivos que están disponibles para los que le interesan. Si no especifica deviceInformationKind o el método que usa no proporciona un parámetro DeviceInformationKind, el tipo predeterminado es DeviceInterface.
Las API Windows.Devices.Enumeration usan la sintaxis AQS canónica, pero no todos los operadores son compatibles. Para obtener una lista de las propiedades que están disponibles al construir la cadena de filtro, consulte Propiedades de información del dispositivo.
Precaución
Las propiedades personalizadas definidas con el {GUID} PID
formato no se pueden usar al construir la cadena de filtro de AQS. Esto se debe a que el tipo de propiedad se deriva del nombre de propiedad conocido.
En la tabla siguiente se enumeran los operadores de AQS y qué tipos de parámetros admiten.
Operador | Tipos admitidos |
---|---|
COP_EQUAL | String, boolean, GUID, UInt16, UInt32 |
COP_NOTEQUAL | String, boolean, GUID, UInt16, UInt32 |
COP_LESSTHAN | UInt16, UInt32 |
COP_GREATERTHAN | UInt16, UInt32 |
COP_LESSTHANOREQUAL | UInt16, UInt32 |
COP_GREATERTHANOREQUAL | UInt16, UInt32 |
COP_VALUE_CONTAINS | String, string array, boolean array, GUID array, UInt16 array, UInt32 array |
COP_VALUE_NOTCONTAINS | String, string array, boolean array, GUID array, UInt16 array, UInt32 array |
COP_VALUE_STARTSWITH | Cadena |
COP_VALUE_ENDSWITH | Cadena |
COP_DOSWILDCARDS | No compatible |
COP_WORD_EQUAL | No compatible |
COP_WORD_STARTSWITH | No compatible |
COP_APPLICATION_SPECIFIC | No compatible |
Puede especificar NULL para COP_EQUAL o COP_NOTEQUAL. Esto se traduce en una propiedad sin ningún valor o que el valor no existe. En AQS, especifique NULL mediante corchetes vacíos [].
Importante
Al usar los operadores COP_VALUE_CONTAINS y COP_VALUE_NOTCONTAINS , se comportan de forma diferente con cadenas y matrices de cadenas. En el caso de una cadena, el sistema realizará una búsqueda sin distinción entre mayúsculas y minúsculas para ver si el dispositivo contiene la cadena indicada como una subcadena. En el caso de una matriz de cadenas, no se buscan subcadenas. Con la matriz de cadenas, se busca la matriz para ver si contiene toda la cadena especificada. No es posible buscar una matriz de cadenas para ver si los elementos de la matriz contienen una subcadena.
Si no puede crear una sola cadena de filtro de AQS que limitará los resultados correctamente, puede filtrar los resultados después de recibirlos. Sin embargo, se recomienda limitar los resultados de la cadena de filtro de AQS inicial tanto como sea posible al proporcionarlos a las API de Windows.Devices.Enumeration. Esto ayudará a mejorar el rendimiento de la aplicación.
En los ejemplos siguientes se muestra cómo se puede usar la sintaxis de AQS para limitar los dispositivos que desea enumerar. Todas estas cadenas de filtro se emparejan con un DeviceInformationKind para crear un filtro completo. Si no se especifica ningún tipo, recuerde que el tipo predeterminado es DeviceInterface.
Cuando este filtro está emparejado con deviceInformationKind de DeviceInterface, enumera todos los objetos que contienen la clase de interfaz de captura de audio y que están habilitados actualmente. = se traduce en COP_EQUALS.
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True
Cuando este filtro está emparejado con un DeviceInformationKind de Device, enumera todos los objetos que tienen al menos un identificador de hardware de GenCdRom. ~~ se traduce en COP_VALUE_CONTAINS.
System.Devices.HardwareIds:~~"GenCdRom"
Cuando este filtro está emparejado con un DeviceInformationKind de DeviceContainer, enumera todos los objetos que tienen un nombre de modelo que contiene la subcadena Microsoft. ~~ se traduce en COP_VALUE_CONTAINS.
System.Devices.ModelName:~~"Microsoft"
Cuando este filtro está emparejado con deviceInformationKind de DeviceInterface, enumera todos los objetos que tienen un nombre a partir de la subcadena Microsoft. ~< se traduce en COP_STARTSWITH.
System.ItemNameDisplay:~<"Microsoft"
Cuando este filtro se empareja con un DeviceInformationKind de Device, enumera todos los objetos que tienen establecida una propiedad System.Devices.IpAddress. <>[] se traduce en COP_NOTEQUALS combinados con un valor NULL .
System.Devices.IpAddress:<>[]
Cuando este filtro está emparejado con un DeviceInformationKind de Device, enumera todos los objetos que no tienen establecida una propiedad System.Devices.IpAddress . =[] se traduce en COP_EQUALS combinado con un valor NULL .
System.Devices.IpAddress:=[]
Cursos
Módulo
Filtrado de objetos fuera de la canalización - Training
En este módulo se explica cómo filtrar objetos fuera de la canalización mediante el cmdlet Where-Object para especificar varios criterios.