Domanda

Sto usando il seguente script PowerShell in speranze di identificare le applicazioni di servizio avviate da parte del server.

Spot Controllo dei risultati mostra qualcosa di inaspettato.Ad esempio, so che il connettore di Lotus Notes viene interrotto su tutti i server nella mia fattoria, ma lo script lo restituisce.

Quali altre proprietà aggiuntive devono testare per essere sicuri di vedere gli stessi esatti risultati come mostrato in Central Admin "Gestisci servizi su Server" Pagina?

[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 '|'
.

È stato utile?

Soluzione

Cosa c'è di sbagliato semplicemente usando

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

per ottenere i dati?

Altri suggerimenti

Quando si utilizza PowerShell per ottenere le istanze di servizio, sembrano tutti tornare online, come descrivi.Tuttavia, se lo facciamo in un metodo C #, ritorna correttamente.Ecco cosa ho fatto per farli tornare correttamente:

$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
.

È possibile utilizzare il metodo per ottenere la raccolta di istanze e quindi eseguire il filtraggio, l'output, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top