gpt4 book ai didi

powershell - PowerShell调用命令参数列表

转载 作者:行者123 更新时间:2023-12-03 00:51:42 26 4
gpt4 key购买 nike

我正在努力将参数传递给自定义函数。

这很好用:

Delete-OldFiles -Target $Target -OlderThanDays $OlderThanDays -LogName Auto_Clean.log

这些根本不起作用:

# (using -ScriptBlock ${Function:Delete-OldFiles} for all calls)

Invoke-Command -ArgumentList ( ".$Target", ".$OlderThanDays", ".$LogName Auto_Clean.log")

Invoke-Command -ArgumentList @("$Target", "$OlderThanDays", "Auto_Clean.log")

Invoke-Command -ArgumentList @({-OlderThanDays "10", -Target "E:\Share\Dir1", -LogName "Auto_Clean.log"})

Invoke-Command -ArgumentList (,@('$Target','$OlderThanDays','Auto_Clean.log'))

您能帮助我如何正确传递以下参数:

Param(
[Parameter(Mandatory=$False,Position=1)]
[String]$Server,
[Parameter(Mandatory=$True,Position=2)]
[ValidateScript({Test-Path $_})]
[String]$Target,
[Parameter(Mandatory=$True,Position=3)]
[Int]$OlderThanDays,
[Parameter(Mandatory=$True,Position=4)]
[String]$LogName,
[switch]$CleanFolders
)

最佳答案

当您使用Invoke-Command -ArgumentList时,参数将作为位置参数传递到脚本块。看着param()块:设计时并未考虑使用位置参数...首先具有可选参数,之后具有必需参数意味着您始终需要提供可选参数,或对所有必需参数都使用命名参数。

换句话说:在第一个位置具有可选参数将阻止您使用Invoke-Command以这种方式运行此代码。

要在本地测试您的代码,您应该尝试这种方式:

Delete-OldFiles $Target $OlderThanDays "Auto_Clean.log"

我希望它会提示您输入 LogName参数。

关于powershell - PowerShell调用命令参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871597/

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