我有一个可以由某些用户调用的 powershell 脚本。该脚本以一些提升的权限运行,因此我需要确保他们不能使用它来绕过预期的行为。脚本的一个参数是一个字符串,它充当另一个 cmdlet 的参数。
所以用户可能会提供字符串'-Day 4 -Year 1989 -Month 3'
然后在我的脚本中,我想运行:Get-Date -Day 4 -Year 1989 -Month 3
现在我知道我可以通过 Invoke-Expression 做到这一点,但这会使我容易受到 powershell 注入的影响(即:用户可以通过'-day 4; do-bad-stuff')
或者,我可以为 Get-Date 编写一个包装器,但这似乎需要做很多工作,因为我实际调用的 cmdlet(它不是 Get-Date)有很多不同的参数,而且包装起来似乎需要做很多工作商场。他们没有可以在该 cmdlet 上调用可能造成伤害的参数(因为它是 Get-xxx cmdlet)。
任何人都知道使用字符串作为参数调用特定 cmdlet 的方法吗?