about_Arrays

Descripción breve

Describe las matrices, que son estructuras de datos diseñadas para almacenar colecciones de elementos.

Descripción larga

Una matriz es una estructura de datos diseñada para almacenar una colección de elementos. Los elementos pueden ser del mismo tipo o de tipos diferentes.

A partir de Windows PowerShell 3.0, una colección de cero o un objeto tiene algunas propiedades de matrices.

Creación e inicialización de una matriz

Para crear e inicializar una matriz, asigne varios valores a una variable. Los valores almacenados en la matriz se delimitan con una coma y se separan del nombre de la variable por el operador de asignación (=).

Por ejemplo, para crear una matriz denominada $A que contiene los siete valores numéricos (enteros) de 22, 5, 10, 8, 12, 9 y 80, escriba:

$A = 22,5,10,8,12,9,80

La coma también se puede usar para inicializar una sola matriz de elementos colocando la coma antes del único elemento.

Por ejemplo, para crear una sola matriz de elementos denominada $B que contiene el valor único de 7, escriba:

$B = ,7

También puede crear e inicializar una matriz mediante el operador range (..). En el ejemplo siguiente se crea una matriz que contiene los valores de 5 a 8.

$C = 5..8

Como resultado, $C contiene cuatro valores: 5, 6, 7 y 8.

Cuando no se especifica ningún tipo de datos, PowerShell crea cada matriz como una matriz de objetos (System.Object[]). Para determinar el tipo de datos de una matriz, use el GetType() método . Por ejemplo:

$A.GetType()

Para crear una matriz fuertemente tipada, es decir, una matriz que solo puede contener valores de un tipo determinado, convierta la variable como un tipo de matriz, como string[], long[]o int32[]. Para convertir una matriz, precede al nombre de la variable con un tipo de matriz entre corchetes. Por ejemplo:

[int32[]]$ia = 1500, 2230, 3350, 4000

Como resultado, la $ia matriz solo puede contener enteros.

Puede crear matrices que se conviertan a cualquier tipo admitido en .NET. Por ejemplo, los objetos que Get-Process recuperan para representar los procesos son del tipo System.Diagnostics.Process . Para crear una matriz fuertemente tipada de objetos de proceso, escriba el siguiente comando:

[Diagnostics.Process[]]$zz = Get-Process

Operador de subexpresión de matriz

El operador de subexpresión de matriz crea una matriz a partir de las instrucciones que contiene. Sea cual sea la instrucción dentro del operador, el operador lo coloca en una matriz. Incluso si hay cero o un objeto.

La sintaxis del operador de matriz es la siguiente:

@( ... )

Puede usar el operador de matriz para crear una matriz de cero o un objeto. Por ejemplo:

$a = @("Hello World")
$a.Count
1
$b = @()
$b.Count
0

El operador de matriz es útil en scripts cuando se obtienen objetos, pero no sabe cuántos esperar. Por ejemplo:

$p = @(Get-Process Notepad)

Para obtener más información sobre el operador de subexpresión de matriz, consulte about_Operators.

Acceso y uso de elementos de matriz

Lectura de una matriz

Puede hacer referencia a una matriz con su nombre de variable. Para mostrar todos los elementos de la matriz, invoque el nombre de la matriz. Por ejemplo, $a es una matriz de los números del 0 al 9:

$a
0
1
2
3
4
5
6
7
8
9

Puede hacer referencia a los elementos de una matriz mediante un índice. Incluya el número de índice entre corchetes. Los valores de índice comienzan en 0. Por ejemplo, para mostrar el primer elemento de la $a matriz, escriba:

$a[0]
0

Para mostrar el tercer elemento de la $a matriz, escriba:

$a[2]
2

Puede recuperar parte de la matriz mediante un operador de intervalo para el índice. Por ejemplo, para recuperar el segundo a quinto elemento de la matriz, escriba:

$a[1..4]
1
2
3
4

Los números negativos cuentan desde el final de la matriz. Por ejemplo, -1 hace referencia al último elemento de la matriz. Para mostrar los tres últimos elementos de la matriz, en orden ascendente de índice, escriba:

$a = 0 .. 9
$a[-3..-1]
7
8
9

Si escribe índices negativos en orden descendente, la salida cambia.

$a = 0 .. 9
$a[-1..-3]
9
8
7

Sin embargo, tenga cuidado al usar esta notación. La notación pasa del límite final al principio de la matriz.

$a = 0 .. 9
$a[2..-2]
2
1
0
9
8

Además, un error común es suponer $a[0..-2] que hace referencia a todos los elementos de la matriz, excepto por el último. Hace referencia a los elementos primero, último y segundo a último de la matriz.

Puede usar el operador más (+) para combinar intervalos con una lista de elementos de una matriz. Por ejemplo, para mostrar los elementos en las posiciones de índice 0, 2 y 4 a 6, escriba:

$a = 0 .. 9
$a[0,2+4..6]
0
2
4
5
6

Además, para enumerar varios rangos y elementos individuales, puede usar el operador más. Por ejemplo, para enumerar los elementos cero a dos, cuatro a seis y el elemento en el octavo tipo posicional:

$a = 0..9
$a[+0..2+4..6+8]
0
1
2
4
5
6
8

Iteraciones sobre elementos de matriz

También puede usar construcciones de bucle, como foreachbucles , fory while , para hacer referencia a los elementos de una matriz. Por ejemplo, para usar un foreach bucle para mostrar los elementos de la $a matriz, escriba:

$a = 0..9
foreach ($element in $a) {
  $element
}
0
1
2
3
4
5
6
7
8
9

El foreach bucle recorre en iteración la matriz y devuelve cada valor de la matriz hasta llegar al final de la matriz.

El for bucle es útil cuando se incrementan los contadores al examinar los elementos de una matriz. Por ejemplo, para usar un for bucle para devolver todos los demás valores de una matriz, escriba:

$a = 0..9
for ($i = 0; $i -le ($a.length - 1); $i += 2) {
  $a[$i]
}
0
2
4
6
8

Puede usar un while bucle para mostrar los elementos de una matriz hasta que una condición definida ya no sea true. Por ejemplo, para mostrar los elementos de la $a matriz mientras el índice de matriz es menor que 4, escriba:

$a = 0..9
$i=0
while($i -lt 4) {
  $a[$i]
  $i++
}
0
1
2
3

Propiedades de matrices

Count, Length o LongLength

Para determinar cuántos elementos hay en una matriz, use la Length propiedad o su Count alias. Longlength es útil si la matriz contiene más de 2.147.483.647 elementos.

$a = 0..9
$a.Count
$a.Length
10
10

Rank

Devuelve el número de dimensiones de la matriz. La mayoría de las matrices de PowerShell solo tienen una dimensión. Incluso cuando cree que está creando una matriz multidimensional como en el ejemplo siguiente:

$a = @(
  @(0,1),
  @("b", "c"),
  @(Get-Process)
)

"`$a rank: $($a.Rank)"
"`$a length: $($a.Length)"
"`$a[2] length: $($a[2].Length)"
"Process `$a[2][1]: $($a[2][1].ProcessName)"

En este ejemplo, va a crear una matriz unidimensional que contiene otras matrices. Esto también se conoce como una matriz escalonada. La Rank propiedad demostró que esto es unidimensional. Para acceder a los elementos de una matriz escalonada, los índices deben estar entre corchetes independientes ([]).

$a rank: 1
$a length: 3
$a[2] length: 348
Process $a[2][1]: AcroRd32

Las matrices multidimensionales se almacenan en orden principal de fila. En el ejemplo siguiente se muestra cómo crear una matriz verdaderamente multidimensional.

[string[,]]$rank2 = [string[,]]::New(3,2)
$rank2.rank
$rank2.Length
$rank2[0,0] = 'a'
$rank2[0,1] = 'b'
$rank2[1,0] = 'c'
$rank2[1,1] = 'd'
$rank2[2,0] = 'e'
$rank2[2,1] = 'f'
$rank2[1,1]
2
6
d

Para acceder a los elementos de una matriz multidimensional, separe los índices mediante una coma (,) dentro de un único conjunto de corchetes ([]).

Algunas operaciones en una matriz multidimensional, como la replicación y la concatenación, requieren que la matriz se aplane. La aplanación convierte la matriz en una matriz dimensional de tipo sin restricciones. La matriz resultante toma todos los elementos en orden de fila principal. Considere el ejemplo siguiente:

$a = "red",$true
$b = (New-Object 'int[,]' 2,2)
$b[0,0] = 10
$b[0,1] = 20
$b[1,0] = 30
$b[1,1] = 40
$c = $a + $b
$a.GetType().Name
$b.GetType().Name
$c.GetType().Name
$c

La salida muestra que $c es una matriz 1 dimensional que contiene los elementos de $a y $b en orden principal de fila.

Object[]
Int32[,]
Object[]
red
True
10
20
30
40

Métodos de matrices

Clear

Establece todos los valores de elemento en el valor predeterminado del tipo de elemento de la matriz. El Clear() método no restablece el tamaño de la matriz.

En el ejemplo $a siguiente se muestra una matriz de objetos .

$a = 1, 2, 3
$a.Clear()
$a | % { $null -eq $_ }
True
True
True

En este ejemplo, $intA se escribe explícitamente para contener enteros.

[int[]] $intA = 1, 2, 3
$intA.Clear()
$intA
0
0
0

ForEach()

Permite iterar en todos los elementos de la matriz y realizar una operación determinada para cada elemento de la matriz.

El ForEach() método tiene varias sobrecargas que realizan diferentes operaciones.

ForEach(scriptblock expression)
ForEach(scriptblock expression, object[] arguments)
ForEach(type convertToType)
ForEach(string propertyName)
ForEach(string propertyName, object[] newValue)
ForEach(string methodName)
ForEach(string methodName, object[] arguments)

ForEach(expresión scriptblock)

ForEach(expresión scriptblock, argumentos object[] )

Este método se agregó en PowerShell v4.

Nota:

La sintaxis requiere el uso de un bloque de script. Los paréntesis son opcionales si el scriptblock es el único parámetro. Además, no debe haber un espacio entre el método y el paréntesis o llaves de apertura.

En el ejemplo siguiente se muestra cómo usar el ForEach() método . En este caso, la intención es generar el valor cuadrado de los elementos de la matriz.

$a = @(0 .. 3)
$a.ForEach({ $_ * $_})
0
1
4
9

Al igual que el parámetro ArgumentList de ForEach-Object, el arguments parámetro permite pasar una matriz de argumentos a un bloque de script configurado para aceptarlos.

Para obtener más información sobre el comportamiento de ArgumentList, vea about_Splatting.

ForEach(tipo convertToType)

El ForEach() método se puede usar para convertir los elementos en un tipo diferente; en el ejemplo siguiente se muestra cómo convertir una lista de fechas de cadena al [DateTime] tipo.

("1/1/2017", "2/1/2017", "3/1/2017").ForEach([datetime])

Sunday, January 1, 2017 12:00:00 AM
Wednesday, February 1, 2017 12:00:00 AM
Wednesday, March 1, 2017 12:00:00 AM

ForEach(string propertyName)

ForEach(string propertyName, object[] newValue)

El ForEach() método también se puede usar para recuperar o establecer valores de propiedad para cada elemento de la colección.

# Set all LastAccessTime properties of files to the current date.
(dir 'C:\Temp').ForEach('LastAccessTime', (Get-Date))
# View the newly set LastAccessTime of all items, and find Unique entries.
(dir 'C:\Temp').ForEach('LastAccessTime') | Get-Unique
Wednesday, June 20, 2018 9:21:57 AM

ForEach(string methodName)

ForEach(string methodName, object[] arguments)

Lastly, ForEach() los métodos se pueden usar para ejecutar un método en cada elemento de la colección.

("one", "two", "three").ForEach("ToUpper")
ONE
TWO
THREE

Al igual que el parámetro ArgumentList de ForEach-Object, el arguments parámetro permite pasar una matriz de valores a un bloque de script configurado para aceptarlos.

Nota:

A partir de Windows PowerShell 3.0, la recuperación de propiedades y los métodos de ejecución para cada elemento de una colección también se puede realizar mediante "Métodos de objetos y colecciones escalares". Puede leer más sobre eso aquí about_Methods.

Where()

Permite filtrar o seleccionar los elementos de la matriz. El script debe evaluar cualquier cosa diferente de: cero (0), cadena $false vacía o $null para que el elemento se muestre después de Where(). Para obtener más información sobre la evaluación booleana, consulte about_Booleans.

Hay una definición para el Where() método .

Where(scriptblock expression[, WhereOperatorSelectionMode mode
                            [, int numberToReturn]])

Nota:

La sintaxis requiere el uso de un bloque de script. Los paréntesis son opcionales si el scriptblock es el único parámetro. Además, no debe haber un espacio entre el método y el paréntesis o llaves de apertura.

Expression es un bloque de scripts necesario para el filtrado, el mode argumento opcional permite funcionalidades de selección adicionales y el numberToReturn argumento opcional permite limitar el número de elementos que se devuelven desde el filtro.

El valor de debe ser un valor de mode enumeración WhereOperatorSelectionMode:

  • Default (0) - Devolver todos los elementos
  • First (1) - Devolver el primer elemento
  • Last (2) - Devolver el último elemento
  • SkipUntil (3) - Omitir elementos hasta que la condición sea true, devuelva todos los elementos restantes (incluido el primer elemento para el que la condición es true)
  • Until (4) - Devolver todos los elementos hasta que la condición sea true
  • Split (5) - Devolver una matriz de dos elementos
    • El primer elemento contiene elementos coincidentes
    • El segundo elemento contiene los elementos restantes

En el ejemplo siguiente se muestra cómo seleccionar todos los números impares de la matriz.

(0..9).Where{ $_ % 2 }
1
3
5
7
9

En este ejemplo se muestra cómo seleccionar las cadenas que no están vacías.

('hi', '', 'there').Where({$_.Length})
hi
there

Default

El Default modo filtra los elementos mediante el Expression scriptblock.

Si se proporciona , numberToReturn especifica el número máximo de elementos que se van a devolver.

# Get the zip files in the current users profile, sorted by LastAccessTime
$Zips = dir $env:userprofile -Recurse '*.zip' | Sort-Object LastAccessTime
# Get the least accessed file over 100MB
$Zips.Where({$_.Length -gt 100MB}, 'Default', 1)

Nota:

Tanto el modo como First el Default modo devuelven los primeros elementos (numberToReturn) y se pueden usar indistintamente.

Last

$h = (Get-Date).AddHours(-1)
$logs = dir 'C:\' -Recurse '*.log' | Sort-Object CreationTime
# Find the last 5 log files created in the past hour
$logs.Where({$_.CreationTime -gt $h}, 'Last', 5)

SkipUntil

El SkipUntil modo omite todos los objetos de una colección hasta que un objeto pasa el filtro de expresión de bloque de script. A continuación, devuelve TODOS los elementos de colección restantes sin probarlos. Solo se prueba un elemento de paso.

Esto significa que la colección devuelta contiene elementos que no se han superado yque no se han probado.

El número de elementos devueltos se puede limitar pasando un valor al numberToReturn argumento .

$computers = "Server01", "Server02", "Server03", "localhost", "Server04"
# Find the first available online server.
$computers.Where({ Test-Connection $_ }, 'SkipUntil', 1)
localhost

Until

El Until modo invierte el SkipUntil modo. Devuelve TODOS los elementos de una colección hasta que un elemento pasa la expresión de bloque de script. Una vez que un elemento pasa la expresión scriptblock, el método detiene el Where() procesamiento de elementos.

Esto significa que recibe el primer conjunto de elementos que no pasan del Where() método . Después de pasar un elemento, el resto no se prueba o se devuelve.

El número de elementos devueltos se puede limitar pasando un valor al numberToReturn argumento .

# Retrieve the first set of numbers less than or equal to 10.
(1..50).Where({$_ -gt 10}, 'Until')
# This would perform the same operation.
(1..50).Where({$_ -le 10})
1
2
3
4
5
6
7
8
9
10

Nota:

Tanto Until como SkipUntil funcionan bajo la premisa de NO probar un lote de elementos.

Until devuelve los elementos BEFORE the first PASS. SkipUntil devuelve todos los elementos AFTER el primer pase, incluido el primer elemento que pasa.

Split

El Split modo divide o agrupa los elementos de colección en dos colecciones independientes. Aquellos que pasan la expresión scriptblock y los que no lo hacen.

Si se especifica , numberToReturn la primera colección contiene los elementos que pasan , no para superar el valor especificado.

Los objetos restantes, incluso los que pasan el filtro de expresión, se devuelven en la segunda colección.

$running, $stopped = (Get-Service).Where({$_.Status -eq 'Running'}, 'Split')
$running
Status   Name               DisplayName
------   ----               -----------
Running  Appinfo            Application Information
Running  AudioEndpointBu... Windows Audio Endpoint Builder
Running  Audiosrv           Windows Audio
...
$stopped
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
...

Nota:

Ambos ForEach() métodos y Where() son miembros intrínsecos. Para obtener más información sobre los miembros intrínsecos, consulte about_Instrinsic_Members.

Obtener los miembros de una matriz

Para obtener las propiedades y los métodos de una matriz, como la Length propiedad y el método SetValue , use el parámetro InputObject del Get-Member cmdlet .

Cuando canaliza una matriz a Get-Member, PowerShell envía los elementos uno a uno y Get-Member devuelve el tipo de cada elemento de la matriz (omidiendo duplicados).

Cuando se usa el parámetro InputObject , Get-Member devuelve los miembros de la matriz.

Por ejemplo, el siguiente comando obtiene los miembros de la $a variable de matriz.

Get-Member -InputObject $a

También puede obtener los miembros de una matriz escribiendo una coma (,) antes del valor que se canaliza al Get-Member cmdlet. La coma convierte la matriz en el segundo elemento de una matriz de matrices. PowerShell canaliza las matrices una a la vez y Get-Member devuelve los miembros de la matriz. Al igual que los dos ejemplos siguientes.

,$a | Get-Member

,(1,2,3) | Get-Member

Manipulación de una matriz

Puede cambiar los elementos de una matriz, agregar un elemento a una matriz y combinar los valores de dos matrices en una tercera matriz.

Para cambiar el valor de un elemento determinado de una matriz, especifique el nombre de la matriz y el índice del elemento que desea cambiar y, a continuación, use el operador de asignación (=) para especificar un nuevo valor para el elemento. Por ejemplo, para cambiar el valor del segundo elemento de la $a matriz (posición de índice 1) a 10, escriba:

$a[1] = 10

También puede usar el método SetValue de una matriz para cambiar un valor. En el ejemplo siguiente se cambia el segundo valor (posición de índice 1) de la $a matriz a 500:

$a.SetValue(500,1)

Puede usar el += operador para agregar un elemento a una matriz. En el ejemplo siguiente se muestra cómo agregar un elemento a la $a matriz.

$a = @(0..4)
$a += 5

Nota:

Cuando se usa el += operador , PowerShell crea realmente una nueva matriz con los valores de la matriz original y el valor agregado. Esto puede provocar problemas de rendimiento si la operación se repite varias veces o el tamaño de la matriz es demasiado grande.

No es fácil eliminar elementos de una matriz, pero puede crear una nueva matriz que solo contenga elementos seleccionados de una matriz existente. Por ejemplo, para crear la $t matriz con todos los elementos de la $a matriz, excepto para el valor en la posición de índice 2, escriba:

$t = $a[0,1 + 3..($a.length - 1)]

Para combinar dos matrices en una sola matriz, use el operador más (+). En el ejemplo siguiente se crean dos matrices, se combinan y, a continuación, se muestra la matriz combinada resultante.

$x = 1,3
$y = 5,9
$z = $x + $y

Como resultado, la $z matriz contiene 1, 3, 5 y 9.

Para eliminar una matriz, asigne un valor de $null a la matriz. El siguiente comando elimina la matriz de la $a variable .

$a = $null

También puede usar el Remove-Item cmdlet , pero asignar un valor de $null es más rápido, especialmente para matrices grandes.

Matrices de cero o uno

A partir de Windows PowerShell 3.0, una colección de cero o un objeto tiene las Count propiedades y Length . Además, puede indexar en una matriz de un objeto . Esta característica le ayuda a evitar errores de scripting que se producen cuando un comando que espera una colección obtiene menos de dos elementos.

En el ejemplo siguiente se muestra que una variable que no contiene ningún objeto tiene y CountLength de 0.

PS> $a = $null
PS> $a.Count
0
PS> $a.Length
0

En el ejemplo siguiente se muestra que una variable que contiene un objeto tiene y CountLength de 1. También puede usar la indexación de matrices para tener acceso al valor del objeto .

PS> $a = 4
PS> $a.Count
1
PS> $a.Length
1
PS> $a[0]
4
PS> $a[-1]
4

Al ejecutar un comando que podría devolver una colección o un único objeto, puede usar la indexación de matriz para tener acceso al valor del objeto sin tener que probar las Count propiedades o Length . Sin embargo, si el resultado es un único objeto (singleton) y ese objeto tiene una Count propiedad o Length , el valor de esas propiedades pertenece al objeto singleton y no representa el número de elementos de la colección.

En el ejemplo siguiente, el comando devuelve un único objeto de cadena. de Length esa cadena es 4.

PS> $result = 'one','two','three','four' | Where-Object {$_ -like 'f*'}
PS> $result.GetType().FullName
System.String
PS> $result
four
PS> $result.Count
1
PS❯ $result.Length
4

Si desea $result ser una matriz de cadenas, debe declarar la variable como una matriz.

En este ejemplo, $result es una matriz de cadenas. y Count de la matriz es 1, y el Length del primer elemento es 4.Length

PS> [string[]]$result = 'one','two','three','four' |
    Where-Object {$_ -like 'f*'}
PS> $result.GetType().FullName
System.String[]
PS> $result
four
PS> $result.Count
1
PS> $result.Length
1
PS> $result[0].Length
4

Compatibilidad de indexación con System.Tuple Objetos

PowerShell 6.1 agregó la compatibilidad con el acceso indexado de Tuple objetos, similar a las matrices. Por ejemplo:

PS> $tuple = [Tuple]::Create(1, 'test')
PS> $tuple[0]
1
PS> $tuple[1]
test
PS> $tuple[0..1]
1
test
PS> $tuple[-1]
test

A diferencia de las matrices y otros objetos de colección, Tuple los objetos se tratan como un único objeto cuando se pasan a través de la canalización o por parámetros que admiten matrices de objetos.

Para obtener más información, consulte System.Tuple.

Indexación de tipos de .NET que implementan IDictionary<TKey, TValue>

PowerShell no llama al indexador true de un tipo para los tipos que implementan la interfaz genérica IDictionary<TKey, TValue> . En su lugar, cuando se le asigna una clave, PowerShell comprueba la existencia de la clave mediante TryGetValue(), que devuelve $null cuando la clave no existe.

Por el contrario, si llama al indexador true del tipo mediante Item(<key>), el método produce una excepción cuando la clave no existe.

En el siguiente ejemplo se ilustra la diferencia.

PS> [Collections.Generic.Dictionary[string, int]]::new()['nosuchkey']
# No output ($null)

PS> [Collections.Generic.Dictionary[string, int]]::new().Item('nosuchkey')
GetValueInvocationException: Exception getting "Item": "The given key 'nosuchkey'
 was not present in the dictionary."

Enumeración de acceso a miembros

A partir de PowerShell 3.0, cuando se usa el operador de acceso a miembros para acceder a un miembro que no existe en una colección de listas, PowerShell enumera automáticamente los elementos de la colección e intenta acceder al miembro especificado en cada elemento. Para obtener más información, consulte about_Member-Access_Enumeration.

Ejemplos

En el ejemplo siguiente se crean dos nuevos archivos y se almacenan los objetos resultantes en la variable $filesde matriz . Dado que el objeto de matriz no tiene el Lastmiembro WriteTime, se devuelve el valor de WriteTime para cada elemento de Lastla matriz.

$files = (New-Item -Type File -Force '/temp/t1.txt'),
         (New-Item -Force -Type File '/temp/t2.txt')
$files.LastWriteTime
Friday, June 25, 2021 1:21:17 PM
Friday, June 25, 2021 1:21:17 PM

La enumeración de acceso a miembros permite obtener valores de los elementos de una colección, pero no establecervalores en elementos de una colección. Por ejemplo:

$files.LastWriteTime = (Get-Date).AddDays(-1)
InvalidOperation: The property 'LastWriteTime' cannot be found on this object.
Verify that the property exists and can be set.

Para establecer los valores, debe usar un método .

$files.set_LastWriteTime((Get-Date).AddDays(-1))
$files.LastWriteTime
Thursday, June 24, 2021 1:23:30 PM
Thursday, June 24, 2021 1:23:30 PM

El set_LastWriteTime() método es un miembro oculto del objeto FileInfo . En el ejemplo siguiente se muestra cómo buscar miembros que tienen un método ocultoset .

$files | Get-Member | Where-Object Definition -like '*set;*'
   TypeName: System.IO.FileInfo

Name              MemberType Definition
----              ---------- ----------
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   datetime CreationTime {get;set;}
CreationTimeUtc   Property   datetime CreationTimeUtc {get;set;}
IsReadOnly        Property   bool IsReadOnly {get;set;}
LastAccessTime    Property   datetime LastAccessTime {get;set;}
LastAccessTimeUtc Property   datetime LastAccessTimeUtc {get;set;}
LastWriteTime     Property   datetime LastWriteTime {get;set;}
LastWriteTimeUtc  Property   datetime LastWriteTimeUtc {get;set;}

Precaución

Dado que el método se ejecuta para cada elemento de la colección, se debe tener cuidado al llamar a métodos mediante la enumeración de miembros.

Consulte también