powershell:在Windows 7机器上更改服务的启动类型
问题描述:
我编写了一个脚本来获取机器的服务,并且我想将StartMode镜像到另一台机器。我不能想到如何实现后者:在远程机器上设置服务。下面有一个脚本,香港专业教育学院迄今写的:powershell:在Windows 7机器上更改服务的启动类型
#List of Issue of services
$NamesOfIssueServices = "Browser", "Dhcp", "Dnscache", "dwmrcs", "iphlpsvc", "LanmanServer", "LanmanWorkstation", "MMCSS", "MpsSvc", "Netlogon", "Netman", "netprofm", "NlaSvc", "nsi", "p2pimsvc","PNRPsvc","PolicyAgent", "SessionEnv", "stisvc", "W32Time", "WinHttpAutoProxySvc", "WinRM"
#get all services
$W32Services = Get-WmiObject Win32_Service
#filter wanted services
$IssueServices = $W32Services | Where-Object {$NamesOfIssueServices -contains $_.name}
#display wanted services
$IssueServices | Sort-Object name | ft Name, DisplayName, State, StartMode, StartName
答
如果您使用的PowerShell 2.0,你可以轻松地做到这一点通过Set-Service的cmdlet:
foreach ($service in $issueServices) {
$startMode = $service.StartMode
if ($service.StartMode -eq "Auto") {
$startMode = "Automatic"
}
Set-Service -ComputerName TheRemoteMachine -Name $service.Name -StartupType $startMode
}
条件语句是由于从StartMode
属性获得的值"Auto"
与参数-StartupType
预期的参数"Automatic"
之间的不兼容性。
+1因为在win32_service和AUTOMATIC中看到了与set-service不同的地方! – 2012-04-05 11:53:15
谢谢你的工作 – resolver101 2012-04-05 13:42:28