web-dev-qa-db-ja.com

PSEXECを使用してリモートでWindowsサービスを開始および停止する

PSEXECを使用してリモートでWindowsサービスを開始および停止する方法できれば、以下のコマンドレットを試してみてください。

psexec \\Server -u Administrator -p Somepassword ServiceName
10
Selwyn

現在、これをテストすることはできませんが、次のようにする必要があります。

psexec \\server -u username -p password net start ArgusCommunityWorkerService

そして

psexec \\server -u username -p password net stop ArgusCommunityWorkerService
10
RichieHindle

SysInternalsのPSService は、リモートでサービスを制御するためのものです:: `

psservice [\\computer [-u username] [-p password]] <command> <options>

どこ:

queryサービスのステータスを表示します。

configサービスの構成を表示します。

setconfigサービスの開始タイプ(無効、自動、要求)を設定します。

startサービスを開始します。

stopサービスを停止します。

restartサービスを停止してから再起動します。

pauseサービスを一時停止します

cont一時停止したサービスを再開します。

depend指定されたサービスに依存するサービスを一覧表示します。

securityサービスのセキュリティ記述子をダンプします。

findネットワークで指定されたサービスを検索します。

\\ computer指定されたNT/Win2Kシステムをターゲットにします。

セキュリティ資格情報によってリモートシステムからパフォーマンスカウンター情報を取得できない場合は、リモートシステムにログインするためのユーザー名とパスワードを-uスイッチに含めます。 -uオプションを指定し、-pオプションでパスワードを指定しない場合、PsServiceはパスワードの入力を要求し、パスワードを画面にエコーしません。

18
JBRWilkinson

Psexecの別の代替手段はscです。 scを使用して、サービスをリモートで開始または停止できます。

sc \\server start ServiceName

sc \\server stop ServiceName

「ログイン」情報がないため、実行する必要があるかもしれません

Net Use \\server password /USER:user

scコマンドを実行する前。

Psexecに対する1つの利点は、リモートマシンにコンソールウィンドウが表示されないことです。

13
jrbjazz

PSEXECを使用

以下のバッチファイルを使用すると、複数のリモートマシンでサービスを停止および開始できます。バッチファイルが実行されるのと同じディレクトリにComputers.txtファイルを作成し、PCホスト名を1行に1つずつリストします。

@echo off
TITLE Manage Services v1.0
SET suffix=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%
SET /P username=Enter your admin username: 
set "psCommand=powershell -Command "$pword = read-Host 'Enter Password' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
:service
SET /P servicename=Enter service name:
:begin
echo ========================================
echo 1) Start
echo 2) Stop
echo 3) Choose another service
echo ========================================
ECHO.
set /p op=Select an option:
if "%op%"=="1" SET action=start
if "%op%"=="2" SET action=stop
if "%op%"=="3" goto service

psexec "\\@%~dp0Computers.txt" -u %username% -p %password% -h net %action% %servicename% >>%suffix%.log 2>&1

pause
cls
goto begin

PowerShellを使用

# Point the script to the text file with remote computers
$RemoteComputers = Get-Content "$PSScriptRoot\Computers.txt"

# sets service name
$Service = "uvnc_service"

# Counter for progress bar
$counter = 0

ForEach ($Computer in $RemoteComputers) {
    $counter++
     Try
         {
          Write-Progress -Activity 'Processing computers' -CurrentOperation $Computer -PercentComplete (($counter / $RemoteComputers.count) * 100)
          Start-Sleep -Milliseconds 200
          Get-Service -Name $Service -ComputerName $Computer | Restart-Service -Force -ErrorAction Stop
          Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\success.log"
         }
     Catch
         {
          Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\failed.log"
         }
}
0
Rudixx