Provedor de Descoberta de Serviços Compartilhados do SharePoint

Microsoft.SharePoint.Server.2010.SPSharedService.DiscoveryProvider (DataSourceModuleType)

É o provedor de descoberta para o preenchimento de instâncias de serviço compartilhado do SharePoint em execução em servidores SharePoint.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsMicrosoft.SharePoint.Foundation.2010.AdminAccount
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.SharePoint.Foundation.2010.CommandExecuterDiscoveryDataSource Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$IntervaloEmSegundosIntervaloEmSegundos Propriedade do Provedor de Descoberta no ServiçoCompartilhadoSP. A frequência, em segundos, em que a Descoberta será executada, deve ter a duração suficiente para impedir a falha de Descoberta causada pela concorrência de recursos.
SyncTimestring$Config/SyncTime$TempoSincA propriedade TempoSinc (hora de início) de ProvedordeDescoberta em ServiçoCompartilhadoSP. TempoSinc é um valor de cadeia de caracteres no formato "HH:mm". A hora de TempoSinc, IntervaloEmSegundos e importação do Pacote de Gerenciamento juntos determinam a hora de execução exata de um determinado fluxo de trabalho. Por exemplo, se IntervaloEmSegundos = 21600 (6 horas) e TempoSinc = "01:15", a hora de execução possível do fluxo de trabalho é 1:15, 7:15, 1:15, 7:15; caso o Pacote de Gerenciamento seja importado após 1:15 mas antes de 7:15, ele começará às 7:15, se o Pacote de Gerenciamento for importado depois de 1:15, mas antes de 7:15, ele começará às 7:15. No entanto, devido a outros fatores, como atraso de rede, a hora de início real ainda poderá variar.
TimeoutSecondsint$Config/TimeoutSeconds$TempoLimiteemSegundosTempoLimiteemSegundos Propriedade do Provedor de Descoberta no ServiçoCompartilhadoSP. O valor Timeout deve ter a duração suficiente para encerrar a Descoberta necessária dos objetos, e deve ser menor do que IntervaloEmSegundos.
DebugTracebool$Config/DebugTrace$RastreamentodeDepuraçãoPropriedade RastreamentodeDepuração do Provedor de Descoberta em ServiçoCompartilhadoSP. O módulo Descoberta gravará o controle de depuração no Log de Eventos do Windows caso esse valor seja definido como verdadeiro.

Source Code:

<DataSourceModuleType ID="Microsoft.SharePoint.Server.2010.SPSharedService.DiscoveryProvider" Accessibility="Internal" RunAs="WSS!Microsoft.SharePoint.Foundation.2010.AdminAccount">
<Configuration>
<element xmlns="http://www.w3.org/2001/XMLSchema" name="ComputerName" type="xsd:string"/>
<element xmlns="http://www.w3.org/2001/XMLSchema" name="IntervalSeconds" type="xsd:integer"/>
<element xmlns="http://www.w3.org/2001/XMLSchema" name="SyncTime" type="xsd:string"/>
<element xmlns="http://www.w3.org/2001/XMLSchema" name="TimeoutSeconds" type="xsd:integer"/>
<element xmlns="http://www.w3.org/2001/XMLSchema" name="DebugTrace" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
<OverrideableParameter ID="DebugTrace" Selector="$Config/DebugTrace$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="WSS!Microsoft.SharePoint.Foundation.2010.CommandExecuterDiscoveryDataSource">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime>$Config/SyncTime$</SyncTime>
<ApplicationName/>
<WorkingDirectory/>
<CommandLine>powershell.exe -NoLogo -NoProfile -Noninteractive "&amp; '$file/MOSSSharedServiceDiscovery.ps1$' '$MPElement$' '$Target/Id$' '$Config/ComputerName$' '$Config/DebugTrace$'"</CommandLine>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>MOSSStrings.ps1</Name>
<Contents><Script>$global:EventLog_Fail_Create_Discovery_Package = "Failed to create Discovery transmission package.";
$global:EventLog_Fail_Return_Discovery_Package = "Failed to return Discovery transmission package.";
$global:EventLog_Fail_Create_Discovery_ScriptAPI = "Failed to initiate MOM.ScriptAPI object.";
$global:EventLog_Fail_Create_Class = "Failed to create {0} class instance.";
$global:EventLog_Fail_Create_Relationship = "Failed to create {0} relationship instance.";
$global:EventLog_Fail_LoadBalancer_Operation = "Addresses for this application may not have been fetched yet.";

$global:EventLog_Exit_On_NonExist = "This machine does not have SharePoint installed."
$global:EventLog_Fail_On_Error = "{0} Discovery/Monitoring script continues under this error! ";
$global:EventLog_Exit_On_Error = "{0} Discovery/Monitoring script was terminated! ";

$global:EventLog_Format = @"
Current User: {0}
Current PID: {1}
InvocationInfo.MyCommand: {2}
InvocationInfo.ScriptLineNumber: {3}
InvocationInfo.OffsetInLine: {4}
InvocationInfo.ScriptName: {5}
InvocationInfo.Line: {6}
InvocationInfo.PositionMessage: {7}
InvocationInfo.InvocationName: {8}
InvocationInfo.PipelineLength: {9}
InvocationInfo.PipelinePosition: {10}
"@;

$global:EventLog_Template = "[{0} in Discovery/Monitoring script] {1} {2}";

$global:EventLog_Debug_StartedArgs = "[Debug] {0} Started. Args[]={1}, {2}, {3}, {4}.";
$global:EventLog_Debug_MajorServer = "[Debug] This is the major server detected by {0}.";

$global:EventLog_Fail_Retrieve_RegistryKey = "Failed to retrieve registry key {0}.";
$global:DisplayName_SiteCollection = "Site Collection";

$global:DisplayName_TimerJob = "Timer Job";

$global:DisplayName_AdminComponentCollection = "Admin Component Collection";
$global:DisplayName_QueryComponentCollection = "Query Component Collection";
$global:DisplayName_CrawlComponentCollection = "Crawl Component Collection";
$global:DisplayName_PropertyStoreCollection = "Property Store Collection";
$global:DisplayName_CrawlStoreCollection = "Crawl Store Collection";
$global:DisplayName_SearchAdminComponent = "{0} (Name: {1})";
$global:DisplayName_SearchQueryComponent = "{0} (Index Partition ID: {1})";
$global:DisplayName_SearchCrawlComponent = "{0} (Crawl Database ID: {1})";
$global:DisplayName_SearchComponent_PerformedByAdmin = "{0} (Performed by Admin Component)";

$global:DisplayName_ProjectSiteObjectCollection = "Site Object Collection";
$global:DisplayName_Access_Page = "Access Page";
$global:DisplayName_Excel_Page = "Excel Services Application Page";
</Script></Contents>
</File>
<File>
<Name>MOSSDiscoveryLibrary.ps1</Name>
<Contents><Script>$error.Clear();
$ErrorActionPreference = "SilentlyContinue";

$global:EventObject = New-Object Diagnostics.EventLog
$global:EventObject.Source = "Operations Manager"

function global:Write-Event ([string] $LogContent, $LogType = [Diagnostics.EventLogEntryType]::Information)
{
if ($error)
{
$error.Clear()
$LogType = [Diagnostics.EventLogEntryType]::Error
}

$EventObject.WriteEntry($LogContent, $LogType)
}

function global:LogScriptTime($InvocationObj)
{
$dtEnd = [DateTime]::Now

$msg = @"
[Debug] {0} ended.
Current User: {1}
Current PID: {2}
start time: {3}
stop time: {4}
time taken: {5}
"@ -f $InvocationObj.MyCommand,
[Environment]::UserName,
$pid,
$dtStart,
$dtEnd,
(New-TimeSpan $dtStart $dtEnd).TotalMilliseconds

Write-Event $msg
}

.\MOSSStrings.ps1

$global:Arguments = $Args;

$global:Farm = $null;
$global:LocalServer = $null;
$global:DiscData = $null;
$global:Port = "_port";
$global:Http = "_http";

function global:Get-Farm()
{
if ($global:Farm -eq $null)
{

$global:Farm = [Microsoft.SharePoint.Administration.SPFarm]::Local;
}
}

function global:Get-LocalServer()
{
if ($global:LocalServer -eq $null)
{

$global:LocalServer = [Microsoft.SharePoint.Administration.SPServer]::Local;
}
}

function global:Get-ServiceProxy([string] $ClassType)
{
Get-Farm;
foreach ($ServiceProxy in $global:Farm.ServiceProxies)
{
if ($ClassType.ToLower() -eq $ServiceProxy.GetType().FullName.ToLower())
{
return $ServiceProxy;
}
}
return $null;
}

function global:Get-Service([string] $ClassType)
{
Get-Farm;
foreach ($Service in $global:Farm.Services)
{
if ($ClassType.ToLower() -eq $Service.GetType().FullName.ToLower())
{
return $Service;
}
}
return $null;
}

function global:Get-ServiceEx([string] $ClassType, [string] $Name)
{
Get-Farm;
foreach ($Service in $global:Farm.Services)
{
if ($ClassType.ToLower() -eq $ServiceInstance.GetType().FullName.ToLower())
{
if ($Name.ToLower() -eq $ServiceInstance.Name.ToLower())
{
return $ServiceInstance;
}
}
}
return $null;
}

function global:Get-ServiceInstance([string] $ClassType)
{
Get-LocalServer;

if (! $ClassType.EndsWith("Instance"))
{
$ClassType += "Instance";
}

foreach ($ServiceInstance in $global:LocalServer.ServiceInstances)
{
if ($ClassType.ToLower() -eq $ServiceInstance.GetType().FullName.ToLower())
{
return $ServiceInstance;
}
}
return $null;
}

function global:Get-ServiceInstanceEx([string] $ClassType, [string] $Name)
{
Get-LocalServer;

if (! $ClassType.EndsWith("Instance"))
{
$ClassType += "Instance";
}

foreach ($ServiceInstance in $global:LocalServer.ServiceInstances)
{
if ($ClassType.ToLower() -eq $ServiceInstance.GetType().FullName.ToLower())
{
if ($Name.ToLower() -eq $ServiceInstance.Name.ToLower())
{
return $ServiceInstance;
}
}
}
return $null;
}

function global:Create-DiscoveryData()
{
if ($global:DiscData -eq $null)
{
$global:DiscData = $global:MomScriptAPIObject.CreateDiscoveryData(0, $global:Arguments[0], $global:Arguments[1]);
Handle-Errors($global:EventLog_Fail_Create_Discovery_Package, $true, $false);

$global:HealthSvc = $global:DiscData.CreateClassInstance("$MPElement[Name='SC!Microsoft.SystemCenter.HealthService']$");
$global:HealthSvc.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
Handle-Errors($global:EventLog_Fail_Create_Class -f "Microsoft.SystemCenter.HealthService");
}
return $global:DiscData;
}

function global:Deliver-DiscoveryData([Object] $DiscData)
{
$global:MomScriptAPIObject.Return($DiscData);
Handle-Errors($global:EventLog_Fail_Return_Discovery_Package, $true, $false);
$DiscData = $null;
}

function global:IsMainServer([System.Boolean] $UseLastServer)
{
$Servers = $global:Farm.Servers;

if ($UseLastServer)
{
$Count = $Servers.Count;
$ServerArray = new-object string[][] $Count,2;
$Index = 0;

foreach ($Server in $Servers)
{
$ServerArray[$Index][0] = $Server.Name;
$ServerArray[$Index++][1] = $Server.Role.ToString();
}

for ($Index--; $Index -ge 0; $Index--)
{

if ($ServerArray[$Index][1] -ne "Invalid")
{
return ($ServerArray[$Index][0] -eq $global:LocalServer.Name);
}
}
}
else
{
foreach ($Server in $Servers)
{

if ($Server.Role -ne "Invalid")
{
return ($Server.Name -eq $global:LocalServer.Name);
}
}
}

return $false;
}

function global:Release-Resources()
{
$global:HashData = $null;
$global:DiscData = $null;
$global:HealthSvc = $null;
$global:MomScriptAPIObject = $null;

$global:WSSAssembly = $null;

$global:EventObject = $null;
$global:EventAssembly = $null;
}

function global:Handle-Errors([System.Object] $Arguments)
{
if (! $error)
{
return;
}

$ErrMsg = "";
$IsExit = $true;
$IsReturn = $true;
$IsLog = $true;

if ("System.String" -eq $Arguments.GetType().FullName)
{
$ErrMsg = $Arguments;
}
else
{
$ErrMsg = $Arguments[0];
$IsExit = $Arguments[1];
if ($Arguments.Count -gt 2)
{
$IsReturn = $Arguments[2];
}
if ("" -eq $ErrMsg)
{
$IsLog = $false;
}
}

if ($IsLog.Equals($true))
{
$ErrorString = "";
if ($IsExit.Equals($false))
{
$ErrorString = $global:EventLog_Fail_On_Error -f $ErrMsg;
}
else
{
$ErrorString = $global:EventLog_Exit_On_Error -f $ErrMsg;
}

$Exception = $error[$error.Count - 1];
if ($Exception.InvocationInfo -ne $null)
{
$ErrorString += ($global:EventLog_Format -f [Environment]::UserName, $pid, $Exception.InvocationInfo.MyCommand,
$Exception.InvocationInfo.ScriptLineNumber, $Exception.InvocationInfo.OffsetInLine, $Exception.InvocationInfo.ScriptName,
$Exception.InvocationInfo.Line, $Exception.InvocationInfo.PositionMessage, $Exception.InvocationInfo.InvocationName,
$Exception.InvocationInfo.PipelineLength, $Exception.InvocationInfo.PipelinePosition);
}

if ($null -ne $Exception.Exception)
{
$Exception = $Exception.Exception;
}
$InnerException = $Exception;
if ($null -ne $Exception.InnerException)
{
$InnerException = $Exception.InnerException;
}

$global:EventObject.WriteEntry(($global:EventLog_Template -f $InnerException.GetType().FullName, $ErrorString, $Exception.Message), [System.Diagnostics.EventLogEntryType]::Error);
}

if ($IsExit.Equals($true))
{
if ($IsReturn.Equals($true))
{
Deliver-DiscoveryData($global:DiscData);
}
Release-Resources;
break;
}

$error.Clear();
}

function global:GetDebugSetting($DebugTrace)
{

if ($DebugTrace.ToUpper() -eq "TRUE")
{
$global:Debug = $True;
}
else
{
$global:Debug = $False;
}

}

$global:MomScriptAPIObject = new-object -comObject "MOM.ScriptAPI";
Handle-Errors($global:EventLog_Fail_Create_Discovery_ScriptAPI, $true, $false);

$global:WSSAssembly = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint");
if ($null -eq $global:WSSAssembly)
{
throw $global:EventLog_Exit_On_NonExist;
}
Handle-Errors("", $true, $false);

if ($WSSAssembly.GetName().Version.Major -ne 14)
{
Release-Resources;
break;
}

function global:Get-SharePointExtensionsLocation()
{
$Location = "";

$LM = [Microsoft.Win32.Registry]::LocalMachine;
$Key = $LM.OpenSubKey("SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0");
if ($null -eq $Key)
{
Write-Event(($global:EventLog_Fail_Retrieve_RegistryKey -f "SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0"), [System.Diagnostics.EventLogEntryType]::Error);
}
else
{
$Location = $Key.GetValue("Location", "");
if ("" -eq $Location)
{
Write-Event(($global:EventLog_Fail_Retrieve_RegistryKey -f "SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Location"), [System.Diagnostics.EventLogEntryType]::Error);
}
}
return $Location;
}

function global:IsServingAsWebServer()
{
if (([Microsoft.SharePoint.Administration.SPServerRole]::SingleServer -eq $global:LocalServer.Role) -or ([Microsoft.SharePoint.Administration.SPServerRole]::WebFrontEnd -eq $global:LocalServer.Role))
{
return $true;
}
elseif ([Microsoft.SharePoint.Administration.SPServerRole]::Application -eq $global:LocalServer.Role)
{
$WebServiceInstance = [Microsoft.SharePoint.Administration.SPWebServiceInstance]::LocalContent;
if (($null -ne $WebServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $WebServiceInstance.Status))
{
return $true;
}
}

return $false;
}

function global:Get-ServiceTimerJobs([string] $ServiceTypeName)
{
$Service = Get-Service($ServiceTypeName);
if ($null -eq $Service)
{
return $null;
}

return $Service.JobDefinitions;
}

function global:IsLocalTimerServiceRunning()
{
$ServiceInstance = Get-ServiceInstance($global:SPTimer);

if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{
return $true;
}

return $false;
}

function global:Create-SiteCollectionEx([Object] $WebApp)
{
$DefaultZone = [Microsoft.SharePoint.Administration.SPUrlZone]::Default;
$AppPath = $WebApp.IisSettings[$DefaultZone].Path.ToString();
$Uri = $WebApp.GetResponseUri($DefaultZone).AbsoluteUri;
$Authentication = $WebApp.IisSettings[$DefaultZone].AuthenticationMode.ToString();
$WebAppName = $WebApp.DisplayName;

$SiteCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSiteCollection']$");
$SiteCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_SiteCollection);
$SiteCollection.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSiteCollection']/FarmID$", $global:FarmID);
$SiteCollection.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSiteCollection']/AppPath$", $AppPath);
$global:DiscData.AddInstance($SiteCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPWebApplication.SPSiteCollection"), $false);

$WebApplication = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']$");
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/FarmID$", $global:FarmID);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/AppPath$", $AppPath);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/ResponseUri$", $Uri);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/Name$", $WebAppName);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/Authentication$", $Authentication);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/AppPool$", $WebApp.ApplicationPool.Name);
$WebApplication.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication']/AppUser$", $WebApp.ApplicationPool.Username);

$global:DiscData.AddInstance($WebApplication);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPWebApplication"), $false);

$WebAppSiteCollRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.Contains.SPSiteCollection']$");
$WebAppSiteCollRel.Source = $WebApplication;
$WebAppSiteCollRel.Target = $SiteCollection;
$global:DiscData.AddInstance($WebAppSiteCollRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPWebApplication.Contains.SPSiteCollection"), $false);

return $SiteCollection;
}

$global:SPWebApp = "Microsoft.SharePoint.Administration.SPWebService";
$global:SPTimer = "Microsoft.SharePoint.Administration.SPTimerService";
$global:SPDatabase = "Microsoft.SharePoint.Administration.SPDatabaseService";
$global:OSForms = "Microsoft.Office.InfoPath.Server.Administration.FormsService";
$global:DCLoadBalancer = "Microsoft.Office.Server.Conversions.LoadBalancerService";
$global:DCLauncher = "Microsoft.Office.Server.Conversions.LauncherService";
$global:PJEvent = "Microsoft.Office.Project.Server.Administration.ProjectEventService";
$global:PJQueue = "Microsoft.Office.Project.Server.Administration.ProjectQueueService";
$global:ProfileSync = "Microsoft.Office.Server.Administration.ProfileSynchronizationService";

$global:SSAccess = "Microsoft.Office.Access.Server.MossHost.AccessServerWebService";
$global:SSExcel = "Microsoft.Office.Excel.Server.MossHost.ExcelServerWebService";
$global:SSPerfPoint = "Microsoft.PerformancePoint.Scorecards.BIMonitoringService";
$global:SSProject = "Microsoft.Office.Project.Server.Administration.PsiService";
$global:SSSearch = "Microsoft.Office.Server.Search.Administration.SearchService";
$global:SSSearchQnS = "Microsoft.Office.Server.Search.Administration.SearchQueryAndSiteSettingsService";
$global:SSSecureStore = "Microsoft.Office.SecureStoreService.Server.SecureStoreService";
$global:SSTaxonomy = "Microsoft.SharePoint.Taxonomy.MetadataWebService";
$global:SSUserProfile = "Microsoft.Office.Server.Administration.UserProfileService";
$global:SSVisio = "Microsoft.Office.Visio.Server.Administration.VisioGraphicsService";

$global:SSWordSvc = "Microsoft.Office.Word.Server.Service.WordService";

$global:MySiteTemplate = "SPSMSITEHOST";
$global:PWASiteTemplate = "PWA";

$global:PathAccessPage = "template\layouts\accsrv\modifyapplication.aspx";
$global:PathExcelPage = "template\layouts\xlviewer.aspx";

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceDiscovery.ps1</Name>
<Contents><Script>.\MOSSDiscoveryLibrary.ps1 $Args[0] $Args[1]

GetDebugSetting $Args[3]

if ($global:Debug) { $global:dtStart = [DateTime]::Now }
if ($global:Debug) { Write-Event($global:EventLog_Debug_StartedArgs -f $MyInvocation.MyCommand, $Args[0], $Args[1], $Args[2], $Args[3]) }

.\MOSSSharedServiceAccess.ps1
.\MOSSSharedServiceExcel.ps1
.\MOSSSharedServicePerfPoint.ps1
.\MOSSSharedServiceTaxonomy.ps1
.\MOSSSharedServiceProfile.ps1
.\MOSSSharedServiceSearch.ps1
.\MOSSSharedServiceSStore.ps1
.\MOSSSharedServiceVisio.ps1

.\MOSSSharedServiceWordSvc.ps1
.\MOSSSharedServiceProject.ps1

$global:FarmID = "";
$global:ComputerName = $Args[2];

$global:DiscData = Create-DiscoveryData;
Get-Farm;
Get-LocalServer;

if ($null -ne $global:Farm)
{
$global:HostServer = $global:LocalServer.Name;
$global:FarmID = $global:LocalServer.Farm.Id.ToString();

$global:WebExtensionsPath = Get-SharePointExtensionsLocation;
$global:IsWebServer = IsServingAsWebServer;

$MainWebServer = IsMainServer($true);

Create-AccessSharedServiceInstance;
Create-AccessPageComponentInstance;
Create-ExcelSharedServiceInstance;
Create-ExcelPageComponentInstance;
Create-SearchSharedServiceInstance;
Create-SearchQueryAndSettingInstance;
Create-SStoreSharedServiceInstance;
Create-TaxonomySharedServiceInstance;
Create-PerfPointSharedServiceInstance;
Create-UserProfileSharedServiceInstance;
Create-ProfileSyncServiceInstance;

Create-VisioSharedServiceInstance;

Create-WordSvcSharedServiceInstance;
Create-ProjectSharedServiceInstance;

if ($MainWebServer)
{
if ($global:Debug) { $global:EventLog_Debug_MajorServer -f $MyInvocation.MyCommand }

Create-AccessSharedService;
Create-ExcelSharedService;
Create-PerfPointSharedService;
Create-SearchSharedService;
Create-SStoreSharedService;
Create-TaxonomySharedService;
Create-UserProfileSharedService;
Create-VisioSharedService;

Create-WordSvcSharedService;
Create-ProjectSharedService;
}

}

Deliver-DiscoveryData($global:DiscData);

if ($global:Debug) { LogScriptTime($MyInvocation) }

Release-Resources;
</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceAccess.ps1</Name>
<Contents><Script>function global:Create-AccessPageComponentInstance()
{

if (("" -ne $global:WebExtensionsPath) -and ($global:IsWebServer))
{
$FullPath = $global:WebExtensionsPath + $global:PathAccessPage;
if ([System.IO.File]::Exists($FullPath))
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ComponentInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPComponentInstance.AccessPage']$");
$ComponentInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_Access_Page);
$ComponentInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/FarmID$", $global:FarmID);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/HostServer$", $global:HostServer);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/ComponentPath$", $FullPath);
$global:DiscData.AddInstance($ComponentInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPComponentInstance.AccessPage"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPComponentInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ComponentInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPComponentInstance"), $false);
}
}

}

function global:Create-AccessSharedService()
{

$Service = Get-Service($global:SSAccess);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Access']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.Access"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Access"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-AccessSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSAccess);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.Access']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.Access"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Access']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceExcel.ps1</Name>
<Contents><Script>function global:Create-ExcelPageComponentInstance()
{

if (("" -ne $global:WebExtensionsPath) -and ($global:IsWebServer))
{
$FullPath = $global:WebExtensionsPath + $global:PathExcelPage;
if ([System.IO.File]::Exists($FullPath))
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ComponentInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPComponentInstance.ExcelPage']$");
$ComponentInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_Excel_Page);
$ComponentInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/FarmID$", $global:FarmID);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/HostServer$", $global:HostServer);
$ComponentInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPComponentInstance']/ComponentPath$", $FullPath);
$global:DiscData.AddInstance($ComponentInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPComponentInstance.ExcelPage"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPComponentInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ComponentInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPComponentInstance"), $false);
}
}

}

function global:Create-ExcelSharedService()
{

$Service = Get-Service($global:SSExcel);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Excel']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.Excel"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Excel"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-ExcelSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSExcel);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.Excel']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.Excel"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Excel']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServicePerfPoint.ps1</Name>
<Contents><Script>function global:Create-PerfPointSharedService()
{

$Service = Get-Service($global:SSPerfPoint);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.PerformancePoint']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.PerformancePoint"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.PerformancePoint"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);

Create-PerfPointDatabase($App, $AppService);
}
}
}
}

}

function global:Create-PerfPointSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSPerfPoint);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.PerformancePoint']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.PerformancePoint"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.PerformancePoint"), $false);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

function global:Create-PerfPointDatabase([System.Object] $Applications)
{

$MOSSServiceApplication = $Applications[0];
$SCOMServiceApplication = $Applications[1];
if ($null -eq $MOSSServiceApplication)
{
break;
}

$PerfPointDatabaseId = $null;
$PerfPointDatabaseName = $null;
$ConnectionString = $MOSSServiceApplication.GetDatabaseConnectionString();
if (($null -eq $ConnectionString) -or ("" -eq $ConnectionString))
{
break;
}

$SPService = Get-Service($global:SPDatabase);
if ($null -ne $Service)
{
foreach ($DBInstance in $SPService.Instances)
{
foreach ($SPDatabase in $DBInstance.Databases)
{
if ($ConnectionString -eq $SPDatabase.DatabaseConnectionString)
{
$PerfPointDatabaseId = $SPDatabase.Id.ToString();
$PerfPointDatabaseName = $SPDatabase.Name;
break;
}
}
if ($null -ne $PerfPointDatabaseId)
{
break;
}
}
}

if ($null -ne $PerfPointDatabaseId)
{

$PerfPointDB = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint.Database']$");
$PerfPointDB.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $PerfPointDatabaseName);
$PerfPointDB.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/FarmID$", $global:FarmID);
$PerfPointDB.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/DatabaseID$", $PerfPointDatabaseId);
$PerfPointDB.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/ConnectionString$", $ConnectionString);
$global:DiscData.AddInstance($PerfPointDB);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.PerformancePoint.Database"), $false);

$ApplictionDatabaseRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.PerformancePoint.Contains.Database']$");
$ApplictionDatabaseRel.Source = $SCOMServiceApplication;
$ApplictionDatabaseRel.Target = $PerfPointDB;
$global:DiscData.AddInstance($ApplictionDatabaseRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.PerformancePoint.Contains.Database"), $false);
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceProfile.ps1</Name>
<Contents><Script>function global:Create-UserProfileSharedService()
{

$Service = Get-Service($global:SSUserProfile);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.UserProfile']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.UserProfile"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.UserProfile"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-UserProfileSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSUserProfile);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.UserProfile']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPServiceInstance.UserProfile"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}

if (IsLocalTimerServiceRunning)
{
Create-UserProfileTimerService;
}

}

}

function global:Create-ProfileSyncServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:ProfileSync);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ProfileSync']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPServiceInstance.ProfileSync"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

$Service = Get-Service($global:SSUserProfile);
foreach ($App in $Service.Applications)
{

if ($App.Id.ToString() -eq $ServiceInstance.UserProfileApplicationGuid.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}

}

function global:Create-UserProfileTimerService()
{

$TimerJobs = Get-ServiceTimerJobs($global:SSUserProfile);
if (($null -eq $TimerJobs) -or (0 -eq $TimerJobs.Count))
{
return;
}

$Service = Get-Service($global:SSUserProfile);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
foreach ($App in $Service.Applications)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.UserProfile']/Uri$", $App.Uri.ToString());

$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.UserProfile"), $false);

$Job = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPTimerJob.UserProfile']$");
$Job.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_TimerJob);
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/FarmID$", $global:FarmID);
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/TimerJobID$", $App.Id.ToString());
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/Title$", ("{0} ({1})" -f $global:DisplayName_TimerJob, $App.Name));
$global:DiscData.AddInstance($Job);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPTimerJob.UserProfile"), $false);

$JobApplicationJobRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPTimerJob']$");
$JobApplicationJobRel.Source = $AppService;
$JobApplicationJobRel.Target = $Job;
$global:DiscData.AddInstance($JobApplicationJobRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPTimerJob"), $false);

$JobInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPTimerJobInstance.UserProfile']$");
$JobInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:HostServer);
$JobInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/FarmID$", $global:FarmID);
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/TimerJobID$", $App.Id.ToString());
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/Title$", ("{0} ({1})" -f $global:DisplayName_TimerJob, $global:HostServer));
$global:DiscData.AddInstance($JobInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPTimerJobInstance.UserProfile"), $false);

$JobInstCollectInstRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob.Contains.SPTimerJobInstance']$");
$JobInstCollectInstRel.Source = $Job;
$JobInstCollectInstRel.Target = $JobInst;
$global:DiscData.AddInstance($JobInstCollectInstRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPTimerJob.Contains.SPTimerJobInstance"), $false);
}
}
}

}

function global:Create-MySiteHostCollection()
{

$ContentWeb = [Microsoft.SharePoint.Administration.SPWebService]::ContentService;

if (IsServingAsWebServer)
{
foreach ($WebApp in $ContentWeb.WebApplications)
{
$SiteCollection = $null;
foreach ($Site in $WebApp.Sites)
{
$RootWeb = $Site.RootWeb;
if ($null -ne $RootWeb)
{

if ($global:MySiteTemplate -eq $RootWeb.WebTemplate)
{
if ($null -eq $SiteCollection)
{
$SiteCollection = Create-SiteCollectionEx($WebApp);
}
Create-MySiteHost($Site, $SiteCollection);
}
}

$Site.Dispose();
}
}
}

}

function global:Create-MySiteHost([Object] $Objects)
{

$Site = $Objects[0];
$SiteCollection = $Objects[1];

if ($null -ne $Site)
{
$RootWeb = $Site.RootWeb;

$MySite = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSite.MySiteHost']$");
$MySite.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $RootWeb.Title);
$MySite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/FarmID$", $global:FarmID);
$MySite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Url$", $RootWeb.Url);
$MySite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Title$", $RootWeb.Title);
$MySite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Authentication$", $RootWeb.AuthenticationMode.ToString());
$global:DiscData.AddInstance($MySite);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSite.MySiteHost"), $false);

$SiteCollectionMyRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSiteCollection.Contains.SPSite']$");
$SiteCollectionMyRel.Source = $SiteCollection;
$SiteCollectionMyRel.Target = $MySite;
$global:DiscData.AddInstance($SiteCollectionMyRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPWebApplication.SPSiteCollection.Contains.SPSite"), $false);
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceSearch.ps1</Name>
<Contents><Script>function global:Create-SearchAdminComponent([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$AdminComponent = $App.AdminComponent;

$DNSComputerName = $AdminComponent.ServerName + $global:ComputerName.Substring($global:ComputerName.IndexOf("."));
$DisplayName = $global:DisplayName_SearchAdminComponent -f $AdminComponent.ServerName, $AdminComponent.Name;

$AdminComp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']$");
$AdminComp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$AdminComp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $DNSComputerName);
$AdminComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$AdminComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $AdminComponent.Name);
$AdminComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']/Initialized$", $AdminComponent.Initialized.ToString());
$AdminComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']/IndexLocation$", $AdminComponent.IndexLocation);

$global:DiscData.AddInstance($AdminComp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Admin"), $false);

$AppComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.AdminComponent']$");
$AppComponentRel.Source = $AppService;;
$AppComponentRel.Target = $AdminComp;
$global:DiscData.AddInstance($AppComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.AdminComponent"), $false);
}

function global:Create-SearchQueryComponents([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$TopologyCollection = $App.QueryTopologies;

$ActiveTopology = $TopologyCollection.ActiveTopology;
$QueryComponents = $ActiveTopology.QueryComponents;

$QueryCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.QueryCollection']$");
$QueryCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_QueryComponentCollection);
$QueryCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$QueryCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($QueryCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.QueryCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.QueryCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $QueryCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.QueryCollection"), $false);

foreach ($QueryComponent in $QueryComponents)
{

$DNSComputerName = $QueryComponent.ServerName + $global:ComputerName.Substring($global:ComputerName.IndexOf("."));
$DisplayName = $global:DisplayName_SearchQueryComponent -f $QueryComponent.ServerName, $QueryComponent.IndexPartitionId.ToString();

$QueryComp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']$");
$QueryComp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$QueryComp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $DNSComputerName);
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $QueryComponent.Id.ToString());
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/State$", $QueryComponent.State.ToString());
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/IndexPartitionID$", $QueryComponent.IndexPartitionId.ToString());
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/IsAdmin$", "False");

$global:DiscData.AddInstance($QueryComp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Query"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.QueryCollection.Contains.Query']$");
$CollectionComponentRel.Source = $QueryCollection;
$CollectionComponentRel.Target = $QueryComp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.QueryCollection.Contains.Query"), $false);
}
}

function global:Create-VirtualQueryComponent([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$AdminComponent = $App.AdminComponent;

$QueryCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.QueryCollection']$");
$QueryCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_QueryComponentCollection);
$QueryCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$QueryCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($QueryCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.QueryCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.QueryCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $QueryCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.QueryCollection"), $false);

$DNSComputerName = $AdminComponent.ServerName + $global:ComputerName.Substring($global:ComputerName.IndexOf("."));
$DisplayName = $global:DisplayName_SearchComponent_PerformedByAdmin -f $AdminComponent.ServerName;

$QueryComp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']$");
$QueryComp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$QueryComp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $DNSComputerName);
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $AdminComponent.Name);

$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/State$", "");
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/IndexPartitionID$", "");
$QueryComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/IsAdmin$", "True");
$global:DiscData.AddInstance($QueryComp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Query"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.QueryCollection.Contains.Query']$");
$CollectionComponentRel.Source = $QueryCollection;
$CollectionComponentRel.Target = $QueryComp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.QueryCollection.Contains.Query"), $false);
}

function global:Create-SearchCrawlComponents([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$TopologyCollection = $App.CrawlTopologies;

$ActiveTopology = $TopologyCollection.ActiveTopology;
$CrawlComponents = $ActiveTopology.CrawlComponents;

$CrawlCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlCollection']$");
$CrawlCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_CrawlComponentCollection);
$CrawlCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$CrawlCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($CrawlCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.CrawlCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.CrawlCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $CrawlCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.CrawlCollection"), $false);

foreach ($CrawlComponent in $CrawlComponents)
{

$DNSComputerName = $CrawlComponent.ServerName + $global:ComputerName.Substring($global:ComputerName.IndexOf("."));
$DisplayName = $global:DisplayName_SearchCrawlComponent -f $CrawlComponent.ServerName, $CrawlComponent.CrawlStoreId.ToString();

$CrawlComp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']$");
$CrawlComp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$CrawlComp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $DNSComputerName);
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $CrawlComponent.Id.ToString());
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/State$", $CrawlComponent.State.ToString());
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/CrawlStoreID$", $CrawlComponent.CrawlStoreId.ToString());
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/GatherDatabaseConnectionString$", $CrawlComponent.CrawlStore.Database.DatabaseConnectionString);
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/IsAdmin$", "False");

$global:DiscData.AddInstance($CrawlComp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Crawl"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlCollection.Contains.Crawl']$");
$CollectionComponentRel.Source = $CrawlCollection;
$CollectionComponentRel.Target = $CrawlComp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.CrawlCollection.Contains.Crawl"), $false);
}
}

function global:Create-VirtualCrawlComponent([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$AdminComponent = $App.AdminComponent;

$CrawlCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlCollection']$");
$CrawlCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_CrawlComponentCollection);
$CrawlCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$CrawlCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($CrawlCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.CrawlCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.CrawlCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $CrawlCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.CrawlCollection"), $false);

$DNSComputerName = $AdminComponent.ServerName + $global:ComputerName.Substring($global:ComputerName.IndexOf("."));
$DisplayName = $global:DisplayName_SearchComponent_PerformedByAdmin -f $AdminComponent.ServerName;

$CrawlComp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']$");
$CrawlComp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$CrawlComp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $DNSComputerName);
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $AdminComponent.Name);

$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/State$", "");
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/CrawlStoreID$", "");
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/GatherDatabaseConnectionString$", "");
$CrawlComp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/IsAdmin$", "True");
$global:DiscData.AddInstance($CrawlComp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Crawl"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlCollection.Contains.Crawl']$");
$CollectionComponentRel.Source = $CrawlCollection;
$CollectionComponentRel.Target = $CrawlComp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.CrawlCollection.Contains.Crawl"), $false);
}

function global:Create-SearchPropertyStores([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$Stores = $App.PropertyStores;

$StoreCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.PropertyStoreCollection']$");
$StoreCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_PropertyStoreCollection);
$StoreCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$StoreCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($StoreCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.PropertyStoreCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.PropertyStoreCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $StoreCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.PropertyStoreCollection"), $false);

foreach ($Store in $Stores)
{

$PropertyStore = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.PropertyStore']$");
$PropertyStore.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Store.Name);
$PropertyStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/FarmID$", $global:FarmID);
$PropertyStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/DatabaseID$", $Store.Id.ToString());
$PropertyStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/ConnectionString$", $Store.DatabaseConnectionString);
$global:DiscData.AddInstance($PropertyStore);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.PropertyStore"), $false);

$CollectionDatabaseRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.PropertyStoreCollection.Contains.PropertyStore']$");
$CollectionDatabaseRel.Source = $StoreCollection;
$CollectionDatabaseRel.Target = $PropertyStore;
$global:DiscData.AddInstance($CollectionDatabaseRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.PropertyStoreCollection.Contains.PropertyStore"), $false);
}
}

function global:Create-SearchCrawlStores([System.Object] $Apps)
{
$App = $Apps[0];
$AppService = $Apps[1];
$Stores = $App.CrawlStores;

$StoreCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlStoreCollection']$");
$StoreCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_CrawlStoreCollection);
$StoreCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$StoreCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $App.Id.ToString());
$global:DiscData.AddInstance($StoreCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.CrawlStoreCollection"), $false);

$ApplicationCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.Contains.CrawlStoreCollection']$");
$ApplicationCollectionRel.Source = $AppService;
$ApplicationCollectionRel.Target = $StoreCollection;
$global:DiscData.AddInstance($ApplicationCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.Contains.CrawlStoreCollection"), $false);

foreach ($Store in $Stores)
{

$CrawlStore = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlStore']$");
$CrawlStore.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Store.Name);
$CrawlStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/FarmID$", $global:FarmID);
$CrawlStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/DatabaseID$", $Store.Id.ToString());
$CrawlStore.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/ConnectionString$", $Store.DatabaseConnectionString);
$global:DiscData.AddInstance($CrawlStore);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search.CrawlStore"), $false);

$CollectionDatabaseRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search.CrawlStoreCollection.Contains.CrawlStore']$");
$CollectionDatabaseRel.Source = $StoreCollection;
$CollectionDatabaseRel.Target = $CrawlStore;
$global:DiscData.AddInstance($CollectionDatabaseRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Search.CrawlStoreCollection.Contains.CrawlStore"), $false);
}
}

function global:Create-SearchSharedService()
{

$Service = Get-Service($global:SSSearch);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.SearchApplications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Search']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']/ApplicationName$", $App.ApplicationName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Search"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);

if ($null -ne $App.AdminComponent)
{
Create-SearchAdminComponent($App, $AppService);
}

if (($null -ne $App.QueryTopologies) -and (0 -ne $App.QueryTopologies.Count))
{
if (($null -ne $App.QueryTopologies.ActiveTopology) -and (0 -ne $App.QueryTopologies.ActiveTopology.QueryComponents.Count))
{
Create-SearchQueryComponents($App, $AppService);
}
elseif (($null -ne $App.AdminComponent) -and ($true -eq $App.AdminComponent.Standalone))
{
Create-VirtualQueryComponent($App, $AppService);
}
}

if (($null -ne $App.CrawlTopologies) -and (0 -ne $App.CrawlTopologies.Count))
{
if (($null -ne $App.CrawlTopologies.ActiveTopology) -and (0 -ne $App.CrawlTopologies.ActiveTopology.CrawlComponents.Count))
{
Create-SearchCrawlComponents($App, $AppService);
}
elseif (($null -ne $App.AdminComponent) -and ($true -eq $App.AdminComponent.Standalone))
{
Create-VirtualCrawlComponent($App, $AppService);
}
}

if (($null -ne $App.PropertyStores) -and (0 -lt $App.PropertyStores.Count))
{
Create-SearchPropertyStores($App, $AppService);
}

if (($null -ne $App.CrawlStores) -and (0 -lt $App.CrawlStores.Count))
{
Create-SearchCrawlStores($App, $AppService);
}
}
}
}
}

}

function global:Create-SearchInstanceAdminComponents([System.Object] $Services)
{
$MOSSServiceInst = $Services[0];
$SCOMServiceInst = $Services[1];
$CollectionName = $Services[2];

$ComponentCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection']$");
$ComponentCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $CollectionName);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $CollectionName + $MOSSServiceInst.Id.ToString());
$global:DiscData.AddInstance($ComponentCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SSPService.ComponentCollection"), $false);

$ServiceCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch.Contains.ComponentCollection']$");
$ServiceCollectionRel.Source = $SCOMServiceInst;
$ServiceCollectionRel.Target = $ComponentCollection;
$global:DiscData.AddInstance($ServiceCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServiceInstance.ServerSearch.Contains.ComponentCollection"), $false);

foreach ($Component in $MOSSServiceInst.AdminComponents)
{

$DisplayName = $Component.ServerName + " (Name: " + $Component.Name + ")";

$Comp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']$");
$Comp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$Comp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $Component.Name);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']/Initialized$", $Component.Initialized.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Admin']/IndexLocation$", $Component.IndexLocation);
$global:DiscData.AddInstance($Comp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Admin"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection.Contains.Component']$");
$CollectionComponentRel.Source = $ComponentCollection;
$CollectionComponentRel.Target = $Comp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPService.ComponentCollection.Contains.Component"), $false);
}
}

function global:Create-SearchInstanceQueryComponents([System.Object] $Services)
{
$MOSSServiceInst = $Services[0];
$SCOMServiceInst = $Services[1];
$CollectionName = $Services[2];

$ComponentCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection']$");
$ComponentCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $CollectionName);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $CollectionName + $MOSSServiceInst.Id.ToString());
$global:DiscData.AddInstance($ComponentCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SSPService.ComponentCollection"), $false);

$ServiceCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch.Contains.ComponentCollection']$");
$ServiceCollectionRel.Source = $SCOMServiceInst;
$ServiceCollectionRel.Target = $ComponentCollection;
$global:DiscData.AddInstance($ServiceCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServiceInstance.ServerSearch.Contains.ComponentCollection"), $false);

foreach ($Component in $MOSSServiceInst.QueryComponents)
{

$DisplayName = $global:DisplayName_SearchQueryComponent -f $Component.ServerName, $Component.IndexPartitionId.ToString();

$Comp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']$");
$Comp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$Comp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $Component.Id.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/State$", $Component.State.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Query']/IndexPartitionID$", $Component.IndexPartitionId.ToString());
$global:DiscData.AddInstance($Comp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Query"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection.Contains.Component']$");
$CollectionComponentRel.Source = $ComponentCollection;
$CollectionComponentRel.Target = $Comp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPService.ComponentCollection.Contains.Component"), $false);
}
}

function global:Create-SearchInstanceCrawlComponents([System.Object] $Services)
{
$MOSSServiceInst = $Services[0];
$SCOMServiceInst = $Services[1];
$CollectionName = $Services[2];

$ComponentCollection = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection']$");
$ComponentCollection.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $CollectionName);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/FarmID$", $global:FarmID);
$ComponentCollection.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Collection']/CollectionID$", $CollectionName + $MOSSServiceInst.Id.ToString());
$global:DiscData.AddInstance($ComponentCollection);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SSPService.ComponentCollection"), $false);

$ServiceCollectionRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch.Contains.ComponentCollection']$");
$ServiceCollectionRel.Source = $SCOMServiceInst;
$ServiceCollectionRel.Target = $ComponentCollection;
$global:DiscData.AddInstance($ServiceCollectionRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServiceInstance.ServerSearch.Contains.ComponentCollection"), $false);

foreach ($Component in $MOSSServiceInst.CrawlComponents)
{
$DisplayName = $global:DisplayName_SearchCrawlComponent -f $Component.ServerName, $Component.CrawlStoreId.ToString();

$Comp = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']$");
$Comp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $DisplayName);
$Comp.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/FarmID$", $global:FarmID);
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Component']/ComponentID$", $Component.Id.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/State$", $Component.State.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/CrawlStoreID$", $Component.CrawlStoreId.ToString());
$Comp.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ServerSearch.Crawl']/GatherDatabaseConnectionString$", $Component.CrawlStore.Database.DatabaseConnectionString);
$global:DiscData.AddInstance($Comp);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.ServerSearch.Query"), $false);

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPService.ComponentCollection.Contains.Component']$");
$CollectionComponentRel.Source = $ComponentCollection;
$CollectionComponentRel.Target = $Comp;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPService.ComponentCollection.Contains.Component"), $false);
}
}

function global:Create-SearchSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSSearch);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$ServiceInst.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch']/Role$", $ServiceInstance.Role.ToString());
$ServiceInst.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearch']/DefaultIndexLocation$", $ServiceInstance.DefaultIndexLocation);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPServiceInstance.ServerSearch"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

if ($null -ne $ServiceInstance.AdminComponents)
{
Create-SearchInstanceAdminComponents($ServiceInstance, $ServiceInst, $global:DisplayName_AdminComponentCollection);
}

if ($null -ne $ServiceInstance.QueryComponents)
{
Create-SearchInstanceQueryComponents($ServiceInstance, $ServiceInst, $global:DisplayName_QueryComponentCollection);
}

if ($null -ne $ServiceInstance.CrawlComponents)
{
Create-SearchInstanceCrawlComponents($ServiceInstance, $ServiceInst, $global:DisplayName_CrawlComponentCollection);
}
}

}

function global:Create-SearchQueryAndSettingInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSSearchQnS);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.ServerSearchQnS']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPServiceInstance.ServerSearchQnS"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']/ApplicationName$", $App.ApplicationName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Search']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceSStore.ps1</Name>
<Contents><Script>function global:Create-SStoreSharedService()
{

$Service = Get-Service($global:SSSecureStore);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.SecureStore']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.SecureStore"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.SecureStore"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-SStoreSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSSecureStore);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.SecureStore']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.SecureStore"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.SecureStore']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceTaxonomy.ps1</Name>
<Contents><Script>function global:Create-TaxonomySharedService()
{

$TaxonomyApplicationTypeName = "Microsoft.SharePoint.Taxonomy.MetadataWebServiceApplication";

$Service = Get-Service($global:SSTaxonomy);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Taxonomy']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.Taxonomy"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Taxonomy"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-TaxonomySharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSTaxonomy);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.Taxonomy']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.Taxonomy"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Taxonomy']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Taxonomy"), $false);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceVisio.ps1</Name>
<Contents><Script>function global:Create-VisioSharedService()
{

$Service = Get-Service($global:SSVisio);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Visio']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.Visio"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Visio"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-VisioSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSVisio);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.Visio']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.Visio"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Visio']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

</Script></Contents>
</File>
<!-- Fix bug 597290, uncomment following block if we need to add WebAnalytics back later on -->
<!--<File>
<Name>MOSSSharedServiceWebAnalytics.ps1</Name>
<Contents />
</File>-->
<File>
<Name>MOSSSharedServiceWordSvc.ps1</Name>
<Contents><Script>function global:Create-WordSvcSharedService()
{

$Service = Get-Service($global:SSWordSvc);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.WordSvc']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.WordSvc"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.WordSvc"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);

Create-WordSvcDatabase($App, $AppService);
}
}
}
}

}

function global:Create-WordSvcSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSWordSvc);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.WordSvc']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.WordSvc"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.WordSvc"), $false);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}

if (IsLocalTimerServiceRunning)
{
Create-WordSvcTimerService;
}
}

}

function global:Create-WordSvcTimerService()
{

$TimerJobs = Get-ServiceTimerJobs($global:SSWordSvc);
if (($null -eq $TimerJobs) -or (0 -eq $TimerJobs.Count))
{
return;
}

$Service = Get-Service($global:SSWordSvc);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
foreach ($App in $Service.Applications)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc']/Uri$", $App.Uri.ToString());

$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.WordSvc"), $false);

$Job = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPTimerJob.WordSvc']$");
$Job.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:DisplayName_TimerJob);
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/FarmID$", $global:FarmID);
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/TimerJobID$", $App.Id.ToString());
$Job.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob']/Title$", ("{0} ({1})" -f $global:DisplayName_TimerJob, $App.Name));
$global:DiscData.AddInstance($Job);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPTimerJob.WordSvc"), $false);

$JobApplicationJobRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPTimerJob']$");
$JobApplicationJobRel.Source = $AppService;
$JobApplicationJobRel.Target = $Job;
$global:DiscData.AddInstance($JobApplicationJobRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPTimerJob"), $false);

$JobInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPTimerJobInstance.WordSvc']$");
$JobInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $global:HostServer);
$JobInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/FarmID$", $global:FarmID);
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/TimerJobID$", $App.Id.ToString());
$JobInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJobInstance']/Title$", ("{0} ({1})" -f $global:DisplayName_TimerJob, $global:HostServer));
$global:DiscData.AddInstance($JobInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPTimerJobInstance.WordSvc"), $false);

$JobInstCollectInstRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPTimerJob.Contains.SPTimerJobInstance']$");
$JobInstCollectInstRel.Source = $Job;
$JobInstCollectInstRel.Target = $JobInst;
$global:DiscData.AddInstance($JobInstCollectInstRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPTimerJob.Contains.SPTimerJobInstance"), $false);
}
}
}

}

function global:Create-WordSvcDatabase([System.Object] $Applications)
{

$SPWordSvcApplication = $Applications[0];
$WordSvcApplication = $Applications[1];
if ($null -eq $SPWordSvcApplication)
{
return;
}

$WordSvcDatabase = $SPWordSvcApplication.Database;
if ($null -eq $WordSvcDatabase)
{
return;
}

$QueueDatabase = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc.QueueDatabase']$");
$QueueDatabase.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $WordSvcDatabase.Name);
$QueueDatabase.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/FarmID$", $global:FarmID);
$QueueDatabase.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/DatabaseID$", $WordSvcDatabase.Id.ToString());
$QueueDatabase.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPDatabase']/ConnectionString$", $WordSvcDatabase.DatabaseConnectionString);
$global:DiscData.AddInstance($QueueDatabase);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.WordSvc.QueueDatabase"), $false);

$WordSvcAppDatabaseRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.WordSvc.Contains.QueueDatabase']$");
$WordSvcAppDatabaseRel.Source = $WordSvcApplication;
$WordSvcAppDatabaseRel.Target = $QueueDatabase;
$global:DiscData.AddInstance($WordSvcAppDatabaseRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.WordSvc.Contains.QueueDatabase"), $false);

}

</Script></Contents>
</File>
<File>
<Name>MOSSSharedServiceProject.ps1</Name>
<Contents><Script>function global:Create-ProjectSharedService()
{

$Service = Get-Service($global:SSProject);
if (($null -ne $Service) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $Service.Status))
{
$ServiceApps = $Service.Applications;
if (0 -lt $ServiceApps.Count)
{

$SSGroup = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']$");
$SSGroup.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup']/FarmID$", $global:FarmID);

$SService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedService.Project']$");
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/FarmID$", $global:FarmID);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/ServiceID$", $Service.Id.ToString());
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/TypeName$", $Service.GetType().FullName);
$SService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPService']/NotShared$", "False");
$SService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $Service.TypeName);
$global:DiscData.AddInstance($SService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedService.Project"), $false);

$SSGroupServiceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceGroup.Contains.SPSharedService']$");
$SSGroupServiceRel.Source = $SSGroup;
$SSGroupServiceRel.Target = $SService;
$global:DiscData.AddInstance($SSGroupServiceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceGroup.Contains.SPSharedService"), $false);

foreach ($App in $ServiceApps)
{
if ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $App.Status)
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSharedServiceApplication.Project"), $false);

$ServiceApplicationRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedService.Contains.SPSharedServiceApplication']$");
$ServiceApplicationRel.Source = $SService;
$ServiceApplicationRel.Target = $AppService;
$global:DiscData.AddInstance($ServiceApplicationRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedService.Contains.SPSharedServiceApplication"), $false);
}
}
}
}

}

function global:Create-ProjectSiteObjects([Object] $Objects)
{

$App = $Objects[0];
$AppService = $Objects[1];

$SiteObjects = $App.SiteCollection;
if (0 -eq $SiteObjects.Count)
{
return;
}

foreach ($SiteObject in $SiteObjects)
{
$ProjectSite = Get-SPSite($SiteObject.WebAppId.ToString(), $SiteObject.SiteId.ToString());

if ($null -ne $ProjectSite)
{
$RootWeb = $ProjectSite.RootWeb;

$PWASite = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSite.PWASite']$");
$PWASite.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $RootWeb.Title);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/FarmID$", $global:FarmID);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Url$", $RootWeb.Url);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Title$", $RootWeb.Title);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Authentication$", $RootWeb.AuthenticationMode.ToString());

$CollectionComponentRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSite.PWASite.Contains.SPSharedServiceApplication.Project']$");
$CollectionComponentRel.Source = $PWASite;
$CollectionComponentRel.Target = $AppService;
$global:DiscData.AddInstance($CollectionComponentRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSite.PWASite.Contains.SPSharedServiceApplication.Project"), $false);

$ProjectSite.Dispose();
}
}

}

function global:Get-SPSite([Object] $Inputs)
{
$SPSite = $null;
$WebAppId = $Inputs[0];
$SiteId = $Inputs[1];

$ContentWeb = [Microsoft.SharePoint.Administration.SPWebService]::ContentService;
foreach ($WebApp in $ContentWeb.WebApplications)
{
if ($WebApp.Id.ToString() -eq $WebAppId)
{
foreach ($Site in $WebApp.Sites)
{
if ($Site.Id.ToString() -eq $SiteId)
{
$SPSite = $Site;
break;
}

$Site.Dispose();
}
}
}
return $SPSite;
}

function global:Create-ProjectSharedServiceInstance()
{

$ServerInst = $global:DiscData.CreateClassInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']$");
$ServerInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/ComputerID$", $global:ComputerName);
$ServerInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer']/FarmID$", $global:FarmID);

$ServiceInstance = Get-ServiceInstance($global:SSProject);
if (($null -ne $ServiceInstance) -and ([Microsoft.SharePoint.Administration.SPObjectStatus]::Online -eq $ServiceInstance.Status))
{

$ServiceInst = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPServiceInstance.Project']$");
$ServiceInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $ServiceInstance.TypeName);
$ServiceInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $global:ComputerName);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/FarmID$", $global:FarmID);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/HostServer$", $global:HostServer);
$ServiceInst.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServiceInstance']/TypeName$", $ServiceInstance.GetType().FullName);
$global:DiscData.AddInstance($ServiceInst);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPService.Project"), $false);

$ServerServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPServer.Contains.SPServiceInstance']$");
$ServerServiceInstanceRel.Source = $ServerInst;
$ServerServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ServerServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPServer.Contains.SPServiceInstance"), $false);

foreach ($App in $ServiceInstance.Service.Applications)
{
foreach ($Instance in $App.ServiceInstances)
{
if ($ServiceInstance.Id.ToString() -eq $Instance.Id.ToString())
{

$AppService = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']$");
$AppService.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $App.Name);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/FarmID$", $global:FarmID);
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/ServiceApplicationID$", $App.Id.ToString());
$AppService.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication']/TypeName$", $App.GetType().FullName);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/ApplicationPool$", $App.ApplicationPool.Name);
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/ApplicationVersion$", $App.ApplicationVersion.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/IsShared$", $App.Shared.ToString());
$AppService.AddProperty("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSharedServiceApplication.Project']/Uri$", $App.Uri.ToString());
$global:DiscData.AddInstance($AppService);

$ApplicationServiceInstanceRel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPSharedServiceApplication.Contains.SPServiceInstance']$");
$ApplicationServiceInstanceRel.Source = $AppService;
$ApplicationServiceInstanceRel.Target = $ServiceInst;
$global:DiscData.AddInstance($ApplicationServiceInstanceRel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPSharedServiceApplication.Contains.SPServiceInstance"), $false);
}
}
}
}

}

function global:Create-PWASiteCollection()
{

$ContentWeb = [Microsoft.SharePoint.Administration.SPWebService]::ContentService;

if (IsServingAsWebServer)
{
foreach ($WebApp in $ContentWeb.WebApplications)
{
$SiteCollection = $null;
foreach ($Site in $WebApp.Sites)
{
$RootWeb = $Site.RootWeb;
if ($null -ne $RootWeb)
{

if ($global:PWASiteTemplate -eq $RootWeb.WebTemplate)
{
if (! $SiteCollection)
{
$SiteCollection = Create-SiteCollectionEx($WebApp);
}
$PWASiteInstance = Create-PWASite($Site, $SiteCollection);
}
}

$Site.Dispose();
}
}
}

}

function global:Create-PWASite([Object] $Objects)
{

$Site = $Objects[0];
$SiteCollection = $Objects[1];
$PWASiteInstance = $null;

if ($null -ne $Site)
{
$RootWeb = $Site.RootWeb;

$PWASite = $global:DiscData.CreateClassInstance("$MPElement[Name='Microsoft.SharePoint.Server.2010.SPSite.PWASite']$");
$PWASite.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $RootWeb.Title);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/FarmID$", $global:FarmID);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Url$", $RootWeb.Url);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Title$", $RootWeb.Title);
$PWASite.AddProperty("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSite']/Authentication$", $RootWeb.AuthenticationMode.ToString());
$global:DiscData.AddInstance($PWASite);
Handle-Errors(($global:EventLog_Fail_Create_Class -f "SPSite.PWASite"), $false);

$SiteCollectionPWARel = $global:DiscData.CreateRelationshipInstance("$MPElement[Name='WSS!Microsoft.SharePoint.Foundation.2010.SPWebApplication.SPSiteCollection.Contains.SPSite']$");
$SiteCollectionPWARel.Source = $SiteCollection;
$SiteCollectionPWARel.Target = $PWASite;
$global:DiscData.AddInstance($SiteCollectionPWARel);
Handle-Errors(($global:EventLog_Fail_Create_Relationship -f "SPWebApplication.SPSiteCollection.Contains.SPSite"), $false);
}

return $PWASiteInstance;
}

</Script></Contents>
</File>
</Files>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>