Compartir a través de


about_Function_Provider

Nombre del proveedor

Función

Unidades

Function:

Capabilities

ShouldProcess

Descripción breve

Proporciona acceso a las funciones definidas en PowerShell.

Descripción detallada

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

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

La unidad Function es un espacio de nombres plano que solo contiene los objetos de función y filtro. Las funciones y los filtros no tienen elementos secundarios.

El proveedor de Function admite los siguientes cmdlets, que se tratan en este artículo.

Tipos expuestos por este proveedor

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.

El proveedor de Function 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:). O puede trabajar desde una unidad de PowerShell diferente. Para hacer referencia a una función desde otra ubicación, use el nombre del disco (Function:) en la ruta.

Set-Location Function:

Para volver a una unidad del sistema de archivos, escriba el nombre de la unidad. Por ejemplo, escriba:

Set-Location C:

También puede trabajar con el proveedor de Function desde cualquier otra unidad de PowerShell. Para hacer referencia a una función desde otra ubicación, use el nombre de unidad Function: en la ruta de acceso.

Nota

PowerShell usa alias para permitirle una forma familiar de trabajar con rutas de acceso a proveedores. Los comandos como dir y ls ahora son alias para Get-ChildItem, cd es un alias para Set-Location y pwd es un alias para Get-Location.

Obtención de funciones

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

Get-ChildItem -Path Function:

El proveedor de funciones no tiene contenedores, por lo que el comando anterior tiene el mismo efecto cuando se usa con Get-ChildItem.

Get-ChildItem -Path Function:

Puede recuperar la definición de una función accediendo a la propiedad Definition, como se muestra a continuación.

(Get-Item -Path Function:more).Definition

También puede recuperar la definición de una función mediante su ruta de acceso del proveedor precedida por el signo de dólar ($).

$Function:more

Para recuperar la definición de una función que tiene un guion (-) en el nombre, coloque el valor después del signo de dólar entre llaves.

${Function:Clear-Host}

Obtención de funciones seleccionadas

Este comando obtiene la función man de la unidad Function:. Usa el cmdlet Get-Item para obtener la función . El operador de canalización (|) envía 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 acomodar el texto.

Get-Item -Path man | Format-Table -Wrap -AutoSize

Trabajo con rutas de acceso del proveedor de Function

Ambos 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.

PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:

Creación de una función

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

New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}

Ámbitos

Al igual que las variables, las funciones pertenecen a un ámbito específico. Cuando se crea una función, solo está disponible en el ámbito en el que se creó. Para que una función esté disponible, use un modificador de ámbito al crear la función. Para obtener más información, consulte about_Scopes.

En el ejemplo siguiente se usa el modificador de ámbito Global: para crear una función en el ámbito global.

function New-Function {
    param(
        [string] $Name,
        [scriptblock] $Script
    )

    $lp = "Function:\Global:$($Name)"
    Set-Item -LiteralPath $lp -Value $Script -PassThru -Force
}

New-Function -Name 'Win32:' -Script { Set-Location C:\Windows\System32 }

Sin el modificador de ámbito Global:, la función se crearía en el ámbito local. Cuando New-Function salga de la función recién creada ya no existiría.

Eliminación de una función

Este comando elimina la función more de la sesión actual.

Remove-Item Function:more

Cambio de una función

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) + '> '
  }

Cambiar el nombre de una función

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

Rename-Item -Path Function:help -NewName gh

Copiar una función

Este comando copia la prompt función en oldPrompt, creando eficazmente un nuevo nombre para el scriptblock asociado a la función prompt. Puede usarlo para guardar la función de solicitud original si planea cambiarla. La propiedad Options de la nueva función tiene un valor de None. Para cambiar el valor de la propiedad Options, use Set-Item.

Copy-Item -Path Function:prompt -Destination Function:oldPrompt

Parámetros dinámicos

Los parámetros dinámicos son parámetros de cmdlet que agrega un proveedor de PowerShell y solo están disponibles cuando el cmdlet se usa en la unidad habilitada para el proveedor.

Opciones <[System.Management.Automation.ScopedItemOptions]>

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

  • None: 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 se puede cambiar la opción de una función existente a Constant.
  • Private: la función solo está visible en el ámbito actual.
  • (no en ámbitos secundarios).
  • ReadOnly: las propiedades de la función no se pueden cambiar, excepto mediante 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 compatibles

Uso de la canalización

Los cmdlets del proveedor aceptan entradas de canalización. Puede usar la canalización para simplificar la tarea mediante el envío de datos del proveedor de un cmdlet a otro cmdlet de proveedor. Para obtener más información sobre cómo usar la canalización con los cmdlets del proveedor, consulte las referencias de los cmdlets que se encuentran a lo largo de este artículo.

Obtener ayuda

A partir de Windows PowerShell 3.0, puede obtener temas de ayuda personalizados sobre cmdlets de proveedor que explican cómo se comportan dichos cmdlets en una unidad del sistema de archivos.

Para obtener los temas de ayuda personalizados para la unidad del sistema de archivos, ejecute un comando Get-Help en una unidad del sistema de archivos o use el parámetro -Path de Get-Help para especificar una unidad del sistema de archivos.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path Function:

Consulte también