我想在函数中创建一个服务器smo对象,然后使用它对传入的脚本块进行一些有用的操作。此后,将删除服务器验证。我想设计类似于模板设计模式实现的功能。我的代码在下面列出,我不确定是否在脚本块中使用$ server变量。有人可以帮忙吗?谢谢。
功能测试{
[CmdletBinding()]
参数(
[Parameter(必填= $ true,位置= 0)]
[目的]
$ instance,
[Parameter(必填= $ true,位置= 1)]
[脚本块]
$脚本
)
[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')|零
$ server =新对象('Microsoft.SqlServer.Management.Smo.Server')$ instance
#用$ script做某事
Remove-Variable -Name $ server
}
最佳答案
需要编写脚本块,以便期望服务器变量,例如:
test $anInstance {param($server) $server.DoSomething}
然后在您的测试函数中执行脚本块,如下所示:
& $scripblock $server
并且如果脚本块需要多个参数:
test $anInstance {param($server, $name) $server.DoSomething}
请记住使用空格分隔的参数进行调用:
& $scripblock $server "A name"
关于templates - 如何在Powershell中使用模板设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758319/