DSC 节点未重新启动
DSC Node is not restarting
对于我的学习测试实验室,我有一个简单的 DSC 配置。我正在创建 VM 并在第一次启动时让它们 运行 以下 ps1 以将系统重命名为 VM 的名称。
configuration SomeConfiguration
{
Import-DscResource -ModuleName ComputerManagementDsc
Import-DscResource -ModuleName PSDesiredStateConfiguration
node 'localhost'
{
LocalConfigurationManager
{
RebootNodeIfNeeded = $true
ConfigurationMode = 'ApplyAndAutoCorrect'
}
Computer RenameComputer
{
Name = $VMName
}
}
}
$VMName = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters').VirtualMachineName
#Compile configuration
PrepareVM
#Apply configuration
Start-DscConfiguration -Path .\PrepareVM -ComputerName localhost -Wait -Force -Verbose
输出如下:
Verzeichnis: C:\Windows\system32\PrepareVM
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 02.03.2021 08:36 1804 localhost.mof
-a---- 02.03.2021 08:36 1124 localhost.meta.mof
AUSFÜHRLICH: Vorgang "CIM-Methode aufrufen" mit den folgenden Parametern durchführen,
"'methodName' = SendConfigurationApply,'className' =
MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration".
AUSFÜHRLICH: Vom Computer 'WIN-513GCONKL5D' mit Benutzer-SID
'S-1-5-21-3061245032-2377636693-4228035128-500' ist ein LCM-Methodenaufruf eingegangen.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenFestlegen]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenRessource] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenTesten ] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Testing
computer state for 'DC01'.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenTesten ] [[Computer]RenameComputer] in 0.0940
Sekunden.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenFestlegen] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Setting
computer state for 'DC01'.
WARNUNG: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Die Änderungen
werden nach einem Neustart des Computers WIN-513GCONKL5D wirksam.
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Renamed
computer to 'DC01'.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen] [[Computer]RenameComputer] in 0.2030
Sekunden.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenRessource] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [] Zum Fortsetzen des Vorgangs ist ein
Neustart erforderlich. Starten Sie das System neu.
WARNUNG: [WIN-513GCONKL5D]: [] Zum Fortsetzen des Vorgangs ist ein
Neustart erforderlich. Starten Sie das System neu.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen] in 1.6710 Sekunden.
AUSFÜHRLICH: Vorgang "CIM-Methode aufrufen" wurde abgeschlossen.
AUSFÜHRLICH: Die Ausführung des Konfigurationsauftrags hat 2.194 Sekunden gedauert.
所以基本上脚本运行良好,没有任何错误并返回报告,需要重新启动(“WARNUNG”)。但是就是不重启。
正在向控制台输出 $global:DSCMachineStatus returns 一个空变量。
已经尝试将其添加到配置中,但没有成功。
PendingReboot RebootComputer
{
Name = 'RebootComputer'
DependsOn = '[Computer]RenameComputer'
}
Script RebootWhenSet
{
GetScript = {
# TestScript = $true
return @{ Result = "Some value" };
# TestScript = $false
# return @{ Result = $null };
}
SetScript = {
$global:DSCMachineStatus = 1;
}
TestScript = {
$GetScript = Get-Host
$result = (Invoke-Expression -Command $GetScript)["Result"];
if($result)
{
return $true;
}
return $false;
}
}
手动重启后一切正常。我该如何调试?
Set-DscLocalConfigurationManager -Path ".\PrepareVM" -Force
将此行添加到脚本后,它现在可以正常工作了。
对于我的学习测试实验室,我有一个简单的 DSC 配置。我正在创建 VM 并在第一次启动时让它们 运行 以下 ps1 以将系统重命名为 VM 的名称。
configuration SomeConfiguration
{
Import-DscResource -ModuleName ComputerManagementDsc
Import-DscResource -ModuleName PSDesiredStateConfiguration
node 'localhost'
{
LocalConfigurationManager
{
RebootNodeIfNeeded = $true
ConfigurationMode = 'ApplyAndAutoCorrect'
}
Computer RenameComputer
{
Name = $VMName
}
}
}
$VMName = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters').VirtualMachineName
#Compile configuration
PrepareVM
#Apply configuration
Start-DscConfiguration -Path .\PrepareVM -ComputerName localhost -Wait -Force -Verbose
输出如下:
Verzeichnis: C:\Windows\system32\PrepareVM
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 02.03.2021 08:36 1804 localhost.mof
-a---- 02.03.2021 08:36 1124 localhost.meta.mof
AUSFÜHRLICH: Vorgang "CIM-Methode aufrufen" mit den folgenden Parametern durchführen,
"'methodName' = SendConfigurationApply,'className' =
MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration".
AUSFÜHRLICH: Vom Computer 'WIN-513GCONKL5D' mit Benutzer-SID
'S-1-5-21-3061245032-2377636693-4228035128-500' ist ein LCM-Methodenaufruf eingegangen.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenFestlegen]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenRessource] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenTesten ] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Testing
computer state for 'DC01'.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenTesten ] [[Computer]RenameComputer] in 0.0940
Sekunden.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ StartenFestlegen] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Setting
computer state for 'DC01'.
WARNUNG: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Die Änderungen
werden nach einem Neustart des Computers WIN-513GCONKL5D wirksam.
AUSFÜHRLICH: [WIN-513GCONKL5D]: [[Computer]RenameComputer] Renamed
computer to 'DC01'.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen] [[Computer]RenameComputer] in 0.2030
Sekunden.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenRessource] [[Computer]RenameComputer]
AUSFÜHRLICH: [WIN-513GCONKL5D]: [] Zum Fortsetzen des Vorgangs ist ein
Neustart erforderlich. Starten Sie das System neu.
WARNUNG: [WIN-513GCONKL5D]: [] Zum Fortsetzen des Vorgangs ist ein
Neustart erforderlich. Starten Sie das System neu.
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen]
AUSFÜHRLICH: [WIN-513GCONKL5D]: LCM: [ BeendenFestlegen] in 1.6710 Sekunden.
AUSFÜHRLICH: Vorgang "CIM-Methode aufrufen" wurde abgeschlossen.
AUSFÜHRLICH: Die Ausführung des Konfigurationsauftrags hat 2.194 Sekunden gedauert.
所以基本上脚本运行良好,没有任何错误并返回报告,需要重新启动(“WARNUNG”)。但是就是不重启。
正在向控制台输出 $global:DSCMachineStatus returns 一个空变量。
已经尝试将其添加到配置中,但没有成功。
PendingReboot RebootComputer
{
Name = 'RebootComputer'
DependsOn = '[Computer]RenameComputer'
}
Script RebootWhenSet
{
GetScript = {
# TestScript = $true
return @{ Result = "Some value" };
# TestScript = $false
# return @{ Result = $null };
}
SetScript = {
$global:DSCMachineStatus = 1;
}
TestScript = {
$GetScript = Get-Host
$result = (Invoke-Expression -Command $GetScript)["Result"];
if($result)
{
return $true;
}
return $false;
}
}
手动重启后一切正常。我该如何调试?
Set-DscLocalConfigurationManager -Path ".\PrepareVM" -Force
将此行添加到脚本后,它现在可以正常工作了。