about_Preference_Variables
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 en 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. Algunos cmdlets tienen parámetros que permiten invalidar el comportamiento de preferencia de un comando específico.
En la tabla siguiente se enumeran las variables de preferencia y sus valores predeterminados.
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
Nota:
Los cambios en las variables de preferencia solo se aplican en el ámbito que se realizan y los ámbitos secundarios de los mismos. Por ejemplo, puede limitar los efectos de cambiar una variable de preferencia a una sola función o script. Para obtener más información, consulte about_Scopes.
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.
La $ConfirmPreference
variable toma uno de los ConfirmImpact
valores de enumeración: High, Medium, Low o None.
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. Para obtener más información sobre cómo asignar un riesgo a cmdlets o funciones, consulte about_Functions_CmdletBindingAttribute.
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 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 [?] Help (default is "Y"):
La estimación del riesgo es un atributo del cmdlet o función conocido como ConfirmImpact. Los usuarios no pueden cambiarlo.
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.
La mayoría de los cmdlets y funciones mantienen el valor predeterminado de Medium para ConfirmImpact.
$ConfirmPreference
se establece en Alto de forma predeterminada. Por lo tanto, es raro que los comandos pidan automáticamente confirmación cuando los usuarios no especifiquen el parámetro Confirm .
Para ampliar la confirmación automática que solicita más cmdlets y funciones, establezca el valor de $ConfirmPreference
en 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 funciones son de riesgo medio, no se confirman automáticamente y Remove-Item
eliminan el archivo. Al agregar -Confirm
al sistema 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
[?] Help (default is "Y"):
En el ejemplo siguiente se muestra el efecto de cambiar el valor de $ConfirmPreference
a Medium. Dado que la mayoría de los cmdlets y la función son de riesgo medio, se confirman automáticamente. Para suprimir el mensaje 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
[?] 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.
La $DebugPreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
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, los mensajes de depuración no se muestran, pero puede mostrar 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, consultE about_CommonParameters.
Los valores válidos son los siguientes:
- Interrumpir : escriba el depurador cuando se produzca un error o cuando se produzca una excepción.
- Detener: muestra el mensaje de depuración y deja de ejecutarse. Escribe un error en la consola.
- Inquire: muestra el mensaje de depuración y le pregunta si desea continuar.
- Continuar: muestra el mensaje de depuración y continúa con la ejecución.
- SilentlyContinue: (Valor predeterminado) No hay ningún efecto. El mensaje de depuración no se muestra y la ejecución continúa sin interrupción.
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 Continue.
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 solo 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 muestra el mensaje de depuración.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
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. No se muestra el mensaje de depuración.
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 [?] 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.
La $ErrorActionPreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
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:
- Interrumpir : escriba el depurador cuando se produzca un error o cuando se produzca una excepción.
- Continuar: (Valor predeterminado) Muestra el mensaje de error y continúa ejecutándose.
- 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. - Inquire: muestra el mensaje de error y le pregunta si desea continuar.
- SilentlyContinue: Sin efecto. El mensaje de error no se muestra y la ejecución continúa sin interrupción.
- Detener: muestra el mensaje de error y deja de ejecutarse. Además del error generado, el valor Stop genera un objeto ActionPreferenceStopException al flujo de error.
- Suspender: suspende automáticamente un trabajo de flujo de trabajo para permitir una investigación adicional. Después de la investigación, se puede reanudar el flujo de trabajo. El valor Suspend está pensado para uso por comando, no para usarlo como preferencia guardada. Suspender no es un valor válido para la
$ErrorActionPreference
variable.
$ErrorActionPreference
y el parámetro ErrorAction no afectan a cómo Responde PowerShell a los 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.
Muchos comandos nativos escriben en stderr
a modo de secuencia alternativa para obtener información adicional. Este comportamiento puede llevar a confusión cuando se examinan los errores; también, se puede perder la información de salida adicional para el usuario si $ErrorActionPreference
se establece en un estado que silencia la salida.
A partir de PowerShell 7.2, los registros de error redirigidos desde comandos nativos, como cuando se usan operadores de redireccionamiento (2>&1
), no se escriben en la $Error
variable y la variable $ErrorActionPreference
de preferencia no afecta a la salida redirigida.
PowerShell 7.3 ha agregado una característica experimental que permite controlar cómo se controlan los mensajes escritos en stderr
.
Para obtener más información, consulte $PSNativeCommandUseErrorActionPreference.
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 continúa el procesamiento.
# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World
En este ejemplo se muestra el $ErrorActionPreference
valor predeterminado, Inquire. Se genera un error y se muestra una solicitud de acción.
# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
En este ejemplo se muestra el conjunto en $ErrorActionPreference
SilentlyContinue.
Se suprime el mensaje de error.
# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World
En este ejemplo se muestra el $ErrorActionPreference
conjunto en Detener. También muestra el objeto adicional generado en la $Error
variable.
# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
Determina el formato de presentación de los mensajes de error en PowerShell.
La $ErrorView
variable toma uno de los ErrorView
valores de enumeración: NormalView, CategoryView o ConciseView.
Los valores válidos son los siguientes:
ConcisoView: (valor predeterminado) Proporciona un mensaje de error conciso y una vista refactorizado para los generadores de módulos avanzados. A partir de PowerShell 7.2, si el error procede de la línea de comandos o un módulo de script, la salida es un mensaje de error de una sola línea. De lo contrario, recibirá un mensaje de error de varias líneas que contiene el error y un puntero al error que muestra dónde se produce en esa línea. Si el terminal admite Terminal virtual, los códigos de color ANSI se usan para proporcionar énfasis de color. El color de énfasis se puede cambiar en
$Host.PrivateData.ErrorAccentColor
. UseGet-Error
el cmdlet para obtener una vista detallada completa del error completo, incluidas las excepciones internas.ConcisoView se agregó en PowerShell 7.
NormalView: una 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 el siguiente:
{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, ConcisoView. Get-ChildItem
se usa para buscar un directorio inexistente.
Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.
En este ejemplo se muestra cómo aparece un error cuando el valor de $ErrorView
es el valor predeterminado, ConcisoView. Script.ps1
se ejecuta y produce un error de la Get-Item
instrucción .
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Can't find path 'C:\demo\stuff' because it doesn't exist.
En este ejemplo se muestra cómo aparece un error cuando se cambia el valor de $ErrorView
a NormalView. Get-ChildItem
se usa para buscar un archivo no existente.
Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Can't find path 'C:\nofile.txt' because it doesn't exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt
En este ejemplo se muestra cómo aparece el mismo error cuando se cambia el valor de $ErrorView
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 las propiedades del objeto 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 visualizació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 canalización al Group-Object
cmdlet , que agrupa los resultados por el estado del servicio.
El resultado es una tabla que enumera el estado en 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
Enumera 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.
La $InformationPreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
Los valores válidos son los siguientes:
- Interrumpir : escriba el depurador al escribir en el flujo de información.
- Detener: detiene un comando o script en una aparición del
Write-Information
comando. - Inquire: muestra el mensaje informativo que especifique en un
Write-Information
comando y, a continuación, pregunta si desea continuar. - Continuar: muestra el mensaje informativo y continúa ejecutándose.
- SilentlyContinue: (Valor predeterminado) No hay ningún efecto. Los mensajes informativos no se muestran y el script continúa sin interrupción.
$Log*Evento
Las variables de preferencias 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 registrar 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 cierre de las sesiones. El valor predeterminado es$true
(registrado).$LogProviderHealthEvent
: registra errores de proveedor, como errores de lectura y escritura, errores de búsqueda e 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.
$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.
$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 denominarse $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 PowerShell usa al canalización de datos en aplicaciones nativas.
Nota:
En la mayoría de los escenarios, el valor de $OutputEncoding
debe alinearse con el valor de [Console]::InputEncoding
.
Los valores válidos son los siguientes: Objetos derivados de una clase de codificación, como ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding y UnicodeEncoding.
Valor predeterminado: objeto UTF8Encoding .
Ejemplos
El primer comando busca el valor de $OutputEncoding
. Dado que el valor es un objeto de codificación, muestra solo su propiedad EncodingName .
$OutputEncoding.EncodingName
En los ejemplos restantes se usa el siguiente script de PowerShell guardado como hexdump.ps1
para ilustrar el comportamiento de $OutputEncoding
.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
En el ejemplo siguiente se muestra cómo el valor café
de cadena se codifica en bytes cuando se canaliza en hexdump.ps1
creado anteriormente. Muestra que el valor de cadena se codifica mediante el esquema UTF8Encoding.
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
En el ejemplo siguiente se muestra cómo cambian los bytes al cambiar la codificación a UnicodeEncoding.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
Determina cómo PowerShell responde a las actualizaciones de progreso generadas por un script, cmdlet o 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.
La $ProgressPreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
Los valores válidos son los siguientes:
- Interrumpir : escriba el depurador al escribir en el flujo de progreso.
- 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
oA
, muestra la barra de progreso. - Continuar: (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.
$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.
$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 .
$PSModuleAutoloadingPreference
Habilita y deshabilita la importación automática de módulos en la sesión. La $PSModuleAutoloadingPreference
variable no existe de forma predeterminada. El comportamiento predeterminado cuando la variable no está definida es la misma que $PSModuleAutoloadingPreference = 'All'
.
Para importar automáticamente un módulo, obtenga o use un comando incluido en el módulo.
La $PSModuleAutoloadingPreference
variable toma uno de los PSModuleAutoLoadingPreference
valores de enumeración:
All
: los módulos se importan automáticamente en el primer uso.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 escribeMyModule\MyCommand
, PowerShell importa el módulo MyModule .None
: deshabilita la importación automática de módulos. Para importar un módulo, use elImport-Module
cmdlet .
Para obtener más información sobre la importación automática de módulos, consulte about_Modules.
$PSNativeCommandArgumentPassing
PowerShell 7.3 cambió la forma en que analiza la línea de comandos para los comandos nativos.
La nueva $PSNativeCommandArgumentPassing
variable de preferencia controla este comportamiento.
Precaución
El nuevo comportamiento es un cambio importante del comportamiento anterior. Puede provocar la interrupción de los scripts y la automatización que se usan como soluciones alternativas para diferentes problemas al invocar aplicaciones nativas.
La variable $PSNativeCommandArgumentPassing
automática permite seleccionar el comportamiento en tiempo de ejecución. Los valores válidos son Legacy
, Standard
y Windows
. Legacy
es el comportamiento que se ha usado hasta ahora.
La $PSNativeCommandArgumentPassing
variable se define de forma predeterminada, pero el valor es específico de la plataforma.
- En Windows, la preferencia se establece
Windows
en . - En plataformas que no son de Windows, la preferencia se establece
Standard
en . - Si ha quitado la
$PSNativeCommandArgumentPassing
variable, PowerShell usa elStandard
comportamiento.
El comportamiento de Windows
y Standard
el modo son los mismos, excepto en Windows
modo , PowerShell usa el Legacy
comportamiento del argumento pasando al ejecutar los archivos siguientes.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- Archivos que terminan con:
.bat
.cmd
.js
.vbs
.wsf
Si $PSNativeCommandArgumentPassing
se establece en Legacy
o Standard
, el analizador no comprueba estos archivos. Para obtener ejemplos del nuevo comportamiento, consulte about_Parsing.
PowerShell 7.3 también agregó la capacidad de realizar un seguimiento del enlace de parámetros para comandos nativos. Para más información, vea Trace-Command.
$PSNativeCommandUseErrorActionPreference
Cuando $PSNativeCommandUseErrorActionPreference
es $true
, los comandos nativos con códigos de salida distintos de cero emiten errores según $ErrorActionPreference
.
Algunos comandos nativos, como robocopy , usan códigos de salida distintos de cero para representar información que no sea errores. En estos casos, puede deshabilitar temporalmente el comportamiento y evitar que los códigos de salida distintos de cero emita errores.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
En este ejemplo, la $PSNativeCommandUseErrorActionPreference
variable se cambia dentro de un scriptblock. El cambio es local para el scriptblock. Cuando se cierra el scriptblock, la variable vuelve a su valor anterior.
$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, consulte 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 crear nuevas sesiones 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 http://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:
http://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-PSSession
cmdlets , Enter-PSSession
o 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 variable en el $PSSessionOption
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 valor del parámetro SessionOption en cmdlets que crean una sesión, como New-PSSession
, Enter-PSSession
y Invoke-Command
.
$PSStyle
A partir de PowerShell 7.2, ahora puede acceder a la $PSStyle
variable automática para ver y cambiar la representación de la salida de la cadena ANSI. $PSStyle
es una instancia de la clase PSStyle . Los miembros de esta clase definen cadenas que contienen secuencias de escape ANSI que controlan la representación del texto en el terminal.
Los miembros base devuelven cadenas de secuencias de escape de ANSI asignadas a sus nombres. Los valores se pueden configurar para permitir la personalización. Los nombres de propiedad facilitan la creación de cadenas decoradas mediante la finalización de tabulación. Por ejemplo:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Los miembros Background y Foreground también tienen un FromRgb()
método para especificar el color de 24 bits.
Para más información sobre $PSStyle
, consulte Acerca de los terminales ANSI.
$Transcript
Usado por Start-Transcript
para especificar el nombre y la ubicación del archivo de transcripción. Si no especifica un valor para el parámetro Path , Start-Transcript
usa la ruta de acceso en el valor de la $Transcript
variable global. Si no ha creado esta variable, Start-Transcript
almacena las transcripciones en la siguiente ubicación con el nombre predeterminado:
- En Windows:
$HOME\Documents
- En Linux o macOS:
$HOME
El nombre de archivo predeterminado es : PowerShell_transcript.<computername>.<random>.<timestamp>.txt
.
$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
.
La $VerbosePreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
Los valores válidos son los siguientes:
- Interrumpir : escriba el depurador al escribir en la secuencia detallada.
- 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.
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, consultE about_CommonParameters.
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 Detener 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 [?] 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, un cmdlet o un proveedor, como los mensajes generados por el cmdlet Write-Warning .
De forma predeterminada, los mensajes de advertencia se muestran y la ejecución continúa, pero puede cambiar este comportamiento cambiando el valor de $WarningPreference
.
La $WarningPreference
variable toma uno de los ActionPreference
valores de enumeración: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
Los valores válidos son los siguientes:
- Interrumpir : escriba el depurador cuando se escriba un mensaje de advertencia.
- Detener: muestra el mensaje de advertencia y un mensaje de error y, a continuación, deja de ejecutarse.
- Inquire: 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.
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, consultE about_CommonParameters.
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 de 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 [?] 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 . Se le solicita al usuario cuando se produce una advertencia.
$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 [?] Help (default is "Y"):
$WhatIfPreference
Determina si WhatIf está habilitado automáticamente para cada comando que lo admita. Cuando WhatIf está habilitado, 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 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. No se detiene el proceso de Winword .
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