有人能告诉我,Powershell ISE和标准控制台运行DSC脚本有什么区别(都是以管理员身份运行)?
当我通过PS ISE运行我的脚本时,一切正常,DSC适用于2台服务器,包括。加密。但是,当我通过“运行Powershell”运行完全相同的脚本时,可以使用Powershell'我收到了这样的错误消息:
System.Management.Automation.RuntimeException:您无法在空值表达式上调用方法。在 System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext,异常异常)at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame 框架) System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame 框架) System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame 帧)。
ScriptBlock第1021行,无文件:第1行
这些错误指向下面的行(粗体):
Configuration Config1
{
...
...
...
}
$configdata = @{
AllNodes = @(
@{
NodeName = "Server1"
PSDscAllowDomainUser = $true
CertificateFile = "$((Get-ChildItem 'E:\' | ? {$_.Name -like 'MyFolderName'}).fullname)\Server1.cer"
Thumbprint = ($Thumbs | ? {$_ -like "Server1*"}).Split("=")[1]
}
@{
NodeName = "Server2"
PSDscAllowDomainUser = $true
CertificateFile = "$((Get-ChildItem 'E:\' | ? {$_.Name -like MyFolderName'}).fullname)\Server2.cer"
Thumbprint = ($Thumbs | ? {$_ -like "Server2*"}).Split("=")[1]
}
)
}
Config1 -ConfigurationData $configdata
问题在于Server2(我在Server1上运行脚本)。所有路径都是正确的,我可以在哈希表中使用这样的语法吗?
问题出在标准的PowerShell控制台上,是否有人知道为什么PS ISE不会返回任何错误?
答案 0 :(得分:0)
您可以使用直接的PowerShell代码完成您使用DSC所做的一切。将检查配置管理系统中描述您的系统的代码,并定期针对您的系统运行。
DSC和许多其他配置管理系统是关于制作实际可以共享的可重用资源。
这是一般脚本无法选择配置的原因之一。 在您的情况下,您有一个运行时异常,它清楚地描述了传递给脚本中的方法的某些值为NULL。
浏览以下链接:
Configuration Management Theory - Idempotence & Immutability