Compartir a través de


Acerca de las variables de preferencia

Descripción breve

Variables que personalizan el comportamiento de PowerShell.

Descripción larga

PowerShell incluye un conjunto de variables que permiten personalizar su comportamiento. Estas variables de preferencia funcionan como las opciones de los sistemas basados en GUI.

Las variables de preferencia afectan al entorno operativo de PowerShell y a todos los comandos que se ejecutan en el entorno. En muchos casos, los cmdlets tienen parámetros que puede usar para invalidar el comportamiento de preferencia de un comando específico.

En la tabla siguiente se enumeran las variables de preferencia y sus valores predeterminados.

Variable Valor predeterminado
$ConfirmPreference Alto
$DebugPreference SilentlyContinue
$ErrorActionPreference Continuar
$ErrorView NormalView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent False (no registrado)
$LogCommandLifecycleEvent False (no registrado)
$LogEngineHealthEvent True (registrado)
$LogEngineLifecycleEvent True (registrado)
$LogProviderLifecycleEvent True (registrado)
$LogProviderHealthEvent True (registrado)
$MaximumAliasCount 4096
$MaximumDriveCount 4096
$MaximumErrorCount 256
$MaximumFunctionCount 4096
$MaximumHistoryCount 4096
$MaximumVariableCount 4096
$OFS (Carácter de espacio (" "))
$OutputEncoding ASCIIEncoding (objeto)
$ProgressPreference Continuar
$PSDefaultParameterValues (Ninguno: tabla hash vacía)
$PSEmailServer (Ninguna)
$PSModuleAutoLoadingPreference Todo
$PSSessionApplicationName WSMAN
$PSSessionConfigurationName https://schemas.microsoft.com/PowerShell/microsoft.PowerShell
$PSSessionOption Consulte $PSSessionOption
$VerbosePreference SilentlyContinue
$WarningPreference Continuar
$WhatIfPreference 0

PowerShell incluye las siguientes variables de entorno que almacenan las preferencias del usuario. Para obtener más información sobre estas variables de entorno, consulte about_Environment_Variables.

  • env:PSExecutionPolicyPreference
  • $env:PSModulePath

Trabajar con variables de preferencia

En este documento se describe cada una de las variables de preferencia.

Para mostrar el valor actual de una variable de preferencia específica, escriba el nombre de la variable. Por ejemplo, el siguiente comando muestra el valor de la $ConfirmPreference variable.

 $ConfirmPreference
High

Para cambiar el valor de una variable, use una instrucción de asignación. Por ejemplo, la siguiente instrucción cambia el $ConfirmPreference valor del parámetro a Medium.

$ConfirmPreference = "Medium"

Los valores que establezca son específicos de la sesión actual de PowerShell. Para que las variables sean eficaces en todas las sesiones de PowerShell, agréguelas al perfil de PowerShell. Para obtener más información, consulte about_Profiles.

Trabajo en remoto

Al ejecutar comandos en un equipo remoto, los comandos remotos solo están sujetos a las preferencias establecidas en el cliente de PowerShell del equipo remoto. Por ejemplo, al ejecutar un comando remoto, el valor de la variable del $DebugPreference equipo remoto determina cómo Responde PowerShell a los mensajes de depuración.

Para obtener más información sobre los comandos remotos, consulte about_Remote.

$ConfirmPreference

Determina si PowerShell le pide automáticamente confirmación antes de ejecutar un cmdlet o una función.

Los valores válidos de la $ConfirmPreference variable son High, Medium o Low. A los cmdlets y funciones se les asigna un riesgo de alto, medio o bajo. Cuando el valor de la $ConfirmPreference variable es menor o igual que el riesgo asignado a un cmdlet o función, PowerShell le pedirá automáticamente confirmación antes de ejecutar el cmdlet o la función.

Si el valor de la $ConfirmPreference variable es None, PowerShell nunca le pedirá automáticamente antes de ejecutar un cmdlet o una función.

Para cambiar el comportamiento de confirmación de todos los cmdlets y funciones de la sesión, cambie $ConfirmPreference el valor de la variable.

Para invalidar para un solo comando, use el $ConfirmPreference parámetro Confirm de un cmdlet o una función. Para solicitar confirmación, use -Confirm. Para suprimir la confirmación, use -Confirm:$false.

Valores válidos de $ConfirmPreference:

  • Ninguno: PowerShell no solicita automáticamente. Para solicitar la confirmación de un comando determinado, use el parámetro Confirm del cmdlet o la función.
  • Bajo: PowerShell solicita confirmación antes de ejecutar cmdlets o funciones con un riesgo bajo, medio o alto.
  • Medio: PowerShell solicita confirmación antes de ejecutar cmdlets o funciones con un riesgo medio o alto.
  • Alto: PowerShell solicita confirmación antes de ejecutar cmdlets o funciones con un alto riesgo.

Explicación detallada

PowerShell puede solicitar automáticamente confirmación antes de realizar una acción. Por ejemplo, cuando el cmdlet o la función afectan significativamente al sistema para eliminar datos o usar una cantidad significativa de recursos del sistema.

Remove-Item -Path C:\file.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\file.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend
[?] Help (default is "Y"):

La estimación del riesgo es un atributo del cmdlet o función conocido como ConfirmImpact. Los usuarios no pueden cambiarla.

Los cmdlets y funciones que podrían suponer un riesgo para el sistema tienen un parámetro Confirm que puede usar para solicitar o suprimir la confirmación de un solo comando.

Dado que la mayoría de los cmdlets y funciones usan el valor de riesgo predeterminado ConfirmImpact, de Medium y el valor predeterminado de $ConfirmPreference es High, la confirmación automática rara vez se produce. Sin embargo, puede activar la confirmación automática cambiando el valor de $ConfirmPreference a Medio o Bajo.

Ejemplos

En este ejemplo se muestra el efecto del valor predeterminado de la $ConfirmPreference variable, High. El valor Alto solo confirma las funciones y los cmdlets de alto riesgo. Dado que la mayoría de los cmdlets y las funciones son de riesgo medio, no se confirman Remove-Item y eliminan automáticamente el archivo. Al agregar -Confirm al comando se le pide confirmación al usuario.

$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt

Use -Confirm para solicitar confirmación.

Remove-Item -Path C:\temp2.txt -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend
[?] Help (default is "Y"):

En el ejemplo siguiente se muestra el efecto de cambiar el valor de $ConfirmPreference a Medio. Dado que la mayoría de los cmdlets y la función son de riesgo medio, se confirman automáticamente. Para suprimir el símbolo del sistema de confirmación de un solo comando, use el parámetro Confirm con un valor de $false.

$ConfirmPreference = "Medium"
Remove-Item -Path C:\temp2.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false

$DebugPreference

Determina cómo Responde PowerShell a los mensajes de depuración generados por un script, un cmdlet o un proveedor, o por un Write-Debug comando en la línea de comandos.

Algunos cmdlets muestran mensajes de depuración, que suelen ser mensajes técnicos diseñados para programadores y profesionales de soporte técnico. De forma predeterminada, no se muestran los mensajes de depuración, pero puede mostrar los mensajes de depuración cambiando el valor de $DebugPreference.

Puede usar el parámetro común Depurar de un cmdlet para mostrar u ocultar los mensajes de depuración de un comando específico. Para obtener más información, consulta about_CommonParameters.

Los valores válidos son los siguientes:

  • Detener: muestra el mensaje de depuración y deja de ejecutarse. Escribe un error en la consola.
  • Pregunta: muestra el mensaje de depuración y le pregunta si desea continuar. Al agregar el parámetro común Debug a un comando, cuando el comando está configurado para generar un mensaje de depuración, cambia el valor de la $DebugPreference variable a Inquire.
  • Continuar: muestra el mensaje de depuración y continúa con la ejecución.
  • SilentlyContinue: (Valor predeterminado) Sin efecto. El mensaje de depuración no se muestra y la ejecución continúa sin interrupción.

Ejemplos

En los ejemplos siguientes se muestra el efecto de cambiar los valores de $DebugPreference cuando se escribe un Write-Debug comando en la línea de comandos. El cambio afecta a todos los mensajes de depuración, incluidos los mensajes generados por cmdlets y scripts. Los ejemplos muestran el parámetro Debug , que muestra u oculta los mensajes de depuración relacionados con un único comando.

En este ejemplo se muestra el efecto del valor predeterminado de la $DebugPreference variable, SilentlyContinue. De forma predeterminada, el Write-Debug mensaje de depuración del cmdlet no se muestra y el procesamiento continúa. Cuando se usa el parámetro Debug , invalida la preferencia de un solo comando. Se le pide confirmación al usuario.

$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

En este ejemplo se muestra el efecto de $DebugPreference con el valor Continue . Se muestra el mensaje de depuración y el comando continúa procesando.

$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

En este ejemplo se usa el parámetro Debug con un valor de $false para suprimir el mensaje de un solo comando. El mensaje de depuración no se muestra.

Write-Debug -Message "Hello, World" -Debug:$false

En este ejemplo se muestra el efecto de $DebugPreference establecerse en el valor Stop . Se muestra el mensaje de depuración y se detiene el comando.

$DebugPreference = "Stop"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Write-Debug : The running command stopped because the preference variable
 "DebugPreference" or common parameter is set to Stop: Hello, World
At line:1 char:1
+ Write-Debug -Message "Hello, World"

En este ejemplo se usa el parámetro Debug con un valor de $false para suprimir el mensaje de un solo comando. El mensaje de depuración no se muestra y no se detiene el procesamiento.

Write-Debug -Message "Hello, World" -Debug:$false

En este ejemplo se muestra el efecto de $DebugPreference establecerse en el valor de Inquire . Se muestra el mensaje de depuración y se solicita confirmación al usuario.

$DebugPreference = "Inquire"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

En este ejemplo se usa el parámetro Debug con un valor de $false para suprimir el mensaje de un solo comando. El mensaje de depuración no se muestra y el procesamiento continúa.

Write-Debug -Message "Hello, World" -Debug:$false

$ErrorActionPreference

Determina cómo Responde PowerShell a un error de no terminación, un error que no detiene el procesamiento del cmdlet. Por ejemplo, en la línea de comandos o en un script, cmdlet o proveedor, como los errores generados por el Write-Error cmdlet.

Puede usar el parámetro común ErrorAction de un cmdlet para invalidar la preferencia de un comando específico.

Los valores válidos son los siguientes:

  • Detener: muestra el mensaje de error y deja de ejecutarse.
  • Consulta: muestra el mensaje de error y le pregunta si desea continuar.
  • Continuar: (Valor predeterminado) Muestra el mensaje de error y continúa ejecutándose.
  • Suspender: suspende automáticamente un trabajo de flujo de trabajo para permitir una investigación más detallada. Después de la investigación, se puede reanudar el flujo de trabajo.
  • SilentlyContinue: Sin efecto. El mensaje de error no se muestra y la ejecución continúa sin interrupción.
  • Omitir: suprime el mensaje de error y continúa ejecutando el comando. El valor Ignore está pensado para uso por comando, no para usarlo como preferencia guardada. Ignore no es un valor válido para la $ErrorActionPreference variable.

El $ErrorActionPreference parámetro y ErrorAction no afectan al modo en que PowerShell responde a errores de terminación que detienen el procesamiento de cmdlets. Para obtener más información sobre el parámetro común ErrorAction , consulte about_CommonParameters.

Ejemplos

Estos ejemplos muestran el efecto de los distintos valores de la $ErrorActionPreference variable. El parámetro ErrorAction se usa para invalidar el $ErrorActionPreference valor.

En este ejemplo se muestra el $ErrorActionPreference valor predeterminado , Continue. Se genera un error de no terminación. El mensaje se muestra y el procesamiento continúa.

PS> $ErrorActionPreference = "Continue"
PS> # Display the value of the preference.
PS> $ErrorActionPreference
Continue
PS> # Generate a non-terminating error.
PS> Write-Error -Message  "Hello, World"
Write-Error -Message  "Hello, World" : Hello, World
+ CategoryInfo          : NotSpecified: (:) [Write-Error],WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
PS> # The error message is displayed and execution continues.
PS> # Use the ErrorAction parameter with a value of "SilentlyContinue".
PS> Write-Error -Message  "Hello, World" -ErrorAction:SilentlyContinue
PS> # The error message isn't displayed and execution continues.

En este ejemplo se muestra el $ErrorActionPreference conjunto en SilentlyContinue. Se suprime el mensaje de error.

PS> # Display the value of the preference
PS> $ErrorActionPreference = "SilentlyContinue"
PS> # Generate an error message
PS> Write-Error -Message "Hello, World"
PS> # Error message is suppressed
PS> # Use the ErrorAction parameter with a value of "Continue"
PS> Write-Error -Message "Hello, World" -ErrorAction:Continue
Write-Error -Message "Hello, World" -ErrorAction:Continue : Hello, World
+ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

En este ejemplo se muestra el efecto de un error real. En este caso, el comando obtiene un archivo inexistente, nofile.txt.

PS> # Display the value of the preference.
PS> $ErrorActionPreference
SilentlyContinue
PS> Get-ChildItem -Path C:\nofile.txt
PS> # Error message is suppressed.
PS> # Change the value to Continue.
PS> $ErrorActionPreference = "Continue"
PS> Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
    ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.
    GetChildItemCommand
PS> # Use the ErrorAction parameter
PS> Get-ChildItem -Path C:\nofile.txt -ErrorAction SilentlyContinue
PS> # Error message is suppressed.
PS> # Change the value to Inquire.
PS> $ErrorActionPreference = "Inquire"
PS> Get-ChildItem -Path C:\nofile.txt
Confirm
Cannot find path 'C:\nofile.txt' because it does not exist.
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
  [?] Help (default is "Y"): Y
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
   ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.
   GetChildItemCommand
PS> # Change the value to Continue.
PS> $ErrorActionPreference = "Continue"
PS> # Use the ErrorAction parameter to override the preference value.
PS> Get-Childitem C:\nofile.txt -ErrorAction "Inquire"
Confirm
Cannot find path 'C:\nofile.txt' because it does not exist.
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
  [?] Help (default is "Y"): Y
Get-Childitem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-Childitem C:\nofile.txt -ErrorAction "Inquire"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
   ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.
   GetChildItemCommand

$ErrorView

Determina el formato de presentación de los mensajes de error en PowerShell.

Los valores válidos son los siguientes:

  • NormalView: (valor predeterminado) Vista detallada diseñada para la mayoría de los usuarios. Consta de una descripción del error y el nombre del objeto implicado en el error.

  • CategoryView: vista concisa y estructurada diseñada para entornos de producción. El formato es como sigue:

    {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

Para obtener más información sobre los campos de CategoryView, vea Clase ErrorCategoryInfo .

Ejemplos

En este ejemplo se muestra cómo aparece un error cuando el valor de $ErrorView es el valor predeterminado, NormalView. Get-ChildItem se usa para buscar un archivo inexistente.

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt

En este ejemplo se muestra cómo aparece el mismo error cuando el valor de $ErrorView se cambia a CategoryView.

$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

En este ejemplo se muestra que el valor de $ErrorView solo afecta a la presentación de errores. No cambia la estructura del objeto de error almacenado en la $Error variable automática. Para obtener información sobre la $Error variable automática, consulte about_automatic_variables.

El siguiente comando toma el objeto ErrorRecord asociado al error más reciente en la matriz de errores, el elemento 0 y da formato a todas las propiedades del objeto de error de una lista.

$Error[0] | Format-List -Property * -Force
PSMessageDetails      :
Exception             : System.Management.Automation.ItemNotFoundException:
                          Cannot find path 'C:\nofile.txt' because it does
                          not exist.
                        at System.Management.Automation.SessionStateInternal.
                          GetChildItems(String path, Boolean recurse, UInt32
                          depth, CmdletProviderContext context)
                        at System.Management.Automation.ChildItemCmdlet
                          ProviderIntrinsics.Get(String path, Boolean
                          recurse, UInt32 depth, CmdletProviderContext context)
                        at Microsoft.PowerShell.Commands.GetChildItemCommand.
                          ProcessRecord()
TargetObject          : C:\nofile.txt
CategoryInfo          : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
                          ItemNotFoundException
FullyQualifiedErrorId : PathNotFound,
                          Microsoft.PowerShell.Commands.GetChildItemCommand
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}

$FormatEnumerationLimit

Determina cuántos elementos enumerados se incluyen en una pantalla. Esta variable no afecta a los objetos subyacentes, solo la pantalla. Cuando el valor de $FormatEnumerationLimit es menor que el número de elementos enumerados, PowerShell agrega puntos suspensivos (...) para indicar los elementos que no se muestran.

Valores válidos: enteros (Int32)

Valor predeterminado: 4

Ejemplos

En este ejemplo se muestra cómo usar la $FormatEnumerationLimit variable para mejorar la presentación de elementos enumerados.

El comando de este ejemplo genera una tabla que enumera todos los servicios que se ejecutan en el equipo en dos grupos: uno para ejecutar servicios y otro para los servicios detenidos . Usa un Get-Service comando para obtener todos los servicios y, a continuación, envía los resultados a través de la Group-Object canalización al cmdlet , que agrupa los resultados por el estado del servicio.

El resultado es una tabla que enumera el estado de la columna Nombre y los procesos de la columna Grupo . Para cambiar las etiquetas de columna, use una tabla hash, consulte about_Hash_Tables. Para obtener más información, vea los ejemplos de Format-Table.

Busque el valor actual de $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Enumere todos los servicios agrupados por Estado. Hay un máximo de cuatro servicios enumerados en la columna Grupo para cada estado porque $FormatEnumerationLimit tiene un valor de 4.

Get-Service | Group-Object -Property Status
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart...}

Para aumentar el número de elementos enumerados, aumente el valor de $FormatEnumerationLimit a 1000. Use Get-Service y Group-Object para mostrar los servicios.

$FormatEnumerationLimit = 1000
Get-Service | Group-Object -Property Status
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...

Use Format-Table con el parámetro Wrap para mostrar la lista de servicios.

Get-Service | Group-Object -Property Status | Format-Table -Wrap
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec,
                  Client for NFS, CryptSvc, DcomLaunch, Dhcp, dmserver,
                  Dnscache, ERSvc, Eventlog, EventSystem, FwcAgent, helpsvc,
                  HidServ, IISADMIN, InoRPC, InoRT, InoTask, lanmanserver,
                  lanmanworkstation, LmHosts, MDM, Netlogon, Netman, Nla,
                  NtLmSsp, PlugPlay, PolicyAgent, ProtectedStorage, RasMan,
                  RemoteRegistry, RpcSs, SamSs, Schedule, seclogon, SENS,
                  SharedAccess, ShellHWDetection, SMT PSVC, Spooler,
                  srservice, SSDPSRV, stisvc, TapiSrv, TermService, Themes,
                  TrkWks, UMWdf, W32Time, W3SVC, WebClient, winmgmt, wscsvc,
                  wuauserv, WZCSVC, zzInterix}

41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc,
                  ClipSrv, clr_optimization_v2.0.50727_32, COMSysApp,
                  CronService, dmadmin, FastUserSwitchingCompatibility,
                  HTTPFilter, ImapiService, Mapsvc, Messenger, mnmsrvc,
                  MSDTC, MSIServer, msvsmon80, NetDDE, NetDDEdsdm, NtmsSvc,
                  NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess, RpcLocator,
                  SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS,
                  WmdmPmSN, Wmi, WmiApSrv, xmlprov}

$InformationPreference

La $InformationPreference variable le permite establecer preferencias de flujo de información que desea mostrar a los usuarios. En concreto, los mensajes informativos que agregó a comandos o scripts mediante la adición del cmdlet Write-Information . Si se usa el parámetro InformationAction , su valor invalida el valor de la $InformationPreference variable. Write-Information se introdujo en PowerShell 5.0.

Los valores válidos son los siguientes:

  • Detener: detiene un comando o script en una aparición del Write-Information comando.
  • Inquire: muestra el mensaje informativo que especifica en un Write-Information comando y, a continuación, pregunta si desea continuar.
  • Continuar: muestra el mensaje informativo y continúa ejecutándose.
  • Suspender: suspende automáticamente un trabajo de flujo de trabajo después de llevar a cabo un Write-Information comando, para permitir que los usuarios vean los mensajes antes de continuar. El flujo de trabajo se puede reanudar a discreción del usuario.
  • SilentlyContinue: (Valor predeterminado) Sin efecto. Los mensajes informativos no se muestran y el script continúa sin interrupción.

$Log*Evento

Las variables de preferencia Log*Event determinan qué tipos de eventos se escriben en el registro de eventos de PowerShell en Visor de eventos. De forma predeterminada, solo se registran los eventos de motor y proveedor. Sin embargo, puede usar las variables de preferencias Log*Event para personalizar el registro, como el registro de eventos sobre comandos.

Las variables de preferencia Log*Event son las siguientes:

  • $LogCommandHealthEvent: registra errores y excepciones en la inicialización y el procesamiento de comandos. El valor predeterminado es $false (no registrado).
  • $LogCommandLifecycleEvent: registra el inicio y detención de comandos y canalizaciones de comandos y excepciones de seguridad en la detección de comandos. El valor predeterminado es $false (no registrado).
  • $LogEngineHealthEvent: registra errores y errores de sesiones. El valor predeterminado es $true (registrado).
  • $LogEngineLifecycleEvent: registra la apertura y el cierre de sesiones. El valor predeterminado es $true (registrado).
  • $LogProviderHealthEvent: registra errores de proveedor, como errores de lectura y escritura, errores de búsqueda y errores de invocación. El valor predeterminado es $true (registrado).
  • $LogProviderLifecycleEvent: registra la adición y eliminación de proveedores de PowerShell. El valor predeterminado es $true (registrado). Para obtener información sobre los proveedores de PowerShell, consulte about_Providers.

Para habilitar un evento Log*, escriba la variable con un valor de $true, por ejemplo:

$LogCommandLifeCycleEvent = $true

Para deshabilitar un tipo de evento, escriba la variable con un valor de $false, por ejemplo:

$LogCommandLifeCycleEvent = $false

Los eventos que habilite solo son efectivos para la consola de PowerShell actual. Para aplicar la configuración a todas las consolas, guarde la configuración de variables en el perfil de PowerShell. Para obtener más información, consulte about_Profiles.

$MaximumAliasCount

Determina cuántos alias se permiten en una sesión de PowerShell. El valor predeterminado es 4096 y debe ser suficiente para la mayoría de los usos. Puede ajustarse $MaximumAliasCount para satisfacer sus necesidades.

Valores válidos: 1024 - 32768 (Int32)

Valor predeterminado: 4096

Para contar los alias en el sistema, escriba:

(Get-Alias).count

$MaximumDriveCount

Determina cuántas unidades de PowerShell se permiten en una sesión determinada. Por ejemplo, las unidades del sistema de archivos y los almacenes de datos expuestos por los proveedores de PowerShell y aparecen como unidades, como las Alias: unidades y HKLM: .

Valores válidos: 1024 - 32768 (Int32)

Valor predeterminado: 4096

Para contar los alias en el sistema, escriba:

(Get-PSDrive).count

$MaximumErrorCount

Determina cuántos errores se guardan en el historial de errores de la sesión.

Valores válidos: 256 - 32768 (Int32)

Valor predeterminado: 256

Los objetos que representan cada error retenido se almacenan en la $Error variable automática. $Error contiene una matriz de objetos de registro de error. El error más reciente es el primer objeto de la matriz, $Error[0].

Para contar los errores en el sistema, use la propiedad Count de la $Error matriz.

$Error.count

Para mostrar un error específico, use la notación de matriz [0] para ver el error más reciente.

$Error[0]

Para mostrar el error retenido más antiguo, escriba:

$Error[($Error.Count -1]

El parámetro Force invalida el formato especial de los objetos ErrorRecord y revierte al formato convencional. Para mostrar las propiedades del objeto ErrorRecord , escriba el siguiente comando:

$Error[0] | Format-List -Property * -Force

En este ejemplo, $Error.Count muestra el número de errores. Para eliminar todos los errores del historial de errores, use el Clear método de la matriz de errores.

$Error.Count
17
$Error.Clear()
$Error.Count
0

Para buscar todas las propiedades y métodos de una matriz de errores, use el Get-Member cmdlet con su parámetro InputObject . Cuando se usa el parámetro InputObject , Get-Member se muestran las propiedades y los métodos de la colección.

Get-Member -InputObject $Error

Al canalizar una colección de objetos a Get-Member, Get-Member muestra las propiedades y los métodos de los objetos de la colección.

$Error | Get-Member

$MaximumFunctionCount

Determina cuántas funciones se permiten en una sesión determinada.

Valores válidos: 1024 - 32768 (Int32)

Valor predeterminado: 4096

Para ver las funciones de la sesión, use la unidad de PowerShell Function: que expone el proveedor de PowerShell Function . Para obtener más información sobre el Function proveedor, about_Function_Provider.

Para enumerar las funciones de la sesión actual, escriba:

Get-ChildItem Function:

Para contar las funciones de la sesión actual, escriba:

(Get-ChildItem Function:).Count

$MaximumHistoryCount

Determina cuántos comandos se guardan en el historial de comandos de la sesión actual.

Valores válidos: 1 - 32768 (Int32)

Valor predeterminado: 4096

Para determinar el número de comandos guardados actualmente en el historial de comandos, escriba:

(Get-History).Count

Para ver los comandos guardados en el historial de sesiones, use el Get-History cmdlet . Para obtener más información, consulte about_History.

$MaximumVariableCount

Determina cuántas variables se permiten en una sesión determinada, incluidas las variables automáticas, las variables de preferencia y las variables que se crean en comandos y scripts.

Valores válidos: 1024 - 32768 (Int32)

Valor predeterminado: 4096

Para ver las variables de la sesión, use el Get-Variable cmdlet y las características de la unidad de PowerShell Variable: y el proveedor de PowerShell Variable . Para obtener información, consulte about_Variable_Provider.

Para buscar el número actual de variables en el sistema, escriba:

(Get-Variable).Count

$OFS

El separador de campo de salida (OFS) especifica el carácter que separa los elementos de una matriz que se convierte en una cadena.

Valores válidos: cualquier cadena.

Valor predeterminado: espacio

De forma predeterminada, la $OFS variable no existe y el separador de archivos de salida es un espacio, pero puede agregar esta variable y establecerla en cualquier cadena. Puede cambiar el valor de $OFS en la sesión escribiendo $OFS="<value>".

Nota

Si espera el valor predeterminado de un espacio (" ") en el script, el módulo o la salida de configuración, tenga cuidado de que el $OFS valor predeterminado no se haya cambiado en otro lugar del código.

Ejemplos

En este ejemplo se muestra que se usa un espacio para separar los valores cuando una matriz se convierte en una cadena. En este caso, una matriz de enteros se almacena en una variable y, a continuación, la variable se convierte como una cadena.

$array = 1,2,3,4
[string]$array
1 2 3 4

Para cambiar el separador, agregue la $OFS variable asignando un valor a ella. La variable debe tener el nombre $OFS.

$OFS = "+"
[string]$array
1+2+3+4

Para restaurar el comportamiento predeterminado, puede asignar un espacio (" ") al valor de $OFS o eliminar la variable. Los siguientes comandos eliminan la variable y, a continuación, comprueban que el separador es un espacio.

Remove-Variable OFS
[string]$array
1 2 3 4

$OutputEncoding

Determina el método de codificación de caracteres que Usa PowerShell cuando envía texto a otras aplicaciones.

Por ejemplo, si una aplicación devuelve cadenas Unicode a PowerShell, es posible que tenga que cambiar el valor a UnicodeEncoding para enviar los caracteres correctamente.

Los valores válidos son los siguientes: Objetos derivados de una clase de codificación, como ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding y UnicodeEncoding.

Valor predeterminado: objeto ASCIIEncoding (System.Text.ASCIIEncoding)

Ejemplos

En este ejemplo se muestra cómo hacer que el comando de Windows findstr.exe funcione en PowerShell en un equipo que se localiza para un idioma que usa caracteres Unicode, como chino.

El primer comando busca el valor de $OutputEncoding. Dado que el valor es un objeto de codificación, solo muestra su propiedad EncodingName .

$OutputEncoding.EncodingName

En este ejemplo, se usa un comando findstr.exe para buscar dos caracteres chinos presentes en el Test.txt archivo. Cuando este comandofindstr.exe se ejecuta en el símbolo del sistema de Windows (cmd.exe), findstr.exe busca los caracteres en el archivo de texto. Sin embargo, al ejecutar el mismo comando defindstr.exe en PowerShell, no se encuentran los caracteres porque PowerShell los envía a findstr.exe en texto ASCII, en lugar de en texto Unicode.

findstr <Unicode-characters>

Para que el comando funcione en PowerShell, establezca el valor de $OutputEncoding en el valor de la propiedad OutputEncoding de la consola, que se basa en la configuración regional seleccionada para Windows. Dado que OutputEncoding es una propiedad estática de la consola, use dos puntos y comas (::) en el comando .

$OutputEncoding = [console]::OutputEncoding
$OutputEncoding.EncodingName
OEM United States

Después de cambiar la codificación, el comando findstr.exe busca los caracteres Unicode.

findstr <Unicode-characters>
test.txt:         <Unicode-characters>

$ProgressPreference

Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, un cmdlet o un proveedor, como las barras de progreso generadas por el cmdlet Write-Progress . El Write-Progress cmdlet crea barras de progreso que muestran el estado de un comando.

Los valores válidos son los siguientes:

  • Detener: no muestra la barra de progreso. En su lugar, muestra un mensaje de error y deja de ejecutarse.
  • Inquire: No muestra la barra de progreso. Solicita permiso para continuar. Si responde con Y o A, muestra la barra de progreso.
  • Continue: (Valor predeterminado) Muestra la barra de progreso y continúa con la ejecución.
  • SilentlyContinue: ejecuta el comando , pero no muestra la barra de progreso.

$PSEmailServer

Especifica el servidor de correo electrónico predeterminado que se usa para enviar mensajes de correo electrónico. Los cmdlets que envían correo electrónico usan esta variable de preferencia, como el cmdlet Send-MailMessage .

$PSDefaultParameterValues

Especifica valores predeterminados para los parámetros de cmdlets y funciones avanzadas. El valor de $PSDefaultParameterValues es una tabla hash donde la clave consta del nombre del cmdlet y el nombre del parámetro separados por dos puntos (:). El valor es un valor predeterminado personalizado que especifique.

$PSDefaultParameterValues se introdujo en PowerShell 3.0.

Para obtener más información sobre esta variable de preferencia, consulte about_Parameters_Default_Values.

$PSModuleAutoloadingPreference

Habilita y deshabilita la importación automática de módulos en la sesión. Todo es el valor predeterminado. Independientemente del valor de la variable, puede usar Import-Module para importar un módulo.

Los valores válidos son:

  • All: los módulos se importan automáticamente en el primer uso. Para importar un módulo, obtenga o use cualquier comando del módulo. Por ejemplo, use Get-Command.
  • ModuleQualified: los módulos solo se importan automáticamente cuando un usuario usa el nombre completo del módulo de un comando en el módulo. Por ejemplo, si el usuario escribe MyModule\MyCommand, PowerShell importa el módulo MyModule .
  • Ninguno: la importación automática de módulos está deshabilitada en la sesión. Para importar un módulo, use el Import-Module cmdlet .

Para obtener más información sobre la importación automática de módulos, consulte about_Modules.

$PSSessionApplicationName

Especifica el nombre de aplicación predeterminado para un comando remoto que usa servicios web para la tecnología de administración (WS-Management). Para obtener más información, consulta Acerca de la administración remota de Windows.

El nombre de aplicación predeterminado del sistema es WSMAN, pero puede usar esta variable de preferencia para cambiar el valor predeterminado.

El nombre de la aplicación es el último nodo de un URI de conexión. Por ejemplo, el nombre de la aplicación en el siguiente URI de ejemplo es WSMAN.

http://Server01:8080/WSMAN

El nombre de aplicación predeterminado se usa cuando el comando remoto no especifica un URI de conexión ni un nombre de aplicación.

El servicio WinRM usa el nombre de la aplicación para seleccionar un agente de escucha para atender la solicitud de conexión. El valor del parámetro debe coincidir con el valor de la propiedad URLPrefix de un agente de escucha en el equipo remoto.

Para invalidar el valor predeterminado del sistema y el valor de esta variable y seleccionar un nombre de aplicación diferente para una sesión determinada, use los parámetros ConnectionURI o ApplicationName de los cmdlets New-PSSession, Enter-PSSession o Invoke-Command .

La $PSSessionApplicationName variable de preferencia se establece en el equipo local, pero especifica un agente de escucha en el equipo remoto. Si el nombre de la aplicación que especifique no existe en el equipo remoto, se produce un error en el comando para establecer la sesión.

$PSSessionConfigurationName

Especifica la configuración de sesión predeterminada que se usa para PSSessions creadas en la sesión actual.

Esta variable de preferencia se establece en el equipo local, pero especifica una configuración de sesión que se encuentra en el equipo remoto.

El valor de la $PSSessionConfigurationName variable es un URI de recurso completo.

El valor https://schemas.microsoft.com/PowerShell/microsoft.PowerShell predeterminado indica la configuración de sesión de Microsoft.PowerShell en el equipo remoto.

Si especifica solo un nombre de configuración, se antepone el siguiente URI de esquema:

https://schemas.microsoft.com/PowerShell/

Puede invalidar el valor predeterminado y seleccionar una configuración de sesión diferente para una sesión determinada mediante el parámetro ConfigurationName de los New-PSSessioncmdlets , Enter-PSSessiono Invoke-Command .

Puede cambiar el valor de esta variable en cualquier momento. Cuando lo haga, recuerde que la configuración de sesión que seleccione debe existir en el equipo remoto. Si no es así, se produce un error en el comando para crear una sesión que use la configuración de sesión.

Esta variable de preferencia no determina qué configuraciones de sesión local se usan cuando los usuarios remotos crean una sesión que se conecta a este equipo. Sin embargo, puede usar los permisos para las configuraciones de sesión local para determinar qué usuarios pueden usarlos.

$PSSessionOption

Establece los valores predeterminados para las opciones avanzadas de usuario en una sesión remota. Estas preferencias de opción invalidan los valores predeterminados del sistema para las opciones de sesión.

La $PSSessionOption variable contiene un objeto PSSessionOption . Para obtener más información, vea System.Management.Automation.Remoting.PSSessionOption. Cada propiedad del objeto representa una opción de sesión. Por ejemplo, la propiedad NoCompression gira de compresión de datos durante la sesión.

De forma predeterminada, la $PSSessionOption variable contiene un objeto PSSessionOption con los valores predeterminados para todas las opciones, como se muestra a continuación.

MaximumConnectionRedirectionCount : 5
NoCompression                     : False
NoMachineProfile                  : False
ProxyAccessType                   : None
ProxyAuthentication               : Negotiate
ProxyCredential                   :
SkipCACheck                       : False
SkipCNCheck                       : False
SkipRevocationCheck               : False
OperationTimeout                  : 00:03:00
NoEncryption                      : False
UseUTF16                          : False
IncludePortInSPN                  : False
OutputBufferingMode               : None
Culture                           :
UICulture                         :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize         : 209715200
ApplicationArguments              :
OpenTimeout                       : 00:03:00
CancelTimeout                     : 00:01:00
IdleTimeout                       : -00:00:00.0010000

Para obtener descripciones de estas opciones y más información, consulte New-PSSessionOption. Para obtener más información sobre los comandos y sesiones remotos, consulte about_Remote y about_PSSessions.

Para cambiar el valor de la $PSSessionOption variable de preferencia, use el New-PSSessionOption cmdlet para crear un objeto PSSessionOption con los valores de opción que prefiera. Guarde la salida en una variable denominada $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

Para usar la $PSSessionOption variable de preferencia en cada sesión de PowerShell, agregue un New-PSSessionOption comando que cree la $PSSessionOption variable al perfil de PowerShell. Para obtener más información, consulte about_Profiles.

Puede establecer opciones personalizadas para una sesión remota determinada. Las opciones que establezca tienen prioridad sobre los valores predeterminados del sistema y el valor de la $PSSessionOption variable de preferencia.

Para establecer opciones de sesión personalizadas, use el New-PSSessionOption cmdlet para crear un objeto PSSessionOption . A continuación, use el objeto PSSessionOption como el valor del parámetro SessionOption en cmdlets que crean una sesión, como New-PSSession, Enter-PSSessiony Invoke-Command.

$VerbosePreference

Determina cómo Responde PowerShell a los mensajes detallados generados por un script, cmdlet o proveedor, como los mensajes generados por el cmdlet Write-Verbose . Los mensajes detallados describen las acciones realizadas para ejecutar un comando.

De forma predeterminada, los mensajes detallados no se muestran, pero puede cambiar este comportamiento cambiando el valor de $VerbosePreference.

Puede usar el parámetro común Detallado de un cmdlet para mostrar u ocultar los mensajes detallados de un comando específico. Para obtener más información, consulta about_CommonParameters.

Los valores válidos son los siguientes:

  • Detener: muestra el mensaje detallado y un mensaje de error y, a continuación, deja de ejecutarse.
  • Inquire: muestra el mensaje detallado y, a continuación, muestra un mensaje que le pregunta si desea continuar.
  • Continuar: muestra el mensaje detallado y, a continuación, continúa con la ejecución.
  • SilentlyContinue: (valor predeterminado) No muestra el mensaje detallado. Continúa ejecutándose.

Ejemplos

Estos ejemplos muestran el efecto de los distintos valores de $VerbosePreference y el parámetro Verbose para invalidar el valor de preferencia.

En este ejemplo se muestra el efecto del valor SilentlyContinue , que es el valor predeterminado. El comando usa el parámetro Message , pero no escribe un mensaje en la consola de PowerShell.

Write-Verbose -Message "Verbose message test."

Cuando se usa el parámetro Verbose , se escribe el mensaje.

Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.

En este ejemplo se muestra el efecto del valor Continue . La $VerbosePreference variable se establece en Continue (Continuar ) y se muestra el mensaje.

$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

En este ejemplo se usa el parámetro Verbose con un valor de $false que invalida el valor Continue . No se muestra el mensaje.

Write-Verbose -Message "Verbose message test." -Verbose:$false

En este ejemplo se muestra el efecto del valor Stop . La $VerbosePreference variable se establece en Stop y se muestra el mensaje. El comando se detiene.

$VerbosePreference = "Stop"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Write-Verbose : The running command stopped because the preference variable
  "VerbosePreference" or common parameter is set to Stop: Verbose message test.
At line:1 char:1
+ Write-Verbose -Message "Verbose message test."

En este ejemplo se usa el parámetro Verbose con un valor de $false que invalida el valor Stop . No se muestra el mensaje.

Write-Verbose -Message "Verbose message test." -Verbose:$false

En este ejemplo se muestra el efecto del valor Inquire . La $VerbosePreference variable se establece en Inquire. Se muestra el mensaje y se solicita confirmación al usuario.

$VerbosePreference = "Inquire"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

En este ejemplo se usa el parámetro Verbose con un valor de $false que invalida el valor Inquire . No se le pide al usuario y no se muestra el mensaje.

Write-Verbose -Message "Verbose message test." -Verbose:$false

$WarningPreference

Determina cómo Responde PowerShell a los mensajes de advertencia generados por un script, cmdlet o proveedor, como los mensajes generados por el cmdlet Write-Warning .

De forma predeterminada, se muestran los mensajes de advertencia y continúa la ejecución, pero puede cambiar este comportamiento cambiando el valor de $WarningPreference.

Puede usar el parámetro común WarningAction de un cmdlet para determinar cómo Responde PowerShell a las advertencias de un comando determinado. Para obtener más información, consulta about_CommonParameters.

Los valores válidos son los siguientes:

  • Detener: muestra el mensaje de advertencia y un mensaje de error y, a continuación, deja de ejecutarse.
  • Consulta: muestra el mensaje de advertencia y, a continuación, solicita permiso para continuar.
  • Continuar: (valor predeterminado) Muestra el mensaje de advertencia y, a continuación, continúa ejecutándose.
  • SilentlyContinue: no muestra el mensaje de advertencia. Continúa ejecutándose.

Ejemplos

Estos ejemplos muestran el efecto de los distintos valores de $WarningPreference. El parámetro WarningAction invalida el valor de preferencia.

En este ejemplo se muestra el efecto del valor predeterminado, Continue.

$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

En este ejemplo se usa el parámetro WarningAction con el valor SilentlyContinue para suprimir la advertencia. No se muestra el mensaje.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

En este ejemplo se cambia la $WarningPreference variable al valor SilentlyContinue . No se muestra el mensaje.

$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m

En este ejemplo se usa el parámetro WarningAction para detener cuando se genera una advertencia.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop

En este ejemplo se cambia la $WarningPreference variable al valor Inquire . Se solicita confirmación al usuario.

$WarningPreference = "Inquire"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

En este ejemplo se usa el parámetro WarningAction con el valor SilentlyContinue. El comando continúa ejecutándose y no se muestra ningún mensaje.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

En este ejemplo se cambia el $WarningPreference valor a Detener.

$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m

En este ejemplo se usa WarningAction con el valor Inquire . Cuando se produce una advertencia, se solicita al usuario.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Inquire
WARNING: This action can delete data.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend
[?] Help (default is "Y"):

$WhatIfPreference

Determina si WhatIf está habilitado automáticamente para cada comando que lo admita. Cuando se habilita WhatIf , el cmdlet notifica el efecto esperado del comando, pero no ejecuta el comando.

Los valores válidos son los siguientes:

  • False (0, no habilitado): (valor predeterminado) WhatIf no está habilitado automáticamente. Para habilitarlo manualmente, use el parámetro WhatIf del cmdlet.
  • True (1, habilitado): WhatIf se habilita automáticamente en cualquier comando que lo admita. Los usuarios pueden usar el parámetro WhatIf con un valor de False para deshabilitarlo manualmente, como -WhatIf:$false.

Ejemplos

Estos ejemplos muestran el efecto de los distintos valores de $WhatIfPreference. Muestran cómo usar el parámetro WhatIf para invalidar el valor de preferencia de un comando específico.

En este ejemplo se muestra el efecto de la $WhatIfPreference variable establecida en el valor predeterminado, False. Use Get-ChildItem para comprobar que el archivo existe. Remove-Item elimina el archivo. Una vez eliminado el archivo, puede comprobar la eliminación con Get-ChildItem.

Get-ChildItem -Path .\test.txt
Remove-Item -Path ./test.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           9/13/2019    10:53             10 test.txt
Get-ChildItem -Path .\test.txt
Get-ChildItem : Cannot find path 'C:\Test\test.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -File test.txt

En este ejemplo se muestra el efecto de usar el parámetro WhatIf cuando el valor de $WhatIfPreference es False.

Compruebe si el archivo existe.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Use el parámetro WhatIf para determinar el resultado de intentar eliminar el archivo.

Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Compruebe que el archivo no se eliminó.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

En este ejemplo se muestra el efecto de la $WhatIfPreference variable establecida en el valor True. Cuando se usa Remove-Item para eliminar un archivo, se muestra la ruta de acceso del archivo, pero el archivo no se elimina.

Intente eliminar un archivo. Se muestra un mensaje sobre lo que sucedería si Remove-Item se ejecutase, pero el archivo no se elimina.

$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Use Get-ChildItem para comprobar que el archivo no se eliminó.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

En este ejemplo se muestra cómo eliminar un archivo cuando el valor de $WhatIfPreference es True. Usa el parámetro WhatIf con un valor de $false. Use Get-ChildItem para comprobar que se eliminó el archivo.

Remove-Item -Path .\test2.txt -WhatIf:$false
Get-ChildItem -Path .\test2.txt
Get-ChildItem : Cannot find path 'C:\Test\test2.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path .\test2.txt

A continuación se muestran ejemplos del Get-Process cmdlet que no admite WhatIf y Stop-Process que admite WhatIf. El $WhatIfPreference valor de la variable es True.

Get-Process no admite WhatIf. Cuando se ejecuta el comando, muestra el proceso de Winword .

Get-Process -Name Winword
 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    130   119.84     173.38       8.39   15024   4 WINWORD

Stop-Process admite WhatIf. El proceso de Winword no se detiene.

Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".

Puede invalidar el Stop-Process comportamiento de WhatIf mediante el parámetro WhatIf con un valor de $false. El proceso de Winword se detiene.

Stop-Process -Name Winword -WhatIf:$false

Para comprobar que se ha detenido el proceso de Winword , use Get-Process.

Get-Process -Name Winword
Get-Process : Cannot find a process with the name "Winword".
  Verify the process name and call the cmdlet again.
At line:1 char:1
+ Get-Process -Name Winword

Consulte también

about_Automatic_Variables

about_CommonParameters

about_Environment_Variables

about_Profiles

about_Remote

about_Scopes

about_Variables