Я просто стартер, сухая работа очень полезна, чтобы сделать параметр для тестирования, может ли любое тело сказать мне, как использовать его с легким способом? Я googled, но мало результатов по его использованию.
Большое спасибо
Я просто стартер, сухая работа очень полезна, чтобы сделать параметр для тестирования, может ли любое тело сказать мне, как использовать его с легким способом? Я googled, но мало результатов по его использованию.
Большое спасибо
Явно поставьте параметр -WhatIf:
rm foo.txt -WhatIf
Результат:
What if: Performing operation "Remove File" on Target "C:\temp\foo.txt".
SupportsShouldProcess
атрибут автоматически распространяет -WhatIf
на поддерживаемые командлеты:
function do-stuff
{
[CmdletBinding(SupportsShouldProcess=$True)]
param([string]$file)
Remove-Item $file
}
do-stuff foo.txt -WhatIf
Результат:
What if: Performing operation "Remove File" on Target "C:\temp\foo.txt".
Явно использовать метод ShouldProcess()
, чтобы определить, прошел ли -WhatIf
:
function do-stuff
{
[CmdletBinding(SupportsShouldProcess=$True)]
param([string]$file)
if ($PSCmdlet.ShouldProcess($file)) {
Write-Host "Deleting file"
Remove-Item $file
}
}
do-stuff foo.txt -WhatIf
Результат:
What if: Performing operation "do-stuff" on Target "foo.txt".
SupportsShouldProcess
атрибут автоматически распространяет -WhatIf
на вложенные функции:
function do-stuff
{
[CmdletBinding(SupportsShouldProcess=$True)]
param([string]$file)
if ($PSCmdlet.ShouldProcess($file)) {
Write-Host "Deleting file"
Remove-Item $file
}
inner "text"
}
function inner
{
[CmdletBinding(SupportsShouldProcess=$True)]
param([string]$s)
if ($PSCmdlet.ShouldProcess($s)) {
Write-Host "Inner task"
}
$s | out-file "temp9.txt"
}
do-stuff foo.txt -WhatIf
Результат:
What if: Performing operation "do-stuff" on Target "foo.txt".
What if: Performing operation "inner" on Target "text".
What if: Performing operation "Output to File" on Target "temp9.txt".
К сожалению, -WhatIf не распространяется автоматически на функции, определенные в другом модуле. См. Powershell: как получить -whatif для распространения командлетов в другом модуле для обсуждения и обходного пути для этого.
Вероятно, вы имеете в виду параметры -WhatIf
и -Confirm
для командлетов. Вы можете прочитать о них в Get-Help about_commonParameters
:
Описание параметров управления рисками
-WhatIf[:{$true | $false}]
Отображает сообщение, описывающее эффект команды, вместо выполнения команды.
Параметр WhatIf переопределяет значение
$WhatIfPreference
переменная для текущей команды. Поскольку значение по умолчанию для$WhatIfPreference
переменная0
(отключена), поведение WhatIf не выполняется без параметра WhatIf. Для получения дополнительной информации введите следующую команду:get-help about_preference_variables
Допустимые значения:
$true
(-WhatIf:$true
). Имеет такой же эффект, как-WhatIf
.
$false
(-WhatIf:$false
). Подавляет автоматическое поведение WhatIf , что приводит к тому, что значение переменной $WhatIfPreference 1.Например, следующая команда использует параметр
WhatIf
вRemove-Item
команда:PS> remove-item date.csv -whatif
Вместо удаления элемента Windows PowerShell перечисляет операции он будет выполнять и элементы, которые будут затронуты. Эта команда выводит следующий результат:
What if: Performing operation "Remove File" on Target "C:\ps-test\date.csv".
-Confirm[:{$true | $false}]
Запрашивает подтверждение перед выполнением команды.
Параметр Confirm переопределяет значение параметра $ConfirmPreference переменная для текущей команды. Значение по умолчанию - Высокое. Для большего введите следующую команду:
get-help about_preference_variables
Допустимые значения:
$true
(-WhatIf:$true
). Имеет такой же эффект, как-Confirm
.
$false
(-Confirm:$false
). Подавляет автоматическое подтверждение, которая возникает, когда значение$ConfirmPreference
меньше, чем или равно оценочному риску командлета.Например, следующая команда использует параметр Confirm с Удалить команду. Перед удалением элемента Windows PowerShell перечисляет операции, которые он будет выполнять, и элементы, которые будут затрагивается и просит одобрения.
PS C:\ps-test> remove-item tmp*.txt -confirm
Эта команда производит следующий вывод:
Confirm Are you sure you want to perform this action? Performing operation "Remove File" on Target " C:\ps-test\tmp1.txt [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):