문제

서버별로 시작된 서비스 응용 프로그램을 식별하기 위해 다음 PowerShell 스크립트를 사용하고 있습니다.

스팟 결과를 확인하는 것은 예상치 못한 것을 보여줍니다.예를 들어, Lotus Notes 커넥터가 내 팜의 모든 서버에서 중지되었지만 스크립트는이를 반환합니다.

중앙 관리자 "서버에서 서비스 관리"페이지에서와 같이 똑같은 결과를보고 있는지 확인하기 위해 다른 추가 속성을 테스트해야합니다.

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

도움이 되었습니까?

해결책

단순히 사용하는 것은

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

데이터를 가져 오려면?

다른 팁

PowerShell을 사용하여 서비스 인스턴스를 얻으려면 모든 것이 온라인 상태가되는 것처럼 보입니다.그러나 C # 방법으로 해당하는 경우 올바르게 돌아옵니다.여기에 내가 그들을 올바르게 돌아왔다.

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

메소드를 사용하여 인스턴스 컬렉션을 가져온 다음 필터링, 출력 등을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top