2011-04-27 15 views
7

Hice muchas búsquedas antes de publicar sin suerte. Supongamos que quiero comparar dos carpetas¿cómo puedo manejar el resultado del objeto de comparación?

compare-object @(gci c:\folder1) @(gci c:\folder2) 

veo la salida con sideIndicator y así sucesivamente, pero ¿cómo puedo hacer algo como

if objects are equals then 
    do something 
else 
    do something else 
end if 

si la tubería este cmdlet para obtener miembros Veo un método igual pero no sé cómo usarlo y ni siquiera estoy seguro de si podría resolver mi problema. ¿Hay alguna propiedad booleana que me diga si los objetos son iguales o no? Gracias por su tiempo.

EDITAR

Hola mi salvador. :) Si he entendido que tenía que hacer algo como esto:

$differences = 0 
$a = @(1,4,5,3) 
$b = @(1,3,4) 
diff $a $b -in | % {if($_.sideindicator -ne "==") {$differences+=1}} 
write-host $differences 

¿Es esta la única manera?

EDITAR 2.

Me parece que si yo no uso -includeEqual consigo sólo las diferencias, por lo que este código es suficiente.

$differences = 0 
$a = @(1,4,5,3) 
$b = @(1,3,4) 
diff $a $b | % {$differences+=1} 
write-host $differences 

y devuelve 0 si los objetos son iguales. ¿Es la forma correcta de resolver mi problema?

Respuesta

6

Básicamente, no es necesario contar con las diferencias, en cambio, si sólo encontrar '==' es suficiente para usted, es posible utilizar:

$a = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
$b = @(10, 1, 2, 3, 4, 5, 6, 7, 8, 9) 
if (diff $a $b) { 
'not equal' 
} else { 
'equal' 
} 

Cómo funciona: si la tubería (~ secuencia from diff) devuelve la colección de 0 artículos, luego al convertir a [bool], se convierte a $false. La colección no vacía se convierte a $true.

+0

Hola stej. Gracias veru mucho. Ahora veo :) –

4

Tome un vistazo a este ejemplo: http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/01/12/quicktip-Comparing-installed-HotFixes-on-a-two-node-Cluster.aspx

Usted puede utilizar el valor sideindicator y hacer una comparación de cadenas.

+0

Gracias por su apoyo costante. Adiós. ;) –

+0

Vaya, lo siento. Estaba dormido cuando todas las demás disucciones sucedieron. ¡Zonas horarias que ves! – ravikanth

+0

No hay problema. Siempre eres muy amable conmigo. Ahora me voy a dormir también. ;) –

3

Si lo que desea es un recuento de las diferencias, se puede conseguir aún más sucinta:

$a = 1..10 
$b = 3..11 
(diff $a $b).count 
Cuestiones relacionadas