Question

Je suis en utilisant le script Powershell suivant dans l'espoir d'identifier Commencé les applications de service par le serveur.

Spot de vérification des résultats montre quelque chose d'inattendu.Par exemple, je sais Connecteur Lotus Notes est Arrêté sur tous les serveurs dans ma ferme, mais le script renvoie.

Quelles sont les autres propriétés supplémentaires dois-je tester pour être sûr que je vois exactement les mêmes résultats, comme indiqué dans la Central Admin "Gérer les Services sur les Serveurs" à la page?

[System.Collections.ArrayList]$ReportInfo = New-Object System.Collections.ArrayList($null)


$servers = (get-spfarm).servers
foreach ($server in $servers)
{


    foreach($service in $server.serviceinstances)
    {
        if($service.TypeName -eq "Lotus Notes Connector"){
            Write-Host stop;
        }

        if ($service.status = "Online")
        {
            Write-Host "Server" $server.Name "`tService: " $service.TypeName;

            $servicInfo = @{}
            $servicInfo.Server = $service.Server.Name;
            $servicInfo.Service = $service.TypeName;

            $ReportInfo.Add((New-Object PSObject -Property $servicInfo))>$null;
        }
    }
}

Write-Host "Exporting CSV"

$ReportInfo | Export-Csv  "Services.csv" -NoTypeInformation -Encoding UTF8 -Delimiter '|'
Était-ce utile?

La solution

Quel est le problème avec simplement à l'aide de

Get-SPServiceInstance | select typename, status, server | Export-Csv test.csv

pour obtenir les données?

Autres conseils

Lorsque vous utilisez PowerShell pour obtenir les instances de service, ils semblent tous revenir en ligne, comme vous le décrivez.Cependant, si nous le faisons dans une méthode C #, il revient correctement.Voici ce que j'ai fait pour les faire revenir correctement:

$Assem = ( 
    "Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
    ) 

$Source = @" 
using Microsoft.SharePoint.Administration; 
using Microsoft.SharePoint; 
using System.Collections.Generic;
using System; 

namespace ReportingStuff 
{ 
    public static class Servers  
    { 
        public static List<SPServiceInstance> GetInstances() 
        { 
            List<SPServiceInstance> items = new List<SPServiceInstance>();

            foreach (SPServer server in SPFarm.Local.Servers)
            {
                foreach (SPServiceInstance instance in server.ServiceInstances)
                {
                    if ((!instance.SystemService && !(instance.GetType().FullName.Contains("SPAdministrationServiceInstance"))) && (!(instance is SPTimerServiceInstance) && (server.ServiceInstances.GetValue<SPTimerServiceInstance>() != null)))
                        items.Add(instance);
                }
            }

            return items;
        } 
    } 
} 
"@ 

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp  

$output = [ReportingStuff.Servers]::GetInstances()
Write-Output $output

Vous pouvez utiliser la méthode pour obtenir votre collecte d'instances, puis faire votre filtrage, votre sortie, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top