PowerShell 所需状态配置 -WhatIf
PowerShell Desired State Configuration -WhatIf
是否可以运行 DSC 配置并从 Set-TargetResource 获取 WhatIf 输出?我已经编写了一个自定义资源,并且 Set 函数具有 WhatIf/ShouldProcess 工作所需的所有代码(实际上,如果您使用 -WhatIf 手动调用 Set-TargetResource,它会按预期工作)。
当使用 -WhatIf 调用 Start-DSCConfiguration 时,我得到的是:
What if: [SERVERNAME]: LCM: [ Start Set ]
What if: [SERVERNAME]: LCM: [ Start Resource ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ Start Test ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ End Test ] [[Isi_Share]test] in 0.0310 seconds.
What if: [SERVERNAME]: LCM: [ Skip Set ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ End Resource ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ Start Resource ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ Start Test ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Test ] [[Isi_Share]test2] in 0.0470 seconds.
What if: [SERVERNAME]: LCM: [ Start Set ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Set ] [[Isi_Share]test2] in 0.0150 seconds.
What if: [SERVERNAME]: LCM: [ End Resource ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Set ]
当我真正想要的是真正调用 Test 函数,然后使用 -WhatIf 调用 Set 以便我得到此输出(通过调用 Set-TargetResource 中的 ShouldProcess() 生成:
What if: Performing the operation "Create Directory" on target "/ifs/a".
What if: Performing the operation "Create Share" on target "/ifs/a".
这可能吗?
不,你不能那样做。手动是唯一的工作方式。
如您所见,-whatif 会告诉您将调用哪些资源但不会调用它们。您的函数需要被调用才能处理其中的 whatif。
是否可以运行 DSC 配置并从 Set-TargetResource 获取 WhatIf 输出?我已经编写了一个自定义资源,并且 Set 函数具有 WhatIf/ShouldProcess 工作所需的所有代码(实际上,如果您使用 -WhatIf 手动调用 Set-TargetResource,它会按预期工作)。
当使用 -WhatIf 调用 Start-DSCConfiguration 时,我得到的是:
What if: [SERVERNAME]: LCM: [ Start Set ]
What if: [SERVERNAME]: LCM: [ Start Resource ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ Start Test ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ End Test ] [[Isi_Share]test] in 0.0310 seconds.
What if: [SERVERNAME]: LCM: [ Skip Set ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ End Resource ] [[Isi_Share]test]
What if: [SERVERNAME]: LCM: [ Start Resource ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ Start Test ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Test ] [[Isi_Share]test2] in 0.0470 seconds.
What if: [SERVERNAME]: LCM: [ Start Set ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Set ] [[Isi_Share]test2] in 0.0150 seconds.
What if: [SERVERNAME]: LCM: [ End Resource ] [[Isi_Share]test2]
What if: [SERVERNAME]: LCM: [ End Set ]
当我真正想要的是真正调用 Test 函数,然后使用 -WhatIf 调用 Set 以便我得到此输出(通过调用 Set-TargetResource 中的 ShouldProcess() 生成:
What if: Performing the operation "Create Directory" on target "/ifs/a".
What if: Performing the operation "Create Share" on target "/ifs/a".
这可能吗?
不,你不能那样做。手动是唯一的工作方式。
如您所见,-whatif 会告诉您将调用哪些资源但不会调用它们。您的函数需要被调用才能处理其中的 whatif。