Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell DSC(所需状态配置)_Powershell_Dsc - Fatal编程技术网

Powershell DSC(所需状态配置)

Powershell DSC(所需状态配置),powershell,dsc,Powershell,Dsc,有人能告诉我通过Powershell ISE运行DSC脚本与标准控制台(两者都以管理员身份运行)之间的区别吗 当我通过PS ISE运行脚本时,一切正常,DSC应用于2台服务器,包括加密。但当我通过“使用Powershell运行”运行完全相同的脚本时,我会收到这样的错误消息: System.Management.Automation.RuntimeException:不能对空值表达式调用方法。在 系统。管理。自动化。异常处理操作。检查操作首选项(FunctionContext funcContex

有人能告诉我通过Powershell ISE运行DSC脚本与标准控制台(两者都以管理员身份运行)之间的区别吗

当我通过PS ISE运行脚本时,一切正常,DSC应用于2台服务器,包括加密。但当我通过“使用Powershell运行”运行完全相同的脚本时,我会收到这样的错误消息:

System.Management.Automation.RuntimeException:不能对空值表达式调用方法。在 系统。管理。自动化。异常处理操作。检查操作首选项(FunctionContext funcContext,异常)位于 系统.管理.自动化.解释器.操作调用指令'2.运行(解释器框架 帧)在 系统。管理。自动化。解释器。EntertryCatch最终指令。运行(解释器框架 帧)在 系统。管理。自动化。解释器。EntertryCatch最终指令。运行(解释器框架 框架)

脚本块处的第1021行,无文件:第1行

这些错误指向下一行(粗体):

问题在于Server2(我正在Server1上运行脚本)。所有路径都是正确的,我可以在哈希表中使用这样的语法吗


问题在于标准powershell控制台,有人知道为什么PS ISE不返回任何错误吗?

您可以使用DSC执行几乎所有操作,使用直接的powershell代码。配置管理系统中描述系统的代码将定期检查并针对您的系统运行

DSC和许多其他配置管理系统都是关于使可重复使用的资源真正完成可以共享的工作

这是常规脚本无法选择配置的原因之一。 在您的例子中,您得到了一个运行时异常,它清楚地描述了在脚本中传递给方法的某个值为NULL

浏览以下链接:


谢谢您的回复,但我仍然不知道如何实现这样的场景:1。使用将在Server1(Server1和Server2的加密MOF文件)2上执行Start DSCCConfiguration的所有必需信息运行脚本。从Server1为两台服务器执行测试DSCConfiguration成功,我尝试按照本文进行操作(),但没有成功…如果您看到标准powershell控制台中运行的代码与powershell ISE中运行的代码不同,我将检查您的powershell配置文件。与标准控制台相比,ISE中将运行不同的配置文件powershell。
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