我的DSC配置看起来像这样
configuration DBServer
{
param(
[PSCredential]$SqlAdminCredential
)
node "localhost"
{
Script ConfigureSSRS {
SetScript = {
& sqlcmd -S $RSConnection -i $DBCreateFile -U $SQLAdminCredential.UserName -P $SQLAdminCredential.GetNetworkCredential().Password
我正在使用带有包含此Properties
节点的DSC扩展的JSON模板部署在azure VM上运行它:
"Properties": {
"SqlAdminCredential": {
"userName": "PrivateSettingsRef:SQLAdmin",
"password": "PrivateSettingsRef:SQLAdminPass"
},
这两个值确实在protectedSettings
节点中定义:
"SQLAdmin": "[parameters('sqlAuthenticationLogin')]",
"SQLAdminPass": "[parameters('sqlAuthenticationPassword')]"
但是每当我尝试使用凭据时,我会在上面列出的代码中不断获取空引用异常。我已经尝试了$using:SqlAdminCredential
,我相信昨天我也试过$global:SqlAdminCredential
。
我目前正在尝试对此进行故障排除,但我不喜欢对我的配置进行更改,然后花15分钟等待部署以查看它是否有效。但是,我无法弄清楚如何使用Start-DscConfiguration
传递此凭据对象参数,以便在现有VM上对其进行故障排除。我怎么能这样做?
如果您可以解决我的实际问题并告诉我如何从$SqlAdimCredential
ConfigureSSRS.SetScript
,则可获得积分
答案 0 :(得分:0)
目前,我已经决定表现不佳并且这样做:
configuration DBServer
{
param(
[PSCredential]$SqlAdminCredential
)
node "localhost"
{
$adminCreds = $SqlAdminCredential #a hack
Script ConfigureSSRS {
SetScript = {
$SqlAdminCredential = $using:adminCreds
我会等待更好的解决方案,但这似乎有效。
答案 1 :(得分:0)
您有以下选择:
如果您需要在单个用户下运行整个脚本,请使用脚本资源的PSDSCRunAsCredential。
创建使用PSCredential Parameters的自己的DSC资源。