Este enunciado ha sido probado por nuestros expertos para garantizar la exactitud de nuestro contenido.
Solución:
Después de 1,5 años, el cmdlet que había pegado en la respuesta original ha sufrido tantas actualizaciones que ha quedado completamente obsoleto. Por lo tanto, he reemplazado el código y el Léame con un enlace a la última versión.
Unir-Objeto
Principales características:
- Sintaxis intuitiva (similar a SQL)
- Fusión inteligente de propiedades
- Comandos de unión predefinidos para actualizar, fusionar y tipos de unión específicos
- Tubería bien definida para los objetos de entrada (izquierda) y los objetos de salida (conserva la memoria cuando se usa correctamente)
- Funciona aproximadamente un 40 % más rápido que Compare-Object en listas de objetos grandes
- Admite objetos (personalizados), tablas de datos y diccionarios (por ejemplo, tablas hash) para la entrada
- Propiedades inteligentes y expresiones de propiedades calculadas
- Expresiones de relaciones personalizadas
- Fácil instalación (abastecimiento de puntos)
- Admite PowerShell para Windows (5.1) y PowerShell Core
El cmdlet Join-Object se puede descargar desde la Galería de PowerShell con el comando:
Install-Script -Name Join
El cmdlet Join-Object revela los siguientes comandos de proxy con sus propios (-JoinType
y -Property
) por defecto:
InnerJoin-Object
(AliasInnerJoin
oJoin
), combina los objetos relacionadosLeftJoin-Object
(AliasLeftJoin
), combina los objetos relacionados y agrega el resto de los objetos de la izquierdaRightJoin-Object
(AliasRightJoin
), combina los objetos relacionados y agrega el resto de los objetos correctosFullJoin-Object
(AliasFullJoin
), combina los objetos relacionados y agrega el resto de los objetos izquierdo y derechoCrossJoin-Object
(AliasCrossJoin
), combina cada objeto de la izquierda con cada objeto de la derechaUpdate-Object
(AliasUpdate
), actualiza el objeto izquierdo con el objeto derecho relacionadoMerge-Object
(AliasMerge
), actualiza el objeto de la izquierda con el objeto de la derecha relacionado y agrega el resto de los nuevos objetos de la derecha (no relacionados)
Léame
El Léame completo (y el código fuente) está disponible en GitHub: https://github.com/iRon7/Join-Object
Instalación
Después de descargar (Install-Script -Name Join
), el script puede ser invocado simplemente por abastecimiento de puntos:
. .Join.ps1
También puede considerar convertir el script en un módulo de PowerShell renombrándolo a un módulo de PowerShell (.psm1
) y moverlo a una de las carpetas del módulo definidas en $env:PSModulePath
. Para obtener más detalles, consulte: Cómo escribir un módulo de script de PowerShell.
Nota: los Import-Module
Se requiere el comando para cargar los comandos del proxy.
Responder
Para responder al ejemplo real en la pregunta:
$reservations | LeftJoin $leases -On IP
IP MAC Name
-- --- ----
192.168.1.1 001D606839C2 Apple
192.168.1.2 00E018782BE1 Pear
192.168.1.3 0022192AF09C Banana
192.168.1.4 0013D4352A0D
Ejemplos
Se pueden encontrar más ejemplos en las preguntas relacionadas de Stackoverflow en:
- Combinar varios archivos CSV
- Combine dos CSV: agregue CSV como otra columna
- Comando CMD o Powershell para combinar (fusionar) las líneas correspondientes de dos archivos
- ¿Puedo usar comandos SQL (como unir) en objetos en powershell, sin ningún servidor/base de datos SQL involucrado?
- Comando CMD o Powershell para combinar (fusionar) las líneas correspondientes de dos archivos
- Compare dos CSV, haga coincidir las columnas en 2 o más columnas, exporte columnas específicas de ambos CSV con PowerShell
- Combinar dos archivos CSV mientras se agregan entradas nuevas y se sobrescriben las existentes
- Fusionar dos CSV y luego reordenar las columnas en la salida
- Combinar dos archivos CSV mientras se agregan entradas nuevas y se sobrescriben las existentes
- Combine de manera eficiente conjuntos de datos de objetos grandes que tengan múltiples coincidencias keys
Y en el script de prueba Join-Object.
Lee Holmes escribió una publicación de blog sobre una función Unir-Objeto que hace lo que usted quiere. Lástima que aún no esté integrado en PowerShell.
Si conservas algún reparo o disposición de arreglar nuestro reseña eres capaz de escribir una anotación y con mucho gusto lo estudiaremos.