我写了一个脚本来获得一台机器的服务,我想将StartMode镜像到另一台机器上。 我不能想到如何实现后者:在远程机器上设置服务。 这是迄今为止编写的脚本:
#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 v2.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"
之间不兼容造成的。