使用新的 SQL Server PS 模块和 -Encrypt 参数

问题描述 投票:0回答:1

随着新的 SQL Server PS 模块的引入,Microsoft 已将 -Encrypt 参数强制设置为 Invoke-Sqlcmd cmdlet。

Invoke-Sqlcmd -ServerInstance $server -query $sql -Encrypt Optional

在我们的环境中:

  • 我们有一个自定义的 PowerShell 模块,其中包含许多 Invoke-Sqlcmd 来电。
  • 我们管理数千台服务器,每台服务器都有不同的版本 SQL Server PS 模块。

考虑到我们服务器上的 SQL Server PS 模块版本存在差异,我们的目标是利用 PowerShell 中的默认参数选项。为了实现这一目标,我们在 $PROFILE.AllUsersAllHosts 配置文件中包含以下行:

$PSDefaultParameterValues['Invoke-Sqlcmd:Encrypt'] = 'Optional'

此设置适用于从 Visual Studio Code 执行的脚本。但是,我们的自定义模块中调用 Invoke-Sqlcmd 的函数会遇到故障。为了解决这个问题,我们通过使用以下行在模块中创建一个函数来实现另一种方法:

$PSDefaultParameterValues['Invoke-Sqlcmd:Encrypt'] = 'Optional'

因此,在使用模块中的任何函数之前,我们执行负责设置可选值的函数。

考虑到这些挑战,是否有更有效的替代方案?此外,当加载PowerShell模块时,它在哪个范围内运行?我们如何在这个范围内建立可选值?

sql-server powershell invoke-sqlcmd
1个回答
0
投票

尝试将其放置在模块的顶部,任何函数之外。

$PSDefaultParameterValues['Invoke-Sqlcmd:Encrypt'] = 'Optional' ;
© www.soinside.com 2019 - 2024. All rights reserved.