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
oA
, 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-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 $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-PSSession
y 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