Поделиться через


Сведения о переменных предпочтения

Краткое описание

Переменные, которые настраивают поведение PowerShell.

Подробное описание

PowerShell включает набор переменных, которые позволяют настраивать его поведение. Эти переменные предпочтения работают аналогично параметрам в системах на основе графического пользовательского интерфейса.

Переменные предпочтения влияют на операционную среду PowerShell и все команды, выполняемые в ней. Во многих случаях командлеты имеют параметры, которые можно использовать для переопределения поведения предпочтения для конкретной команды.

В следующей таблице перечислены переменные предпочтения и их значения по умолчанию.

Переменная Значение по умолчанию
$ConfirmPreference Высокий
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView NormalView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent False (не зарегистрировано)
$LogCommandLifecycleEvent False (не зарегистрировано)
$LogEngineHealthEvent True (в журнале)
$LogEngineLifecycleEvent True (в журнале)
$LogProviderLifecycleEvent True (в журнале)
$LogProviderHealthEvent True (в журнале)
$MaximumAliasCount 4096
$MaximumDriveCount 4096
$MaximumErrorCount 256
$MaximumFunctionCount 4096
$MaximumHistoryCount 4096
$MaximumVariableCount 4096
$OFS (Пробел (" "))
$OutputEncoding Объект ASCIIEncoding
$ProgressPreference Продолжить
$PSDefaultParameterValues (None — пустая хэш-таблица)
$PSEmailServer (нет)
$PSModuleAutoLoadingPreference Все
$PSSessionApplicationName WSMAN
$PSSessionConfigurationName https://schemas.microsoft.com/PowerShell/microsoft.PowerShell
$PSSessionOption См . $PSSessionOption
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference 0

PowerShell включает следующие переменные среды, в которые хранятся пользовательские предпочтения. Дополнительные сведения об этих переменных среды см. в разделе about_Environment_Variables.

  • env:PSExecutionPolicyPreference
  • $env:PSModulePath

Работа с переменными предпочтения

В этом документе описывается каждая из переменных предпочтения.

Чтобы отобразить текущее значение определенной переменной предпочтения, введите имя переменной. Например, следующая команда отображает $ConfirmPreference значение переменной.

 $ConfirmPreference
High

Чтобы изменить значение переменной, используйте инструкцию присваивания. Например, следующая инструкция изменяет $ConfirmPreference значение параметра на Medium.

$ConfirmPreference = "Medium"

Заданные значения относятся к текущему сеансу PowerShell. Чтобы сделать переменные эффективными во всех сеансах PowerShell, добавьте их в профиль PowerShell. Дополнительные сведения см. в разделе about_Profiles.

Работа в удаленном режиме

При выполнении команд на удаленном компьютере удаленные команды зависят только от настроек, заданных в клиенте PowerShell удаленного компьютера. Например, при выполнении удаленной команды значение переменной удаленного компьютера $DebugPreference определяет, как PowerShell реагирует на сообщения отладки.

Дополнительные сведения об удаленных командах см. в разделе about_Remote.

$ConfirmPreference

Определяет, будет ли PowerShell автоматически запрашивать подтверждение перед выполнением командлета или функции.

Допустимые $ConfirmPreference значения переменной: High, Medium или Low. Командлетам и функциям назначается риск высокого, среднего или низкого уровня. Если значение переменной $ConfirmPreference меньше или равно риску, назначенному командлету или функции, PowerShell автоматически запрашивает подтверждение перед запуском командлета или функции.

Если значение переменной $ConfirmPreference равно None, PowerShell никогда не будет автоматически запрашивать командлет или функцию.

Чтобы изменить поведение подтверждения для всех командлетов и функций в сеансе, измените $ConfirmPreference значение переменной.

Чтобы переопределить $ConfirmPreference для одной команды, используйте параметр Confirm командлета или функции. Чтобы запросить подтверждение, используйте .-Confirm Чтобы отключить подтверждение, используйте .-Confirm:$false

Допустимые значения $ConfirmPreference:

  • Нет. PowerShell не запрашивает запрос автоматически. Чтобы запросить подтверждение определенной команды, используйте параметр Confirm командлета или функции.
  • Низкий. PowerShell запрашивает подтверждение перед выполнением командлетов или функций с низким, средним или высоким риском.
  • Средний. PowerShell запрашивает подтверждение перед выполнением командлетов или функций со средним или высоким риском.
  • Высокий. PowerShell запрашивает подтверждение перед выполнением командлетов или функций с высоким риском.

Подробное описание

PowerShell может автоматически запрашивать подтверждение перед выполнением действия. Например, если командлет или функция значительно влияет на систему при удалении данных или использовании значительного объема системных ресурсов.

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"):

Оценка риска является атрибутом командлета или функции, известной как ConfirmImpact. Пользователи не могут изменить этот параметр.

Командлеты и функции, которые могут представлять риск для системы, имеют параметр Confirm , который можно использовать для запроса или подавления подтверждения для одной команды.

Так как большинство командлетов и функций используют значение риска по умолчанию ConfirmImpactсреднего значения, а значение $ConfirmPreference по умолчанию — High, автоматическое подтверждение происходит редко. Однако можно активировать автоматическое подтверждение, изменив значение на Средний$ConfirmPreference или Низкий.

Примеры

В этом примере показан эффект значения переменной $ConfirmPreference по умолчанию High. Значение "Высокий " подтверждает только командлеты и функции с высоким риском. Так как большинство командлетов и функций имеют средний риск, они не подтверждаются автоматически и Remove-Item удаляют файл. Добавление -Confirm в команду запрашивает подтверждение у пользователя.

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

Используйте -Confirm для запроса подтверждения.

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"):

В следующем примере показан эффект изменения значения на Средний$ConfirmPreference. Так как большинство командлетов и функций имеют средний риск, они автоматически подтверждаются. Чтобы отключить запрос подтверждения для одной команды, используйте параметр Confirm со значением $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

Определяет, как PowerShell реагирует на сообщения отладки, созданные скриптом, командлетом или поставщиком или командой в командной Write-Debug строке.

Некоторые командлеты отображают сообщения отладки, которые обычно представляют собой технические сообщения, предназначенные для программистов и специалистов технической поддержки. По умолчанию сообщения отладки не отображаются, но сообщения отладки можно отобразить, изменив $DebugPreferenceзначение .

Для отображения или скрытия сообщений отладки для определенной команды можно использовать общий параметр Debug командлета. См. сведения в разделе about_CommonParameters.

Допустимы следующие значения.

  • Stop: отображает сообщение отладки и прекращает выполнение. Записывает ошибку в консоль.
  • Запрос: отображает сообщение отладки и запрашивает, хотите ли вы продолжить. Добавление общего параметра Debug в команду, когда команда настроена для создания сообщения отладки, изменяет значение переменной $DebugPreference на Inquire.
  • Продолжить: отображает сообщение отладки и продолжает выполнение.
  • SilentlyContinue: (по умолчанию) Без эффекта. Сообщение об отладке не отображается, и выполнение продолжается без прерывания.

Примеры

В следующих примерах показан результат изменения значений $DebugPreference при вводе Write-Debug команды в командной строке. Изменение затрагивает все сообщения отладки, включая сообщения, созданные командлетами и скриптами. В примерах показан параметр Debug , который отображает или скрывает сообщения отладки, связанные с одной командой.

В этом примере показано влияние значения переменной $DebugPreference по умолчанию SilentlyContinue. По умолчанию сообщение об отладке Write-Debug командлета не отображается, и обработка продолжается. Если используется параметр Debug , он переопределяет предпочтение для одной команды. Пользователю будет предложено подтвердить.

$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"):

В этом примере показан результат $DebugPreference со значением Continue . Отобразится сообщение отладки, и команда продолжит обработку.

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

В этом примере используется параметр Debug со значением $false , чтобы отключить сообщение для одной команды. Сообщение об отладке не отображается.

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

В этом примере показано, как $DebugPreference задается значение Stop . Отобразится сообщение отладки, а команда остановлена.

$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"

В этом примере используется параметр Debug со значением $false , чтобы отключить сообщение для одной команды. Сообщение отладки не отображается, а обработка не останавливается.

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

В этом примере показан результат $DebugPreference установки значения Inquire . Отобразится сообщение отладки, и пользователю будет предложено подтвердить.

$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"):

В этом примере используется параметр Debug со значением $false , чтобы отключить сообщение для одной команды. Сообщение об отладке не отображается, и обработка продолжается.

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

$ErrorActionPreference

Определяет, как PowerShell реагирует на неустранимую ошибку, которая не останавливает обработку командлета. Например, в командной строке или в скрипте, командлете или поставщике, таких как ошибки, созданные командлетом Write-Error .

Вы можете использовать общий параметр ErrorAction командлета, чтобы переопределить предпочтения для конкретной команды.

Допустимы следующие значения.

  • Stop: отображает сообщение об ошибке и прекращает выполнение.
  • Запрос: отображает сообщение об ошибке с запросом на продолжение.
  • Продолжить: (по умолчанию) Отображает сообщение об ошибке и продолжает выполнение.
  • Приостановить. Автоматически приостанавливает задание рабочего процесса, чтобы обеспечить дальнейшее исследование. После изучения рабочий процесс можно возобновить.
  • SilentlyContinue: без эффекта. Сообщение об ошибке не отображается, и выполнение продолжается без прерывания.
  • Игнорировать: подавляет сообщение об ошибке и продолжает выполнять команду. Значение Ignore предназначено для каждой команды, а не для использования в качестве сохраненных предпочтений. Значение Ignore не является допустимым значением для переменной $ErrorActionPreference .

Параметр $ErrorActionPreference и ErrorAction не влияет на реакцию PowerShell на неустранимые ошибки, которые останавливают обработку командлетов. Дополнительные сведения об общем параметре ErrorAction см. в разделе about_CommonParameters.

Примеры

В этих примерах показано влияние различных значений переменной $ErrorActionPreference . Параметр ErrorAction используется для переопределения $ErrorActionPreference значения.

В этом примере показано $ErrorActionPreference значение по умолчанию Continue. Возникает неустранимая ошибка. Отобразится сообщение, обработка продолжается.

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.

В этом примере показано $ErrorActionPreference значение SilentlyContinue. Сообщение об ошибке подавляется.

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

В этом примере показано влияние реальной ошибки. В этом случае команда получает несуществующий файл . 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

Определяет формат отображения сообщений об ошибках в PowerShell.

Допустимы следующие значения.

  • NormalView: (по умолчанию) Подробное представление, предназначенное для большинства пользователей. Содержит описание ошибки и имя объекта, участвующего в ошибке.

  • CategoryView: краткое структурированное представление, предназначенное для рабочих сред. Используется следующий формат:

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

Дополнительные сведения о полях в CategoryView см. в разделе Класс ErrorCategoryInfo .

Примеры

В этом примере показано, как отображается ошибка, если значением $ErrorView по умолчанию является NormalView. Get-ChildItem используется для поиска несуществующего файла.

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

В этом примере показано, как появляется та же ошибка при изменении значения $ErrorView на CategoryView.

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

В этом примере показано, что значение $ErrorView влияет только на отображение ошибки. Он не изменяет структуру объекта ошибки, хранящегося в автоматической переменной $Error . Сведения об автоматической переменной $Error см. в разделе about_automatic_variables.

Следующая команда принимает объект ErrorRecord , связанный с последней ошибкой в массиве ошибок, элемент 0, и форматирует все свойства объекта ошибки в списке.

$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

Определяет, сколько элементов перечисления включено в дисплей. Эта переменная не влияет на базовые объекты, а только на отображение. Если значение $FormatEnumerationLimit меньше числа перечисляемых элементов, PowerShell добавляет многоточие (...), чтобы указать, что элементы не отображаются.

Допустимые значения: integers (Int32)

Значение по умолчанию: 4

Примеры

В этом примере показано, как использовать $FormatEnumerationLimit переменную для улучшения отображения перечисляемых элементов.

Команда в этом примере создает таблицу со списком всех служб, работающих на компьютере, в двух группах: одна для запущенных служб и одна для остановленных служб. Он использует Get-Service команду для получения всех служб, а затем отправляет результаты через конвейер Group-Object в командлет, который группирует результаты по состоянию службы.

Результатом будет таблица с состоянием в столбце Имя и процессы в столбце Группа . Чтобы изменить метки столбцов, используйте хэш-таблицу, см. about_Hash_Tables. Дополнительные сведения см. в примерах в статье Format-Table.

Найдите текущее значение $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Вывод списка всех служб, сгруппированных по состоянию. В столбце Группа для каждого состояния указано не более четырех служб, так как $FormatEnumerationLimit имеет значение 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...}

Чтобы увеличить количество перечисленных элементов, увеличьте значение $FormatEnumerationLimit до 1000. Используйте Get-Service и Group-Object для отображения служб.

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

Используйте Format-Table параметр Wrap для отображения списка служб.

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

Переменная $InformationPreference позволяет задать параметры потока информации, которые должны отображаться для пользователей. В частности, информационные сообщения, добавленные в команды или скрипты путем добавления командлета Write-Information . Если используется параметр InformationAction , его значение переопределяет значение переменной $InformationPreference . Write-Information был представлен в PowerShell 5.0.

Допустимы следующие значения.

  • Stop: останавливает команду или скрипт при вхождения Write-Information команды.
  • Запрос: отображает информационное сообщение, указанное в команде Write-Information , а затем запрашивает, хотите ли вы продолжить.
  • Продолжить: отображает информационное сообщение и продолжает выполняться.
  • Приостановить. Автоматически приостанавливает задание рабочего процесса после Write-Information выполнения команды, чтобы пользователи могли видеть сообщения перед продолжением. Рабочий процесс можно возобновить по усмотрению пользователя.
  • SilentlyContinue: (по умолчанию) Без эффекта. Информационные сообщения не отображаются, и скрипт продолжает работу без прерываний.

Событие $Log*

Переменные предпочтения событий Log*определяют, какие типы событий записываются в журнал событий PowerShell в Просмотр событий. По умолчанию регистрируются только события подсистемы и поставщика. Но для настройки журнала можно использовать переменные параметров log*Event , например события ведения журнала о командах.

Ниже приведены переменные параметра Log*Event .

  • $LogCommandHealthEvent: регистрирует ошибки и исключения при инициализации и обработке команд. Значение по умолчанию — $false (не зарегистрировано).
  • $LogCommandLifecycleEvent: регистрирует запуск и остановку команд, командных конвейеров и исключений безопасности при обнаружении команд. Значение по умолчанию — $false (не зарегистрировано).
  • $LogEngineHealthEvent: регистрирует ошибки и сбои сеансов. Значение по умолчанию — $true (в журнале).
  • $LogEngineLifecycleEvent: регистрирует открытие и закрытие сеансов. Значение по умолчанию — $true (в журнале).
  • $LogProviderHealthEvent: регистрирует ошибки поставщика, такие как ошибки чтения и записи, ошибки поиска и ошибки вызова. Значение по умолчанию — $true (в журнале).
  • $LogProviderLifecycleEvent: регистрирует добавление и удаление поставщиков PowerShell. Значение по умолчанию — $true (в журнале). Сведения о поставщиках PowerShell см. в разделе about_Providers.

Чтобы включить событие Журнала*, введите переменную со значением $true, например:

$LogCommandLifeCycleEvent = $true

Чтобы отключить тип события, введите переменную со значением $false, например:

$LogCommandLifeCycleEvent = $false

События, которые вы включаете, действуют только для текущей консоли PowerShell. Чтобы применить конфигурацию ко всем консолям, сохраните параметры переменных в профиле PowerShell. Дополнительные сведения см. в разделе about_Profiles.

$MaximumAliasCount

Определяет, сколько псевдонимов разрешено в сеансе PowerShell. Значение по умолчанию — 4096 , и этого должно быть достаточно для большинства вариантов использования. Вы можете адаптироваться $MaximumAliasCount в соответствии со своими потребностями.

Допустимые значения: 1024–32768 (Int32)

По умолчанию: 4096

Чтобы подсчитать псевдонимы в системе, введите:

(Get-Alias).count

$MaximumDriveCount

Определяет, сколько дисков PowerShell разрешено в заданном сеансе. Например, диски файловой системы и хранилища данных, предоставляемые поставщиками PowerShell и отображаемые в виде дисков, таких как Alias: диски и HKLM: .

Допустимые значения: 1024–32768 (Int32)

По умолчанию: 4096

Чтобы подсчитать псевдонимы в системе, введите:

(Get-PSDrive).count

$MaximumErrorCount

Определяет, сколько ошибок сохранено в журнале ошибок для сеанса.

Допустимые значения: 256–32768 (Int32)

По умолчанию: 256

Объекты, представляющие каждую сохраненную ошибку, хранятся в автоматической переменной $Error . $Error содержит массив объектов записей ошибок. Самая последняя ошибка — это первый объект в массиве , $Error[0].

Чтобы подсчитать ошибки в системе, используйте $Error свойство Count массива.

$Error.count

Чтобы отобразить определенную ошибку, используйте [0] нотацию массива, чтобы увидеть самую последнюю ошибку.

$Error[0]

Чтобы отобразить старую сохраненную ошибку, введите:

$Error[($Error.Count -1]

Параметр Force переопределяет специальное форматирование объектов ErrorRecord и возвращается к обычному формату. Чтобы отобразить свойства объекта ErrorRecord , введите следующую команду:

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

В этом примере $Error.Count отображается количество ошибок. Чтобы удалить все ошибки из журнала ошибок, используйте Clear метод массива ошибок.

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

Чтобы найти все свойства и методы массива ошибок, используйте Get-Member командлет с параметром InputObject . При использовании параметра Get-MemberInputObject отображает свойства и методы коллекции.

Get-Member -InputObject $Error

При конвейере коллекции объектов Get-Memberв отображает Get-Member свойства и методы объектов в коллекции.

$Error | Get-Member

$MaximumFunctionCount

Определяет, сколько функций разрешено в данном сеансе.

Допустимые значения: 1024–32768 (Int32)

По умолчанию: 4096

Чтобы просмотреть функции в сеансе, используйте диск PowerShell Function: , предоставляемый поставщиком PowerShell Function . Дополнительные сведения о поставщике Functionabout_Function_Provider.

Чтобы получить список функций в текущем сеансе, введите:

Get-ChildItem Function:

Чтобы подсчитать функции в текущем сеансе, введите:

(Get-ChildItem Function:).Count

$MaximumHistoryCount

Определяет, сколько команд сохранено в журнале команд для текущего сеанса.

Допустимые значения: от 1 до 32768 (Int32)

По умолчанию: 4096

Чтобы определить количество команд, сохраненных в журнале команд, введите:

(Get-History).Count

Чтобы просмотреть команды, сохраненные в журнале сеансов Get-History , используйте командлет . Дополнительные сведения см. в разделе about_History.

$MaximumVariableCount

Определяет, сколько переменных разрешено в данном сеансе, включая автоматические переменные, переменные предпочтения и переменные, создаваемые в командах и скриптах.

Допустимые значения: 1024–32768 (Int32)

По умолчанию: 4096

Чтобы просмотреть переменные в сеансе Get-Variable , используйте командлет и функции диска PowerShell Variable: и поставщика PowerShell Variable . Дополнительные сведения см. в разделе about_Variable_Provider.

Чтобы найти текущее количество переменных в системе, введите:

(Get-Variable).Count

$OFS

Разделитель полей вывода (OFS) задает символ, который разделяет элементы массива, преобразованного в строку.

Допустимые значения: любая строка.

По умолчанию: пробел

По умолчанию переменная не существует, $OFS а разделителем выходного файла является пробел, но вы можете добавить эту переменную и задать для нее любую строку. Вы можете изменить значение в сеансе $OFS , введя $OFS="<value>".

Примечание

Если вы ожидаете значение по умолчанию для пробела (" ") в выходных данных скрипта, модуля или конфигурации, будьте осторожны, чтобы $OFS значение по умолчанию не было изменено в другом месте кода.

Примеры

В этом примере показано, что пробел используется для разделения значений при преобразовании массива в строку. В этом случае массив целых чисел хранится в переменной, а затем переменная приводится как строка.

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

Чтобы изменить разделитель, добавьте $OFS переменную, назначив ей значение. Переменная должна иметь имя $OFS.

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

Чтобы восстановить поведение по умолчанию, можно назначить пробел (" ") значению $OFS или удалить переменную. Следующие команды удаляют переменную, а затем проверяют, является ли разделитель пробелом.

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

$OutputEncoding

Определяет метод кодирования символов, который PowerShell использует при отправке текста в другие приложения.

Например, если приложение возвращает строки Юникода в PowerShell, для правильной отправки символов может потребоваться изменить значение на ЮникодEncoding .

Допустимые значения: объекты, производные от класса Encoding, такие как ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding и UnicodeEncoding.

По умолчанию: объект ASCIIEncoding (System.Text.ASCIIEncoding)

Примеры

В этом примере показано, как обеспечить работу команды Windowsfindstr.exe в PowerShell на компьютере, локализованном для языка, в котором используются символы Юникода, например китайский.

Первая команда находит значение $OutputEncoding. Так как значение является объектом кодирования, отображается только его свойство EncodingName .

$OutputEncoding.EncodingName

В этом примере команда findstr.exe используется для поиска двух китайских символов, присутствующих в Test.txt файле . При выполнении этой командыfindstr.exe в командной строке Windows (cmd.exe) findstr.exe находит символы в текстовом файле. Однако при выполнении той же команды findstr.exe в PowerShell символы не найдены, так как PowerShell отправляет их вfindstr.exe в тексте ASCII, а не в тексте Юникода.

findstr <Unicode-characters>

Чтобы команда работала в PowerShell, задайте значение $OutputEncoding свойства OutputEncoding консоли на основе языкового стандарта, выбранного для Windows. Так как OutputEncoding является статическим свойством консоли, используйте двойные двоеточия (::) в команде .

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

После изменения кодировки команда findstr.exe находит символы Юникода.

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

$ProgressPreference

Определяет, как PowerShell реагирует на обновления хода выполнения, созданные скриптом, командлетом или поставщиком, например индикаторы выполнения, созданные командлетом Write-Progress . Командлет Write-Progress создает индикаторы выполнения, показывающие состояние команды.

Допустимы следующие значения.

  • Stop: индикатор выполнения не отображается. Вместо этого отображается сообщение об ошибке и выполнение прекращается.
  • Запрос. Индикатор выполнения не отображается. Запрашивает разрешение на продолжение. При ответе с Y помощью или Aотображается индикатор выполнения.
  • Продолжить: (по умолчанию) Отображает индикатор выполнения и продолжает выполнение.
  • SilentlyContinue: выполняет команду, но не отображает индикатор выполнения.

$PSEmailServer

Указывает почтовый сервер по умолчанию, используемый для отправки сообщений электронной почты. Эта переменная предпочтения используется командлетами, отправляющими электронную почту, например командлетом Send-MailMessage .

$PSDefaultParameterValues

Задает значения по умолчанию для параметров командлетов и расширенных функций. Значение $PSDefaultParameterValues — это хэш-таблица, в которой ключ состоит из имени командлета и имени параметра, разделенных двоеточием (:). Значение является пользовательским значением по умолчанию, которое вы указываете.

$PSDefaultParameterValues появилась в PowerShell 3.0.

Дополнительные сведения об этой переменной предпочтения см. в разделе about_Parameters_Default_Values.

$PSModuleAutoloadingPreference

Включает и отключает автоматический импорт модулей в сеансе. По умолчанию используется значение All. Независимо от значения переменной для импорта модуля можно использовать Import-Module .

Допустимые значения:

  • Все. Модули импортируются автоматически при первом использовании. Чтобы импортировать модуль, получите или используйте любую команду в модуле. Например, воспользуйтесь Get-Command.
  • ModuleQualified. Модули импортируются автоматически, только если пользователь использует имя команды в модуле с указанием модуля. Например, если пользователь вводит , MyModule\MyCommandPowerShell импортирует модуль MyModule .
  • Нет. Автоматический импорт модулей отключен в сеансе. Чтобы импортировать модуль, используйте Import-Module командлет .

Дополнительные сведения об автоматическом импорте модулей см. в разделе about_Modules.

$PSSessionApplicationName

Указывает имя приложения по умолчанию для удаленной команды, которая использует технологию веб-служб для управления (WS-Management). Дополнительные сведения см. в статье Об удаленном управлении Windows.

Системное имя приложения по умолчанию — WSMAN, но эту переменную предпочтения можно использовать для изменения значения по умолчанию.

Имя приложения является последним узлом в URI подключения. Например, имя приложения в следующем примере URI — WSMAN.

http://Server01:8080/WSMAN

Имя приложения по умолчанию используется, если удаленная команда не указывает универсальный код ресурса (URI) подключения или имя приложения.

Служба WinRM использует имя приложения для выбора прослушивателя для обслуживания запроса на подключение. Значение параметра должно совпадать со значением свойства URLPrefix прослушивателя на удаленном компьютере.

Чтобы переопределить системное значение по умолчанию и значение этой переменной, а также выбрать другое имя приложения для определенного сеанса, используйте параметры ConnectionURI или ApplicationNameкомандлетов New-PSSession, Enter-PSSession или Invoke-Command .

Переменная $PSSessionApplicationName предпочтения задается на локальном компьютере, но указывает прослушиватель на удаленном компьютере. Если указанное имя приложения не существует на удаленном компьютере, команда для установки сеанса завершается ошибкой.

$PSSessionConfigurationName

Задает конфигурацию сеанса по умолчанию, используемую для сеансов PSSessions, созданных в текущем сеансе.

Эта переменная предпочтения задается на локальном компьютере, но указывает конфигурацию сеанса, расположенную на удаленном компьютере.

Значение переменной $PSSessionConfigurationName является полным универсальным кодом ресурса (URI).

Значение https://schemas.microsoft.com/PowerShell/microsoft.PowerShell по умолчанию указывает конфигурацию сеанса Microsoft.PowerShell на удаленном компьютере.

Если указать только имя конфигурации, перед именем добавляется следующий URI схемы:

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

Можно переопределить значение по умолчанию и выбрать другую конфигурацию сеанса для определенного New-PSSessionсеанса с помощью параметра ConfigurationName командлетов , Enter-PSSessionили Invoke-Command .

Значение этой переменной можно изменить в любое время. Помните, что выбранная конфигурация сеанса должна существовать на удаленном компьютере. Если это не так, команда для создания сеанса, использующего конфигурацию сеанса, завершается сбоем.

Эта переменная предпочтения не определяет, какие конфигурации локального сеанса используются, когда удаленные пользователи создают сеанс, который подключается к этому компьютеру. Однако вы можете использовать разрешения для конфигураций локального сеанса, чтобы определить, какие пользователи могут их использовать.

$PSSessionOption

Устанавливает значения по умолчанию для расширенных параметров пользователя в удаленном сеансе. Эти параметры переопределяют системные значения по умолчанию для параметров сеанса.

Переменная $PSSessionOption содержит объект PSSessionOption . Дополнительные сведения см. в разделе System.Management.Automation.Remoting.PSSessionOption. Каждое свойство объекта представляет параметр сеанса. Например, свойство NoCompression преобразует сжатие данных во время сеанса.

По умолчанию $PSSessionOption переменная содержит объект PSSessionOption со значениями по умолчанию для всех параметров, как показано ниже.

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

Описание этих параметров и дополнительные сведения см. в разделе New-PSSessionOption. Дополнительные сведения об удаленных командах и сеансах см. в разделе about_Remote и about_PSSessions.

Чтобы изменить значение переменной $PSSessionOption предпочтения, используйте New-PSSessionOption командлет для создания объекта PSSessionOption со значениями параметров. Сохраните выходные данные в переменной с именем $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

Чтобы использовать $PSSessionOption переменную предпочтения в каждом сеансе PowerShell, добавьте New-PSSessionOption команду, которая создает переменную в $PSSessionOption профиль PowerShell. Дополнительные сведения см. в разделе about_Profiles.

Можно задать настраиваемые параметры для определенного удаленного сеанса. Заданные параметры имеют приоритет над системными значениями по умолчанию и значением переменной $PSSessionOption предпочтения.

Чтобы задать настраиваемые параметры сеанса New-PSSessionOption , используйте командлет для создания объекта PSSessionOption . Затем используйте объект PSSessionOption в качестве значения параметра SessionOption в командлетах, создающих сеанс, таких как New-PSSession, Enter-PSSessionи Invoke-Command.

$VerbosePreference

Определяет, как PowerShell реагирует на подробные сообщения, созданные скриптом, командлетом или поставщиком, например сообщения, созданные командлетом Write-Verbose . Подробные сообщения описывают действия, выполняемые для выполнения команды.

По умолчанию подробные сообщения не отображаются, но вы можете изменить это поведение, изменив $VerbosePreferenceзначение .

Для отображения или скрытия подробных сообщений для конкретной команды можно использовать общий параметр Verbose . См. сведения в разделе about_CommonParameters.

Допустимы следующие значения.

  • Stop: отображает подробное сообщение и сообщение об ошибке, а затем прекращает выполнение.
  • Запрос: отображает подробное сообщение, а затем отображает запрос с запросом на продолжение.
  • Продолжить: отображает подробное сообщение, а затем продолжает выполнение.
  • SilentlyContinue( По умолчанию) Не отображает подробное сообщение. Выполнение продолжается.

Примеры

В этих примерах показано, как различные значения $VerbosePreference и параметр Verbose переопределяют значение предпочтения.

В этом примере показано влияние значения SilentlyContinue , которое является значением по умолчанию. Команда использует параметр Message , но не записывает сообщение в консоль PowerShell.

Write-Verbose -Message "Verbose message test."

При использовании параметра Verbose записывается сообщение.

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

В этом примере показано влияние значения Continue . Для $VerbosePreference переменной задано значение Продолжить , и отобразится сообщение.

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

В этом примере используется параметр Verbose со значением $false , которое переопределяет значение Continue . Сообщение не отображается.

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

В этом примере показано влияние значения Stop . Для $VerbosePreference переменной задано значение Stop , и отобразится сообщение. Команда остановлена.

$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."

В этом примере используется параметр Verbose со значением $false , которое переопределяет значение Stop . Сообщение не отображается.

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

В этом примере показано влияние значения Inquire . Для $VerbosePreference переменной задано значение Inquire. Отобразится сообщение, и пользователю будет предложено подтвердить.

$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"):

В этом примере используется параметр Verbose со значением $false , которое переопределяет значение Inquire . Пользователю не будет предложено, и сообщение не отображается.

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

$WarningPreference

Определяет, как PowerShell реагирует на предупреждающие сообщения, созданные скриптом, командлетом или поставщиком, например сообщения, созданные командлетом Write-Warning .

По умолчанию отображаются предупреждающие сообщения и выполнение продолжается, но это поведение можно изменить, изменив $WarningPreferenceзначение .

Вы можете использовать общий параметр WarningAction командлета, чтобы определить, как PowerShell реагирует на предупреждения от определенной команды. См. сведения в разделе about_CommonParameters.

Допустимы следующие значения.

  • Stop: отображает предупреждающее сообщение и сообщение об ошибке, а затем прекращает выполнение.
  • Запрос: отображает предупреждающее сообщение, а затем запрашивает разрешение на продолжение.
  • Продолжить: (по умолчанию) Отображает предупреждающее сообщение, а затем продолжает выполнение.
  • SilentlyContinue: не отображает предупреждающее сообщение. Выполнение продолжается.

Примеры

В этих примерах показано влияние различных значений .$WarningPreference Параметр WarningAction переопределяет значение предпочтения.

В этом примере показано влияние значения по умолчанию Continue.

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

В этом примере используется параметр WarningAction со значением SilentlyContinue для подавления предупреждения. Сообщение не отображается.

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

В этом примере переменная изменяется $WarningPreference на значение SilentlyContinue . Сообщение не отображается.

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

В этом примере параметр WarningAction используется для остановки при создании предупреждения.

$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

В этом примере переменная изменяется $WarningPreference на значение Inquire . Пользователю будет предложено подтвердить.

$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"):

В этом примере используется параметр WarningAction со значением SilentlyContinue. Команда продолжает выполняться, и сообщение не отображается.

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

В этом примере значение изменяется на $WarningPreferenceStop.

$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

В этом примере используется WarningAction со значением Inquire . Пользователю будет предложено при появлении предупреждения.

$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

Определяет, включена ли функция WhatIf автоматически для каждой команды, которая ее поддерживает. Если функция WhatIf включена, командлет сообщает об ожидаемом результате выполнения команды, но не выполняет команду.

Допустимы следующие значения.

  • False (0, не включено): (по умолчанию) Значение WhatIf не включено автоматически. Чтобы включить его вручную, используйте параметр WhatIf командлета.
  • True (1, включено): Функция WhatIf автоматически включается для любой команды, которая его поддерживает. Пользователи могут использовать параметр WhatIf со значением False , чтобы отключить его вручную, например -WhatIf:$false.

Примеры

В этих примерах показано влияние различных значений .$WhatIfPreference В них показано, как использовать параметр WhatIf для переопределения предпочтительного значения для определенной команды.

В этом примере показано, как $WhatIfPreference переменная имеет значение по умолчанию False. Используйте Get-ChildItem , чтобы убедиться, что файл существует. Remove-Item удаляет файл . После удаления файла вы можете проверить удаление с помощью 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

В этом примере показан результат использования параметра WhatIf , если значение равно $WhatIfPreferenceFalse.

Убедитесь, что файл существует.

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

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

Используйте параметр WhatIf , чтобы определить результат попытки удаления файла.

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

Убедитесь, что файл не был удален.

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

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

В этом примере показано, $WhatIfPreference как переменная имеет значение True. При использовании для Remove-Item удаления файла отображается путь к файлу, но файл не удаляется.

Попытка удаления файла. Отобразится сообщение о том, что произойдет, если Remove-Item был выполнен, но файл не удаляется.

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

Используйте Get-ChildItem , чтобы убедиться, что файл не был удален.

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

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

В этом примере показано, как удалить файл, если значение равно $WhatIfPreferenceTrue. Он использует параметр WhatIf со значением $false. Используйте Get-ChildItem для проверки удаления файла.

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

Ниже приведены примеры командлета Get-Process , который не поддерживает WhatIf и Stop-ProcessWhatIf. Значение $WhatIfPreference переменной равно True.

Get-Process не поддерживает WhatIf. При выполнении команды отображается процесс 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 поддерживает WhatIf. Процесс Winword не остановлен.

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

Поведение WhatIf можно переопределить Stop-Process с помощью параметра WhatIf со значением $false. Процесс Winword остановлен.

Stop-Process -Name Winword -WhatIf:$false

Чтобы убедиться, что процесс Winword остановлен, используйте .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

См. также раздел

about_Automatic_Variables

about_CommonParameters

about_Environment_Variables

about_Profiles

about_Remote

about_Scopes

about_Variables