2

マシンのサービスを取得するためのスクリプトを作成しましたが、StartModeを別のマシンにミラーリングしたいと思います。後者を実現する方法、つまりリモートマシンにサービスを設定する方法を考えることはできません。これまでに書かれたスクリプトIVEは次のとおりです。

#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
4

1 に答える 1

4

PowerShell v2.0を使用している場合は、 Set-Serviceコマンドレットを使用して簡単に実行できます。

foreach ($service in $issueServices) {
    $startMode = $service.StartMode

    if ($service.StartMode -eq "Auto") {
        $startMode = "Automatic"
    } 

    Set-Service -ComputerName TheRemoteMachine -Name $service.Name -StartupType $startMode
}

条件ステートメントは、プロパティから取得した値とパラメータで期待される引数との間に互換性がないためです。"Auto"StartMode"Automatic"-StartupType

于 2012-04-05T11:48:05.347 に答える