Proveedor de funciones

Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0

NOMBRE DEL PROVEEDOR

Función

UNIDADES

Function:

DESCRIPCIÓN BREVE

Proporciona acceso a las funciones definidas en Windows PowerShell.

DESCRIPCIÓN DETALLADA

El proveedor de funciones de Windows PowerShell permite obtener, agregar, cambiar, borrar y eliminar las funciones y los filtros de Windows PowerShell.

Una función es un bloque de código con nombre que realiza una acción. Cuando se escribe el nombre de la función, se ejecuta el código de dicha función. Un filtro es un bloque de código con nombre que establece las condiciones de una acción. Puede escribir el nombre del filtro en lugar de la condición, como en un comando Where-Object.

En la unidad Function:, las funciones vienen precedidas por la etiqueta "Function" y los filtros están precedidos por la etiqueta "Filter", pero funcionan correctamente cuando se utilizan en el contexto correcto, independientemente de la etiqueta.

El proveedor de funciones es un espacio de nombres sin formato que solo contiene los objetos de función y filtro. Las funciones y los filtros no tienen elementos secundarios.

Cada función es una instancia de la clase System.Management.Automation.FunctionInfo. Cada filtro es una instancia de la clase System.Management.Automation.FilterInfo.

Los ejemplos de esta sección muestran cómo administrar las funciones, pero estos mismos métodos pueden utilizarse con los filtros.

El proveedor de funciones expone su almacén de datos en la unidad Function:. Para trabajar con funciones, puede cambiar la ubicación a la unidad Function: ("set-location function:"). También puede trabajar desde otra unidad de Windows PowerShell. Para hacer referencia a una función desde otra ubicación, utilice el nombre de unidad (Function:) en la ruta de acceso.

El proveedor de funciones es compatible con todos los cmdlets cuyos nombres contienen el nombre Item (los cmdlets Item), excepto Invoke-Item. Además, es compatible con los cmdlets Get-Content y Set-Content. Sin embargo, no es compatible con los cmdlets cuyos nombres contienen el nombre ItemProperty (los cmdlets ItemProperty) y no admite el parámetro Filter en ningún cmdlet.

Todos los cambios en las funciones afectan únicamente a la consola actual. Para guardar los cambios, agregue la función al perfil de Windows PowerShell o use Export-Console para guardar la consola actual.

FUNCIONALIDADES

ShouldProcess

EJEMPLOS

Acceder a la unidad Function:

-------------------------- EJEMPLO 1 --------------------------

Cambia la ubicación actual a la unidad Function:. Puede utilizar este comando desde cualquier unidad de Windows PowerShell. Para volver a una unidad del sistema de archivos, escriba el nombre de la unidad. Por ejemplo, escriba "set-location c:".

set-location function:

Obtener funciones

-------------------------- EJEMPLO 1 --------------------------

Este comando obtiene la lista de todas las funciones en la sesión actual. Puede utilizar este comando desde cualquier unidad de Windows PowerShell.

get-childitem -path function:

-------------------------- EJEMPLO 2 --------------------------

Este comando obtiene la función "man" desde la unidad Function:. Utiliza el cmdlet Get-Item para obtener la función. El operador de canalización (|) pasa el resultado a Format-Table.

El parámetro Wrap dirige el texto que no cabe en la línea a la línea siguiente. El parámetro Autosize cambia el tamaño de las columnas de la tabla para dar cabida al texto.

get-item -path man | format-table -wrap -autosize

Si se encuentra en una unidad diferente, agregue el nombre de la unidad (Function:) a la ruta de acceso.

-------------------------- EJEMPLO 3 --------------------------

Estos comandos obtienen la función denominada "c:". El primer comando puede utilizarse en cualquier unidad. El segundo comando se utiliza en la unidad Function:.

Dado que el nombre termina en dos puntos, que es la sintaxis de una unidad, debe calificar la ruta de acceso con el nombre de la unidad. Dentro de la unidad Function:, puede usar cualquier formato. En el segundo comando, el punto (.) representa la ubicación actual.

c:\PS> get-item -path function:c:

PS Function> get-item -path .\c:

Crear una función

-------------------------- EJEMPLO 1 --------------------------

Este comando usa el cmdlet New-Item para crear una función denominada "HKLM:". La expresión entre llaves es el bloque de script representado por el nombre de función.

new-item -path function:hklm: -value {set-location hklm:}

También puede crear una función escribiéndola en la línea de comandos de Windows PowerShell. Por ejemplo, escriba "function:hklm: {set-location hklm:}". Si se encuentra en la unidad Function:, puede omitir el nombre de unidad. Dado que no se puede especificar la etiqueta "Filter" en New-Item, los filtros se etiquetan como funciones, pero funcionan correctamente con cualquier etiqueta. Para crear un filtro con la etiqueta "Filter", escriba el filtro en la línea de comandos. Por ejemplo, escriba "filter:Running {$_.Status -eq "Running"}".

-------------------------- EJEMPLO 2 --------------------------

Este comando usa el cmdlet New-Item para crear una función denominada Csrss. Utiliza el parámetro dinámico Options para especificar un valor ReadOnly para la propiedad Options de la función.

new-item -path function: -name csrss -options readonly -value {get-process csrss}

Este comando funciona desde cualquier ubicación. Si se encuentra en la unidad Function:, puede utilizar un punto (.) para especificar la ruta de acceso. El punto representa la ubicación actual.

Eliminar una función

-------------------------- EJEMPLO 1 --------------------------

Este comando elimina la función "hklm:" de la sesión actual.

remove-item function:hklm:

-------------------------- EJEMPLO 2 --------------------------

Este comando elimina todas las funciones de la sesión actual, excepto las funciones cuya propiedad Options tenga un valor Constant. Sin el parámetro Force, el comando no elimina las funciones cuya propiedad Options tenga un valor ReadOnly.

remove-item function:* -force

Cuando elimina todas las funciones, la línea de comandos cambia porque se elimina la función de símbolo del sistema, que define el contenido de la línea de comandos.

Mostrar las propiedades y los métodos de las funciones

-------------------------- EJEMPLO 1 --------------------------

Este comando usa el cmdlet Get-Item para obtener todas las funciones. El operador de canalización envía los resultados al cmdlet Get-Member, que muestra los métodos y las propiedades del objeto.

get-item -path function:* | get-member

Cuando canaliza una colección de objetos (por ejemplo, la colección de funciones de la unidad Function:) a Get-Member, este evalúa cada objeto de la colección por separado y devuelve información acerca de cada tipo de objeto que encuentra. Si todos los objetos son del mismo tipo, devuelve información sobre el tipo de objeto único. En este caso, todas las funciones son objetos FunctionInfo. Para obtener información acerca de la colección de objetos FunctionInfo, use el parámetro InputObject de Get-Member. Por ejemplo, escriba "get-member -InputObject (get-item function:*)". Cuando utiliza el parámetro InputObject, Get-Member evalúa la colección, no los objetos de la colección.

-------------------------- EJEMPLO 2 --------------------------

Este comando muestra los valores de las propiedades de la función "símbolo del sistema". Utiliza el cmdlet Get-Item para obtener un objeto que representa la función "símbolo del sistema". El operador de canalización (|) envía los resultados al comando Format-List. El comando Format-List utiliza el parámetro Property con un carácter comodín (*) para dar formato y mostrar los valores de todas las propiedades de la función "símbolo del sistema".

get-item function:prompt | format-list -property *

Cambiar las propiedades de una función

-------------------------- EJEMPLO 1 --------------------------

Puede usar el cmdlet Set-Item con el parámetro dinámico Options para cambiar el valor de la propiedad Options de una función.

Este comando establece las opciones AllScope y ReadOnly para la función "prompt". Este comando utiliza el parámetro dinámico Options del cmdlet Set-Item. El parámetro Options está disponible en Set-Item solo cuando se usa con el proveedor de Alias o Function.

set-item -path function:prompt -options "AllScope,ReadOnly"

-------------------------- EJEMPLO 2 --------------------------

Este comando usa el cmdlet Set-Item para cambiar la función "prompt" para que muestre la hora antes de la ruta de acceso.

set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " " + $(Get-Location) + '> '}

El cambio afecta a las propiedades Definition y ScriptBlock del objeto FunctionInfo. Para ver el efecto del cambio, escriba "get-item -path function:prompt | format-list -property *".

-------------------------- EJEMPLO 3 --------------------------

Este comando usa el cmdlet Rename-Item para cambiar el nombre de la función "ayuda" a "gh".

rename-item -path function:help -newname gh

Copiar una función

-------------------------- EJEMPLO 1 --------------------------

Este comando copia la función "símbolo del sistema" en "oldPrompt", con lo que crea un nuevo nombre para el bloque de script que está asociado a la función de símbolo del sistema. Puede utilizarlo para guardar la función de símbolo del sistema original si tiene previsto cambiarla.

La propiedad Options de la nueva función tiene un valor de None. Para cambiar el valor de la propiedad Options, utilice Set-Item.

copy-item -path function:prompt -destination function:oldPrompt

PARÁMETROS DINÁMICOS

Los parámetros dinámicos son parámetros de cmdlet agregados por un proveedor de Windows PowerShell que solo están disponibles cuando se utiliza el cmdlet en la unidad habilitada por el proveedor.

Options <System.Management.Automation.ScopedItemOptions>

Determina el valor de la propiedad Options de una función.

Valor Descripción

Ninguno

No hay opciones. "None" es el valor predeterminado.

Constant

No se puede eliminar la función y no se pueden cambiar sus propiedades. Constant solo está disponible cuando se crea una función. No puede cambiar a Constant la opción de una función existente.

Private

La función solo está visible en el ámbito actual (no en los ámbitos secundarios).

ReadOnly

No se pueden cambiar las propiedades de la función a menos que se use el parámetro Force. Puede usar Remove-Item para eliminar la función.

AllScope

La función se copia en todos los ámbitos nuevos que se creen.

Cmdlets admitidos:

See Also

Other Resources

about_Functions
about_Providers