Jup*_*aol 6 windows powershell windows-server-2012 dsc
所以我使用的是 DSC 推送模式
我每天有大约 200 次部署到多个环境 (DEV/INT/QA/PROD)
每次部署时,我都想确保每个服务器都配置正确
所以我自动运行 DSC 作为我部署的一部分,完全没有用户交互
所以我想知道是否有办法知道在运行 DSC 配置后是否需要重新启动/重启
基本上在运行这条线之后
Start-DscConfiguration -Wait -Force -Path .\SomePath
Run Code Online (Sandbox Code Playgroud)
我如何配置包的示例
Package MVC3
{
Name = "Microsoft ASP.NET MVC 3"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
Arguments = "/q"
DependsOn = "[WindowsFeature]IIS"
Credential = $Credential
}
Package MVC4
{
Name = "Microsoft ASP.NET MVC 4 Runtime"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
Arguments = "/q"
DependsOn = "[Package]MVC3"
Credential = $Credential
}
Run Code Online (Sandbox Code Playgroud)
我过去一直使用的是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ PendingFileRenameOperations
注册表值。如果它不是空的 - 那么你正在等待重新启动。请注意,除非您等待重新启动,否则注册表值甚至不应该存在。它在重新启动时被删除。所以,如果你没有看到它,那就是原因。
编辑:也把这个键扔进去:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile
这两个键一起应该告诉你重启是否挂起。
查看这篇 Microsoft 文章 - 尽管该文章是关于 Exchange 的,但它清楚地提到检查这两个注册表值是 Exchange 如何知道重启是否挂起:http : //technet.microsoft.com/en-us/library/ cc164360(v=EXCHG.80).aspx
2014 年 10 月 29 日编辑: Microsoft 发布了一个名为xPendingReboot的新 Desired State Configuration 资源,它可以很好地确定您的系统是否等待重启。它通过查看以下注册表项列表来做到这一点:
$ComponentBasedServicing = (Get-ChildItem 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\').Name.Split("\") -contains "RebootPending"
$WindowsUpdate = (Get-ChildItem 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\').Name.Split("\") -contains "RebootRequired"
$PendingFileRename = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\').PendingFileRenameOperations.Length -gt 0
$ActiveComputerName = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName').ComputerName
$PendingComputerName = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName').ComputerName
$PendingComputerRename = $ActiveComputerName -ne $PendingComputerName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |