Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
- Get-Location
- Set-Location
- Get-Item
- New-Item
- Remove-Item
- Borrar elemento
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.
Navegación por la unidad de función
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.Nonees el valor predeterminado. -
Constant: no se puede eliminar la función y no se pueden cambiar sus propiedades.Constantsolo está disponible cuando se crea una función. No se puede cambiar la opción de una función existente aConstant. -
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 usarRemove-Itempara 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: