about_Preference_Variables
Краткое описание
Переменные, которые настраивают поведение PowerShell.
Подробное описание
PowerShell включает набор переменных, позволяющих настраивать его поведение. Эти переменные предпочтения работают аналогично параметрам в системах на основе графического пользовательского интерфейса.
Переменные предпочтения влияют на операционную среду PowerShell и все команды, выполняемые в ней. Некоторые командлеты имеют параметры, которые позволяют переопределить поведение предпочтения для конкретной команды.
В следующей таблице перечислены переменные предпочтения и их значения по умолчанию.
PowerShell включает следующие переменные среды, в которые хранятся пользовательские настройки. Дополнительные сведения об этих переменных среды см. в разделе about_Environment_Variables.
env:PSExecutionPolicyPreference
$env:PSModulePath
Примечание
Изменения в переменной предпочтения вступают в силу только в скриптах и функциях, если эти скрипты или функции определены в той же область, что и область, в которой использовался параметр. Дополнительные сведения см. в разделе about_Scopes.
Работа с переменными предпочтения
В этом документе описаны все переменные предпочтения.
Чтобы отобразить текущее значение определенной переменной предпочтения, введите имя переменной. Например, следующая команда отображает $ConfirmPreference
значение переменной.
$ConfirmPreference
High
Чтобы изменить значение переменной, используйте оператор присваивания. Например, следующая инструкция изменяет $ConfirmPreference
значение параметра на Medium.
$ConfirmPreference = "Medium"
Заданные значения относятся к текущему сеансу PowerShell. Чтобы сделать переменные эффективными во всех сеансах PowerShell, добавьте их в профиль PowerShell. Дополнительные сведения см. в разделе about_Profiles.
Работа в удаленном режиме
При выполнении команд на удаленном компьютере к удаленным командам применяются только настройки, заданные в клиенте PowerShell удаленного компьютера. Например, при выполнении удаленной команды значение переменной удаленного компьютера $DebugPreference
определяет, как PowerShell реагирует на сообщения отладки.
Дополнительные сведения об удаленных командах см. в разделе about_Remote.
$ConfirmPreference
Определяет, будет ли PowerShell автоматически запрашивать подтверждение перед выполнением командлета или функции.
Переменная $ConfirmPreference
принимает одно из значений ConfirmImpact
перечисления: High, Medium, Low или None.
Командлетам и функциям назначается риск высокой, средней или низкой.
Если значение переменной $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 [?] Help (default is "Y"):
Оценка риска является атрибутом командлета или функции, известной как ConfirmImpact. Пользователи не могут изменить этот параметр.
Командлеты и функции, которые могут представлять угрозу для системы, имеют параметр Confirm , который можно использовать для запроса или подавления подтверждения для одной команды.
Так как в большинстве командлетов и функций используется значение риска по умолчанию ConfirmImpactдля среднего, а значение $ConfirmPreference
по умолчанию — High, автоматическое подтверждение происходит редко. Однако можно активировать автоматическое подтверждение, изменив значение на Средний$ConfirmPreference
или Низкий.
Примеры
В этом примере показано влияние значения переменной $ConfirmPreference
по умолчанию High. Значение 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
[?] Help (default is "Y"):
В следующем примере показан результат изменения значения $ConfirmPreference
на Medium. Поскольку большинство командлетов и функций имеют средний риск, они автоматически подтверждаются. Чтобы отключить запрос подтверждения для одной команды, используйте параметр 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
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false
$DebugPreference
Определяет, как PowerShell реагирует на сообщения отладки, созданные скриптом, командлетом или поставщиком или командой в командной Write-Debug
строке.
Переменная $DebugPreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Некоторые командлеты отображают сообщения отладки, которые обычно представляют собой технические сообщения, предназначенные для программистов и специалистов технической поддержки. По умолчанию сообщения отладки не отображаются, но вы можете отобразить сообщения отладки, изменив значение $DebugPreference
.
Вы можете использовать общий параметр Debug командлета для отображения или скрытия сообщений отладки для определенной команды. См. сведения в разделе about_CommonParameters.
Допустимы следующие значения.
- Break — введите отладчик при возникновении ошибки или при возникновении исключения.
- Stop: отображает сообщение отладки и прекращает выполнение. Записывает ошибку в консоль.
- Запрос: отображает сообщение отладки с запросом на продолжение.
- Продолжить: отображает сообщение отладки и продолжает выполнение.
- SilentlyContinue: (по умолчанию) Без эффекта. Сообщение об отладке не отображается, и выполнение продолжается без прерывания.
Добавление общего параметра Debug в команду, когда команда настроена для создания сообщения отладки, изменяет значение переменной $DebugPreference
на Continue.
Примеры
В следующих примерах показан результат изменения значений $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
В этом примере показан результат $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 [?] Help (default is "Y"):
В этом примере используется параметр Debug со значением $false
, чтобы отключить сообщение для одной команды. Сообщение об отладке не отображается, и обработка продолжается.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Определяет, как PowerShell реагирует на неустранимую ошибку, которая не останавливает обработку командлета. Например, в командной строке или в скрипте, командлете или поставщике, таких как ошибки, созданные командлетом Write-Error
.
Переменная $ErrorActionPreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Вы можете использовать общий параметр ErrorAction командлета, чтобы переопределить предпочтения для конкретной команды.
Допустимы следующие значения.
- Break — введите отладчик при возникновении ошибки или при возникновении исключения.
- Продолжить: (по умолчанию) Отображает сообщение об ошибке и продолжает выполнение.
- Игнорировать: подавляет сообщение об ошибке и продолжает выполнять команду. Значение Ignore предназначено для каждой команды, а не для использования в качестве сохраненных предпочтений. Значение Ignore не является допустимым значением для переменной
$ErrorActionPreference
. - Запрос: отображает сообщение об ошибке с запросом на продолжение.
- SilentlyContinue: без эффекта. Сообщение об ошибке не отображается, и выполнение продолжается без прерывания.
- Stop: отображает сообщение об ошибке и прекращает выполнение. В дополнение к созданной ошибке значение Stop создает объект ActionPreferenceStopException для потока ошибок.
- Приостановить. Автоматически приостанавливает задание рабочего процесса, чтобы обеспечить дальнейшее исследование. После изучения рабочий процесс можно возобновить. Значение Suspend предназначено для каждой команды, а не для использования в качестве сохраненных предпочтений. Suspend не является допустимым значением для переменной
$ErrorActionPreference
.
$ErrorActionPreference
и параметр ErrorAction не влияют на реакцию PowerShell на неустранимые ошибки, которые останавливают обработку командлетов. Дополнительные сведения об общем параметре ErrorAction см. в разделе about_CommonParameters.
Многие собственные команды выполняют запись в stderr
в качестве альтернативного потока для сохранения дополнительных сведений. Такое поведение может запутать пользователя при просмотре ошибок или же дополнительная выходная информация может быть утрачена для пользователя, если для $ErrorActionPreference
настроено состояние, блокирующее вывод данных.
Начиная с PowerShell 7.2 записи об ошибках, перенаправленные из собственных команд, например при использовании операторов перенаправления (2>&1
), не записываются в $Error
переменную, и переменная $ErrorActionPreference
предпочтения не влияет на перенаправленные выходные данные.
В PowerShell 7.3 добавлена экспериментальная функция, которая позволяет управлять обработкой сообщений, записываемых stderr
в .
Дополнительные сведения см. в разделе $PSNativeCommandUseErrorActionPreference.
Примеры
В этих примерах показано влияние различных значений переменной $ErrorActionPreference
. Параметр ErrorAction используется для переопределения $ErrorActionPreference
значения.
В этом примере показано $ErrorActionPreference
значение по умолчанию Continue. Возникает неустранимая ошибка. Отобразится сообщение, обработка продолжается.
# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World
В этом примере показано $ErrorActionPreference
значение по умолчанию Inquire. Возникает ошибка и отображается запрос на действие.
# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
В этом примере показано $ErrorActionPreference
значение SilentlyContinue.
Сообщение об ошибке подавляется.
# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World
В этом примере показано, как $ErrorActionPreference
установить значение Stop. Он также показывает дополнительный объект, созданный для переменной $Error
.
# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
Определяет формат отображения сообщений об ошибках в PowerShell.
Переменная $ErrorView
принимает одно из значений ErrorView
перечисления: NormalView, CategoryView или ConciseView.
Допустимы следующие значения.
ConciseView( По умолчанию) Предоставляет краткое сообщение об ошибке и представление с рефакторингом для расширенных построителей модулей. Начиная с PowerShell 7.2, если ошибка происходит из командной строки или модуля скрипта, выходными данными является однострочное сообщение об ошибке. В противном случае вы получите многострочное сообщение об ошибке, содержащее ошибку, и указатель на ошибку, показывающий, где она возникает в этой строке. Если терминал поддерживает виртуальный терминал, то для выделения цветов используются цветовые коды ANSI. Цвет элементов можно изменить по адресу
$Host.PrivateData.ErrorAccentColor
. ИспользуйтеGet-Error
командлет для полного подробного представления полной ошибки, включая внутренние исключения.В PowerShell 7 добавлено представление ConciseView.
NormalView: подробное представление, предназначенное для большинства пользователей. Состоит из описания ошибки и имени объекта, участвующего в ошибке.
CategoryView: краткое структурированное представление, предназначенное для рабочих сред. Используется следующий формат:
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
Дополнительные сведения о полях в CategoryView см. в разделе Класс ErrorCategoryInfo .
Примеры
В этом примере показано, как отображается ошибка, если значение $ErrorView
по умолчанию — ConciseView. Get-ChildItem
используется для поиска несуществующего каталога.
Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Cannot find path 'C:\NoRealDirectory' because it does not exist.
В этом примере показано, как отображается ошибка, если значение $ErrorView
по умолчанию — ConciseView. Script.ps1
выполняется и выдает ошибку из Get-Item
инструкции .
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Cannot find path 'C:\demo\stuff' because it does not exist.
В этом примере показано, как возникает ошибка при изменении значения $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.
Переменная $InformationPreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Допустимы следующие значения.
- Break — введите отладчик при записи в поток сведений.
- Stop: останавливает команду или скрипт при вхождения
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.
$MaximumHistoryCount
Определяет, сколько команд сохранено в журнале команд для текущего сеанса.
Допустимые значения: от 1 до 32768 (Int32
)
По умолчанию: 4096
Чтобы определить количество команд, сохраненных в журнале команд, введите:
(Get-History).Count
Чтобы просмотреть команды, сохраненные в журнале сеансов Get-History
, используйте командлет . Дополнительные сведения см. в разделе about_History.
$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 при передаче данных в собственные приложения.
Примечание
В большинстве сценариев значение для $OutputEncoding
должно соответствовать значению [Console]::InputEncoding
.
Допустимые значения: объекты, производные от класса Encoding, такие как ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding и UnicodeEncoding.
По умолчанию: объект UTF8Encoding .
Примеры
Первая команда находит значение $OutputEncoding
. Так как значение является объектом кодирования, отображается только его свойство EncodingName .
$OutputEncoding.EncodingName
В остальных примерах используется следующий скрипт PowerShell, сохраненный как hexdump.ps1
, чтобы проиллюстрировать поведение $OutputEncoding
.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
В следующем примере показано, как строковое значение café
кодируется в байты при отправке в hexdump.ps1
созданный выше. В нем показано, что строковое значение кодируется с помощью схемы UTF8Encoding .
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
В следующем примере показано, как изменяются байты при изменении кодировки на ЮникодEncoding.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
Определяет, как PowerShell реагирует на обновления хода выполнения, созданные скриптом, командлетом или поставщиком, например индикаторы выполнения, созданные командлетом Write-Progress . Командлет Write-Progress
создает индикаторы выполнения, показывающие состояние команды.
Переменная $ProgressPreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Допустимы следующие значения.
- Break — введите отладчик при записи в поток Хода выполнения.
- Stop: индикатор выполнения не отображается. Вместо этого отображается сообщение об ошибке и выполнение прекращается.
- Запрос. Индикатор выполнения не отображается. Запрашивает разрешение на продолжение. При ответе с
Y
помощью илиA
отображается индикатор выполнения. - Продолжить: (по умолчанию) Отображает индикатор выполнения и продолжает выполнение.
- SilentlyContinue: выполняет команду, но не отображает индикатор выполнения.
$PSDefaultParameterValues
Задает значения по умолчанию для параметров командлетов и расширенных функций.
Значение $PSDefaultParameterValues
— это хэш-таблица, в которой ключ состоит из имени командлета и имени параметра, разделенных двоеточием (:
). Значение является пользовательским значением по умолчанию, которое вы указываете.
$PSDefaultParameterValues
появилась в PowerShell 3.0.
Дополнительные сведения об этой переменной предпочтения см. в разделе about_Parameters_Default_Values.
$PSEmailServer
Указывает почтовый сервер по умолчанию, используемый для отправки сообщений электронной почты. Эта переменная предпочтения используется командлетами, отправляющими электронную почту, например командлетом Send-MailMessage .
$PSModuleAutoloadingPreference
Включает и отключает автоматический импорт модулей в сеансе. Переменная $PSModuleAutoloadingPreference
не существует по умолчанию. Поведение по умолчанию, если переменная не определена, совпадает с поведением $PSModuleAutoloadingPreference = 'All'
.
Чтобы автоматически импортировать модуль, получите или используйте команду, содержащуюся в модуле.
Переменная $PSModuleAutoloadingPreference
принимает одно из значений PSModuleAutoLoadingPreference
перечисления:
All
: модули импортируются автоматически при первом использовании.ModuleQualified
: модули импортируются автоматически, только если пользователь использует полное имя модуля команды в модуле. Например, если пользователь вводитMyModule\MyCommand
, PowerShell импортирует модуль MyModule .None
: отключает автоматический импорт модулей. Чтобы импортировать модуль, используйтеImport-Module
командлет .
Дополнительные сведения об автоматическом импорте модулей см. в разделе about_Modules.
$PSNativeCommandArgumentPassing
PowerShell 7.3 изменил способ анализа командной строки для собственных команд.
Новая $PSNativeCommandArgumentPassing
переменная предпочтения управляет этим поведением.
Внимание!
Новое поведение является критическим изменением по сравнению с предыдущим поведением. Оно может нарушить выполнение скриптов и задач автоматизации, которые устраняют различные проблемы, возникающие при вызове собственных приложений.
Автоматическая переменная $PSNativeCommandArgumentPassing
позволяет выбрать поведение во время выполнения. Возможные значения: Legacy
, Standard
и Windows
. Legacy
является историческим поведением.
Переменная $PSNativeCommandArgumentPassing
определена по умолчанию, но значение зависит от платформы.
- В Windows для параметра задано значение
Windows
. - На платформах, отличных от Windows, для параметра задано значение
Standard
. - Если вы удалили
$PSNativeCommandArgumentPassing
переменную, PowerShell использует поведениеStandard
.
Windows
Поведение режима и Standard
одинаково, за исключением того, что в Windows
режиме PowerShell использует Legacy
поведение передачи аргументов при запуске следующих файлов.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- Файлы, заканчивающиеся на:
.bat
.cmd
.js
.vbs
.wsf
$PSNativeCommandArgumentPassing
Если задано значение Legacy
или Standard
, средство синтаксического анализа не проверка для этих файлов. Примеры нового поведения см. в разделе about_Parsing.
В PowerShell 7.3 также добавлена возможность трассировки привязки параметров для собственных команд. Дополнительные сведения см. в разделе Trace-Command.
$PSNativeCommandUseErrorActionPreference
Эта переменная предпочтения доступна в PowerShell 7.3 и более поздних версиях с включенной PSNativeCommandErrorActionPreference
функцией.
Если эта функция включена, собственные команды с ненулевыми кодами завершения создают ошибки на основе $ErrorActionPreference
, когда $PSNativeCommandUseErrorActionPreference
присвоено значение $true
.
Примечание
PSNativeCommandUseErrorActionPreference
— это экспериментальная функция, добавленная в PowerShell 7.3. Дополнительные сведения см. в разделе Использование экспериментальных функций.
Некоторые собственные команды, такие как robocopy , используют ненулевые коды выхода для представления информации, отличной от ошибок. В таких случаях можно временно отключить поведение и запретить ненулевым кодам выхода выдавать ошибки.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
В этом примере $PSNativeCommandUseErrorActionPreference
переменная изменяется внутри scriptblock. Изменение является локальным для scriptblock. Когда scriptblock завершает работу, переменная возвращается к предыдущему значению.
$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
Задает конфигурацию сеанса по умолчанию, которая используется для создания новых сеансов в текущем сеансе.
Эта переменная предпочтения задается на локальном компьютере, но указывает конфигурацию сеанса, расположенную на удаленном компьютере.
Значение переменной $PSSessionConfigurationName
— это полный URI ресурса.
Значение http://schemas.microsoft.com/PowerShell/microsoft.PowerShell
по умолчанию указывает конфигурацию сеанса Microsoft.PowerShell на удаленном компьютере.
Если указать только имя конфигурации, предопределен следующий универсальный код ресурса (URI) схемы:
http://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
.
$PSStyle
В PowerShell 7.2 теперь вы можете получить доступ к автоматической $PSStyle
переменной для просмотра и изменения отрисовки выходных данных строки ANSI. $PSStyle
— это экземпляр класса PSStyle . Члены этого класса определяют строки, содержащие escape-последовательности ANSI, которые управляют отрисовкой текста в терминале.
Базовые элементы возвращают строки escape-последовательностей ANSI, сопоставленные с их именами. Значения можно настраивать. Имена свойств упрощают создание декорированных строк с помощью завершения табуляции. Пример:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Элементы Background и Foreground также имеют FromRgb()
метод для указания 24-разрядного цвета.
Дополнительные сведения о $PSStyle
см. в разделе about_ANSI_Terminals.
$Transcript
Используется для Start-Transcript
указания имени и расположения файла расшифровки. Если значение параметра Path не указано, Start-Transcript
используется путь в значении глобальной переменной $Transcript
. Если вы еще не создали эту переменную, Start-Transcript
сохраните расшифровки в следующем расположении, используя имя по умолчанию:
- В Windows:
$HOME\Documents
- В Linux или macOS:
$HOME
Имя файла по умолчанию: PowerShell_transcript.<computername>.<random>.<timestamp>.txt
.
$VerbosePreference
Определяет, как PowerShell реагирует на подробные сообщения, созданные скриптом, командлетом или поставщиком, например сообщения, созданные командлетом Write-Verbose . Подробные сообщения описывают действия, выполняемые для выполнения команды.
По умолчанию подробные сообщения не отображаются, но это поведение можно изменить, изменив $VerbosePreference
значение .
Переменная $VerbosePreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Допустимы следующие значения.
- Break — введите отладчик при записи в подробный поток.
- Stop: отображает подробное сообщение и сообщение об ошибке, а затем прекращает выполнение.
- Запрос: отображает подробное сообщение, а затем отображает запрос с запросом на продолжение.
- Продолжить: отображает подробное сообщение, а затем продолжает выполнение.
- SilentlyContinue ( По умолчанию) Не отображает подробное сообщение. Продолжает выполнение.
Вы можете использовать общий параметр подробного командлета для отображения или скрытия подробных сообщений для конкретной команды. См. сведения в разделе about_CommonParameters.
Примеры
В этих примерах показано влияние различных значений $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 [?] Help (default is "Y"):
В этом примере используется параметр Verbose со значением $false
, которое переопределяет значение Inquire . Пользователю не будет предложено, и сообщение не отображается.
Write-Verbose -Message "Verbose message test." -Verbose:$false
$WarningPreference
Определяет, как PowerShell реагирует на предупреждающие сообщения, созданные скриптом, командлетом или поставщиком, например сообщения, созданные командлетом Write-Warning .
По умолчанию отображаются предупреждающие сообщения и выполнение продолжается, но это поведение можно изменить, изменив $WarningPreference
значение .
Переменная $WarningPreference
принимает одно из значений ActionPreference
перечисления: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend или Break.
Допустимы следующие значения.
- Break — введите отладчик при записи предупреждающего сообщения.
- Stop: отображает предупреждение и сообщение об ошибке, а затем прекращает выполнение.
- Запрос: отображает предупреждающее сообщение, а затем запрашивает разрешение на продолжение.
- Продолжить: (по умолчанию) Отображает предупреждающее сообщение, а затем продолжает выполнение.
- SilentlyContinue: не отображает предупреждающее сообщение. Продолжает выполнение.
Вы можете использовать общий параметр WarningAction командлета, чтобы определить, как PowerShell реагирует на предупреждения от конкретной команды. См. сведения в разделе about_CommonParameters.
Примеры
В этих примерах показан эффект различных значений $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 [?] Help (default is "Y"):
В этом примере используется параметр WarningAction со значением SilentlyContinue. Команда продолжает выполняться, и сообщение не отображается.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
В этом примере значение изменяется $WarningPreference
на Stop.
$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 [?] Help (default is "Y"):
$WhatIfPreference
Определяет, включена ли функция WhatIf автоматически для каждой команды, которая его поддерживает. Если функция WhatIf включена, командлет сообщает об ожидаемом результате выполнения команды, но не выполняет команду.
Допустимы следующие значения.
- False (0, не включено): (по умолчанию) WhatIf не включается автоматически. Чтобы включить его вручную, используйте параметр WhatIf командлета.
- True (1, enabled): 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 , если значение $WhatIfPreference
равно False.
Убедитесь, что файл существует.
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
В этом примере показано, как удалить файл, если значение $WhatIfPreference
равно True. В нем используется параметр 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-Process
WhatIf. Значение $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