2013-07-21 16 views

Odpowiedz

9

Jeśli wszystkie mają taką samą nazwę lub wyświetlaną nazwę, można to zrobić za pomocą jednego polecenia. Jeśli nie, musisz uruchomić 3 polecenia.

Jeżeli wszyscy mają taką samą nazwę lub wyświetlaną nazwę:

Get-Service -ComputerName server-a, server-b, server-c -Name MyService | 
    Select Name, MachineName, Status 

Jeśli mają różne nazwy lub nazwy wyświetlania:

chciałbym to zrobić -

@{ 
    'server-a' = 'service-a' 
    'server-b' = 'service-b' 
    'server-c' = 'service-c' 
}.GetEnumerator() | ForEach-Object { 
    Get-Service -ComputerName $_.Name -Name $_.Value 
} | Select Name, MachineName, Status 

Do wyjścia do plik tekstowy użyj ... | Set-Content ~\Documents\Service_Status.txt gdzie ... jest jednym z powyższych.

Uwaga - Twoje konto będzie musiało mieć uprawnienia do wysyłania zapytań do komputerów zdalnych.

+1

Jak określić alternatywne poświadczenie, jeśli Twoje konto nie ma uprawnień? – Dan

1

Istnieje kilka sposobów, aby to osiągnąć. Używam skrótu wartości, ponieważ wspomniałeś, że serwer do obsługi mapowania jest zawsze jeden do jednego.

$svrHash = @{"SERVER-01"="winmgmt";"SERVER-02"="Wecsvc"} 
$svrHash.Keys 
    | ForEach-Object {Get-Process -ComputerName $_ -Name $svrHash[$_] -Ea SilentlyContinue} 
    | Select ProcessName 
    | Out-File C:\Scripts\test.txt 

Musisz użyć nazwy usługi, a nie nazwy .exe.

+0

Dzięki temu zadziałało. Ale nie miałem racji wyjaśniając moje wymagania. Są to zadania, a nie usługi. Jeśli otworzę Menedżera zadań, powinienem widzieć 3 różne zadania na 3 różnych serwerach. – Ireshad

+0

A więc są to procesy, a nie usługi? Zamień Get-Service na Get-Process i powinno działać. – ravikanth

+0

Tak, zadziałało. Dziennik zawiera zbyt dużo szczegółów, takich jak uchwyty NPM (K), PM (K), WS (K), VM (M), procesor (y), identyfikator, nazwa procesu. Czy możliwe jest posiadanie tylko dwóch kolumn (Nazwa procesu i Uruchomienie (Tak lub Nie)) Dziękujemy – Ireshad

Powiązane problemy