gpt4 book ai didi

powershell - 如何在powershell中使用 'dry-run'

转载 作者:行者123 更新时间:2023-12-02 11:27:18 25 4
gpt4 key购买 nike

我只是一个初学者,试运行对于制作参数进行测试非常有用,有人可以告诉我如何以简单的方式使用它吗?我用谷歌搜索了它,但关于它的用途的结果很少。

非常感谢

最佳答案

在现有 cmdlet 上使用

显式提供 -WhatIf 参数:

rm foo.txt -WhatIf

结果:

What if: Performing operation "Remove File" on Target "C:\temp\foo.txt".

在函数或脚本内的现有 cmdlet 上使用

SupportsShouldProcess 属性自动将 -WhatIf 传播到支持的 cmdlet:

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: How to get -whatif to propagate to cmdlets in another module进行讨论并解决此问题。

关于powershell - 如何在powershell中使用 'dry-run',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com