web-dev-qa-db-ja.com

PowerShellを使用してWindowsサービスのスタートアップタイプを取得する

[〜#〜] wmi [〜#〜] を使用せずにPowerShellを使用してWindowsサービスのスタートアップタイプを取得するにはどうすればよいですか?

Get-Service コマンドの内部を調べましたが、「スタートアップの種類」を表示するものが提供されていません。

46
kubusz

PowerShellバージョン4の場合:

以下のコマンドを実行できます。

   Get-Service | select -property name,starttype
24
Alan Angulo

WMIはこれを行う方法です。

Get-WmiObject -Query "Select StartMode From Win32_Service Where Name='winmgmt'"

または

Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"
36
ravikanth

PowerShellでは、コマンド Set-Service を使用できます。

Set-Service -Name Winmgmt -StartupType Manual

ただし、スタートアップの種類を表示するPowerShellコマンドは見つかりませんでした。コマンドGet-Serviceがそれを提供すると仮定しますが、そうではないようです。

13
LinWinGuy

私の知る限り、この情報を取得するための「ネイティブな」PowerShellの方法はありません。そしておそらく、それはPowerShellよりもむしろ.NETの制限です。

次に、この機能を次のバージョンに追加する提案を示します。

https://connect.Microsoft.com/PowerShell/feedback/details/424948/i-would-like-to-see-the-property-starttype-added-to-get-services

念のため、WMIの回避策もあります。私は自分のタスクにこのWMIソリューションを使用していますが、動作します。

9
Roman Kuzmin

以下も使用できます。

(Get-Service 'winmgmt').StartType

disabledなどの起動タイプのみを返します。

5
Marcel Janus

PowerShellバージョン5にアップグレード になったら、スタートアップの種類を取得できます。

実行しているPowerShellのバージョンを確認するには、$PSVersionTableを使用します。

以下の例は、Windowsファイアウォールサービス用です。

ローカルシステムの場合

Get-Service | Select-Object -Property Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

1つのリモートシステム用

Get-Service -ComputerName HOSTNAME_OF_SYSTEM | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

複数のシステムの場合(systems.txtを作成する必要があります)

Get-Service -ComputerName (Get-content c:\systems.txt) | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto
4
Brandy Reid

つかいます:

Get-Service BITS | Select StartType

または使用:

(Get-Service -Name BITS).StartType

Then

Set-Service BITS -StartupType xxx

[PowerShell 5.1]

3
Dana

PowerShell 5に更新すると、マシン上のすべてのサービスを照会し、NameとStartTypeを表示し、StartTypeで並べ替えて見やすくすることができます。

Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType
1
DannyBoy

sc ツールを使用して設定することもできます。

PowerShellから呼び出して、必要に応じて追加のチェックを追加することもできます。このツールとPowerShellの利点は、scツールでも開始タイプを自動遅延に設定できることです。

# Get Service status
$Service = "Wecsvc"
sc.exe qc $Service

# Set Service status
$Service = "Wecsvc"
sc.exe config $Service start= delayed-auto
1
emekm