Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #########################################################
- ### AD Collect Info v.1.1.4
- ### Efimov (ge][) Gennady, http://gexeg.blogspot.com/
- #########################################################
- param(
- [string[]]$forestlist,
- [string]$resultfile,
- [string]$xslfile = "ad_report.xsl",
- [switch]$help
- )
- . ..\lib\adfunctions.ps1
- . ..\lib\FunctionImports.ps1
- ##------------------------------------------------
- [object[]]$script:a_forests = @()
- [object[]]$script:a_domains = @()
- [object[]]$script:a_subnets = @()
- [object[]]$script:a_sites = @()
- [object[]]$script:a_sitelinks = @()
- [object[]]$script:a_sitebridges = @()
- [object[]]$script:a_site_sitelinks = @()
- [object[]]$script:a_sitelinks_bridges = @()
- [object[]]$script:a_dcs = @()
- [object[]]$script:a_fsmo_forest = @()
- [object[]]$script:a_fsmo_domain = @()
- [object[]]$script:a_gcs = @()
- [object[]]$script:a_sysvol = @()
- [object[]]$script:a_appsnc = @()
- [object[]]$script:a_trusts = @()
- ##------------------------------------------------
- function help(){
- Write-Host "Efimov (ge][) Gennady, 2011"
- Write-Host "http://gexeg.blogspot.com/`n"
- Write-Host "Usage:`nad_audit.ps1 [-forestlist <array of string>] [-resultfile <String>] [-xslfile <String>] [-help]"
- }
- function parse(){
- if ($help){
- help
- exit
- }
- if (-not $forestList){
- $forestlist = @([system.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name)
- Set-Variable -Name "forestlist" -Scope 1 -Value $forestlist
- }
- if (-not $resultfile){
- $path = (Get-Item .).FullName
- $resultfile = Join-Path -Path $path -ChildPath ("{0}_{1}.xml" -f "ad_report",[System.DateTime]::Now.ToString("ddMMyyyy-hh.mm.ss"))
- Set-Variable -Name "resultfile" -Scope 1 -Value $resultfile
- }
- }
- function GetForestInfo($forest){
- $forestObj = New-Object System.Object
- $forestObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $forest.RootDomain.Name
- $forestObj | Add-Member -Name "ForestMode" -MemberType NoteProperty -Value $forest.ForestMode.ToString()
- $forestObj | Add-Member -Name "SchemaVersion" -MemberType NoteProperty -Value $forest.Schema.GetDirectoryEntry().PSBase.Properties.Item("ObjectVersion").ToString()
- $script:a_forests += $forestObj
- }
- function GetForestFSMO($forest){
- $forestFSMOObj = New-Object System.Object
- $forestFSMOObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $forestFSMOObj | Add-Member -Name "DNMaster" -MemberType NoteProperty -Value $forest.NamingRoleOwner.Name
- $forestFSMOObj | Add-Member -Name "SchemaMaster" -MemberType NoteProperty -Value $forest.SchemaRoleOwner.Name
- $script:a_fsmo_forest += $forestFSMOObj
- }
- function GetDomainInfo($forest){
- $forest.Domains | foreach {
- $domain = $_
- $domainObj = New-Object System.Object
- $domainObj | Add-Member -Name "DnsName" -MemberType NoteProperty -Value $domain.Name
- $dcNC = $domain.GetDirectoryEntry().distinguishedName
- $configNC = GetConfigNC -BindName ($forest.RootDomain.FindDomainController().Name)
- $NCObj = GetObjects2 -root "LDAP://CN=Partitions,$configNC" -filter "(&(objectClass=crossRef)(nCName=$dcNC)(nETBIOSName=*))" -attrs "nETBIOSName"
- $compsObj = GetObjects2 -root "LDAP://$dcNC" -filter "(&(objectClass=computer)(sAMAccountName=*))" -attrs ""
- $userObj = GetObjects2 -root "LDAP://$dcNC" -filter "(&(objectClass=user)(objectCategory=user)(sAMAccountName=*))" -attrs ""
- $domainObj | Add-Member -Name "NetBIOSName" -MemberType NoteProperty -Value ($NCObj.Properties["netbiosname"][0])
- $domainObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $domain.Forest.Name
- $domainObj | Add-Member -Name "DomainMode" -MemberType NoteProperty -Value $domain.DomainMode.ToString()
- $domainObj | Add-Member -Name "ComputerNum" -MemberType NoteProperty -Value $compsObj.Count
- $domainObj | Add-Member -Name "UserNum" -MemberType NoteProperty -Value $userObj.Count
- $domainObj | Add-Member -Name "DBSize" -MemberType NoteProperty -Value 0
- $script:a_domains += $domainObj
- }
- }
- function GetDomainFSMO($forest){
- foreach($domain in $forest.Domains){
- $domainFSMOObj = New-Object System.Object
- $domainFSMOObj | Add-Member -Name "DomainName" -MemberType NoteProperty -Value $domain.Name
- $domainFSMOObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $domainFSMOObj | Add-Member -Name "PDCMaster" -MemberType NoteProperty -Value $domain.PdcRoleOwner.Name
- $domainFSMOObj | Add-Member -Name "RIDMaster" -MemberType NoteProperty -Value $domain.RidRoleOwner.Name
- $domainFSMOObj | Add-Member -Name "InfrMaster" -MemberType NoteProperty -Value $domain.InfrastructureRoleOwner.Name
- $script:a_fsmo_domain += $domainFSMOObj
- }
- }
- function GetSubnetInfo($forest){
- $forest.Sites | foreach {
- foreach ($subnet in $_.Subnets){
- $subnetObj = New-Object System.Object
- $subnetObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $subnet.Name
- $subnetObj | Add-Member -Name "Description" -MemberType NoteProperty -Value $subnet.Location
- $subnetObj | Add-Member -Name "SiteName" -MemberType NoteProperty -Value $subnet.Site.Name
- $subnetObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $script:a_subnets += $subnetObj
- }
- }
- }
- function GetSiteInfo($forest){
- foreach ($site in $forest.Sites){
- if ($site.IntraSiteReplicationSchedule){
- $schStr = ScheduleToString -timespan_arr (GetScheduleInfo -schedule $site.IntraSiteReplicationSchedule)
- }
- else {
- $schStr = "N/A"
- }
- $siteObj = New-Object System.Object
- $siteObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $site.Name
- $siteObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $siteObj | Add-Member -Name "Schedule" -MemberType NoteProperty -Value $schStr
- $siteObj | Add-Member -Name "ISTG" -MemberType NoteProperty -Value $site.InterSiteTopologyGenerator.Name
- $siteObj | Add-Member -Name "Options" -MemberType NoteProperty `
- -Value ("0x" + ([int]$site.Options).ToString("X") + " (" + (GetSiteOptionInfo -siteOption $site.Options) + ")")
- $siteObj | Add-Member -Name "UGMC" -MemberType NoteProperty `
- -Value (($site.Options -band [System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteOptions]::GroupMembershipCachingEnabled) -eq `
- [System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteOptions]::GroupMembershipCachingEnabled)
- $ugmc_site = GetUGMCSite -site $site.GetDirectoryEntry()
- if ($ugmc_site) {
- $ugmc_siteStr = $ugmc_site.distinguishedName.ToString()
- } else {
- $ugmc_siteStr = "<Default>"
- }
- $siteObj | Add-Member -Name "UGMC_GC" -MemberType NoteProperty -Value $ugmc_siteStr
- $script:a_sites += $siteObj
- }
- }
- function GetSiteLinksInfo($forest){
- $DCName = $forest.RootDomain.FindDomainController().Name
- $configNC = GetConfigNC -BindName $DCName
- foreach($transport in @("IP","SMTP")){
- $sitelinks_list = GetObjects2 -root "LDAP://CN=$transport,CN=Inter-Site Transports,CN=Sites,$configNC" `
- -filter "(objectClass=siteLink)" -attrs "name"
- $transportType = $null
- if (-not $sitelinks_list) {continue}
- foreach($search in $sitelinks_list){
- if ($transport -eq "IP"){
- $transportType = [System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType]::Rpc
- }
- else{
- $transportType = [System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType]::Smtp
- }
- $siteLink = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLink]::FindByName(`
- (GetForestContext -forestName $forest.Name), $search.Properties["name"][0], $transportType)
- if ($siteLink.InterSiteReplicationSchedule) {
- $schStr = ScheduleToString -timespan_arr (GetScheduleInfo -schedule $siteLink.InterSiteReplicationSchedule)
- }
- else {
- $schStr = "N/A"
- }
- $siteLinkObj = New-Object System.Object
- $siteLinkObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $siteLink.Name
- $siteLinkObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $siteLinkObj | Add-Member -Name "Transport" -MemberType NoteProperty -Value $transport
- $siteLinkObj | Add-Member -Name "Cost" -MemberType NoteProperty -Value $siteLink.Cost
- $siteLinkObj | Add-Member -Name "Schedule" -MemberType NoteProperty -Value $schStr
- $siteLinkObj | Add-Member -Name "Options" -MemberType NoteProperty -Value (GetSiteLinkOptions -sitelink $siteLink)
- $siteLinkObj | Add-Member -Name "ReplicationInterval" -MemberType NoteProperty -Value $siteLink.ReplicationInterval.ToString()
- $script:a_sitelinks += $siteLinkObj
- foreach($site in $siteLink.Sites){
- $siteSiteLinkObj = New-Object System.Object
- $siteSiteLinkObj | Add-Member -Name "Site" -MemberType NoteProperty -Value $site.Name
- $siteSiteLinkObj | Add-Member -Name "SiteLink" -MemberType NoteProperty -Value $siteLink.Name
- $siteSiteLinkObj | Add-Member -Name "Transport" -MemberType NoteProperty -Value $transport
- $siteSiteLinkObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $script:a_site_sitelinks += $siteSiteLinkObj
- }
- }
- }
- }
- function GetBridgeInfo($forest){
- $DCName = $forest.RootDomain.FindDomainController().Name
- $configNC = GetConfigNC -BindName $DCName
- foreach($transport in @("IP","SMTP")){
- $bridgelinks_list = GetObjects2 -root "LDAP://CN=$transport,CN=Inter-Site Transports,CN=Sites,$configNC" `
- -filter "(objectClass=siteLinkBridge)" -attrs "name"
- $transportType = $null
- if (-not $bridgelinks_list){ continue }
- foreach($search in $bridgelinks_list){
- if ($transport -eq "IP"){
- $transportType = [System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType]::Rpc
- }
- else{
- $transportType = [System.DirectoryServices.ActiveDirectory.ActiveDirectoryTransportType]::Smtp
- }
- $bridgeLink = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySiteLinkBridge]::FindByName(`
- (GetForestContext -forestName $forest.Name), $search.Properties["name"][0], $transportType)
- $bridgeLinkObj = New-Object System.Object
- $bridgeLinkObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $bridgeLink.Name
- $bridgeLinkObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $bridgeLinkObj | Add-Member -Name "Transport" -MemberType NoteProperty -Value $transport
- $script:a_sitebridges += $bridgeLinkObj
- foreach($sitelink in $bridgeLink.SiteLinks){
- $bridgeSiteLinkObj = New-Object System.Object
- $bridgeSiteLinkObj | Add-Member -Name "Bridge" -MemberType NoteProperty -Value $bridgeLink.Name
- $bridgeSiteLinkObj | Add-Member -Name "SiteLink" -MemberType NoteProperty -Value $sitelink.Name
- $bridgeSiteLinkObj | Add-Member -Name "Transport" -MemberType NoteProperty -Value $transport
- $bridgeSiteLinkObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $script:a_sitelinks_bridges += $bridgeSiteLinkObj
- }
- }
- }
- }
- function GetDCType($dcDE){
- $ntdsObj = $dcDE.PSBase.Children.PSBase.Find("CN=NTDS Settings","nTDSDSA")
- if ($ntdsObj -and $ntdsObj.PSBase.Properties.Item("objectCategory")){
- if ($ntdsObj.PSBase.Properties.Item("objectCategory").Value.ToString() -like "CN=NTDS-DSA,CN=Schema,CN=Configuration,DC=*"){
- return "RwDC"
- }
- elseif ($ntdsObj.PSBase.Properties.Item("objectCategory").Value.ToString() -eq "CN=NTDS-DSA-RO,CN=Schema,CN=Configuration,DC=*"){
- return "RoDC"
- }
- }
- return "-"
- }
- function GetDcNTDSDBPath($DCName){
- $key = GetRemoteRegistryKey -machine $DCName -hive LocalMachine `
- -subPath "SYSTEM\CurrentControlSet\Services\NTDS\Parameters"
- if ($key){
- $value = GetKeyValue -regKey $key -valueName "DSA Database file"
- return $value
- }
- return "-"
- }
- function GetDcNTDSDBSize($DCName, $path){
- $file = new-object System.IO.FileInfo("\\{0}\{1}" -f $DCName,$path.Replace(":","`$"))
- return [System.Math]::Round($file.Length/1MB, 1)
- }
- function GetDcNTDSLogPath($DCName){
- $key = GetRemoteRegistryKey -machine $DCName -hive LocalMachine `
- -subPath "SYSTEM\CurrentControlSet\Services\NTDS\Parameters"
- if ($key){
- $value = GetKeyValue -regKey $key -valueName "Database log files path"
- return $value
- }
- return "-"
- }
- function GetSysVolSize($DCName, $sysvolPath){
- trap{
- Out-Host $_.ToString()
- continue
- }
- $dir = New-Object System.IO.DirectoryInfo("\\{0}\{1}" -f $DCName,$sysvolPath.Replace(":","`$"))
- $DirSize = 0
- foreach($file in [system.IO.Directory]::GetFiles($dir.FullName, "*.*", [System.IO.SearchOption]::AllDirectories)){
- $fileInfo = New-Object SYstem.IO.FileInfo($file)
- $DirSize += $fileInfo.Length
- }
- return $DirSize
- }
- function GetDcSysvolPath($DCDe){
- $compObj = [adsi]"LDAP://$($DCDe.serverReference)"
- $sysvolObj = [adsi]"LDAP://CN=Domain System Volume (SYSVOL share),CN=NTFRS Subscriptions,$($compObj.distinguishedName)"
- #$compObj.PSBase.Children.PSBase.Find("CN=NTFRS Subscriptions","nTFRSSubscriptions").PSBase.Children.PSBase.Find("CN=Domain System Volume (SYSVOL share)","nTFRSSubscriber")
- if ($sysvolObj -and $sysvolObj.PSBase.Properties.Item("fRSRootPath")){
- return $sysvolObj.PSBase.Properties.Item("fRSRootPath").Value.ToString()
- }
- $sysvolObj = [adsi]"LDAP://CN=SYSVOL Subscription,CN=Domain System Volume,CN=DFSR-LocalSettings,$($compObj.distinguishedName)"
- if ($sysvolObj -and $sysvolObj.PSBase.Properties.Item("msDFSR-RootPath")){
- return $sysvolObj.PSBase.Properties.Item("msDFSR-RootPath").Value.ToString()
- }
- return "-"
- }
- function GetDCInfo($forest){
- foreach($domain in $forest.Domains){
- foreach ($DC in $domain.DomainControllers){
- $dcObj = New-Object System.Object
- $dcObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $DC.Name
- $dcObj | Add-Member -Name "DomainName" -MemberType NoteProperty -Value $domain.Name
- $dcObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $dcObj | Add-Member -Name "SiteName" -MemberType NoteProperty -Value $DC.Sitename
- $sysvolPath = GetDcSysvolPath -DCDe $DC.GetDirectoryEntry()
- if ($sysvolPath.StartsWith("\\?\")) {
- $dcObj | Add-Member -Name "SysvolType" -MemberType NoteProperty -Value "DFSR"
- $sysvolPath = $sysvolPath.Replace("\\?\","")
- }
- else{
- $dcObj | Add-Member -Name "SysvolType" -MemberType NoteProperty -Value "FRS"
- }
- $dcObj | Add-Member -Name "SysVolPath" -MemberType NoteProperty -Value $sysvolPath
- $dcObj | Add-Member -Name "Type" -MemberType NoteProperty -Value (GetDCType -dcDE $DC.GetDirectoryEntry())
- if (-not $?){
- $script:a_dcs += $dcObj
- continue
- }
- $dbpath = GetDcNTDSDBPath -dcName $DC.name
- $dcObj | Add-Member -Name "DBPath" -MemberType NoteProperty -Value $dbpath
- $dcObj | Add-Member -Name "DBSize" -MemberType NoteProperty -Value ((GetDcNTDSDBSize -DCName $DC.name -path $dbpath).ToString() + "MB")
- $dcObj | Add-Member -Name "LogPath" -MemberType NoteProperty -Value (GetDcNTDSLogPath -DCName $DC.Name)
- $sysvolSize = GetSysVolSize -DCName $DC.name -sysvolPath $sysvolPath
- $dcObj | Add-Member -Name "SysVolSize" -MemberType NoteProperty -Value (([system.Math]::Round($sysvolSize/1MB,1)).ToString()+"MB")
- $script:a_dcs += $dcObj
- }
- }
- }
- function GetGCInfo($forest){
- foreach($gc in $forest.GlobalCatalogs){
- $gcObj = New-Object System.Object
- $gcObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $gc.Name
- $gcObj | Add-Member -Name "DomainName" -MemberType NoteProperty -Value $gc.Domain.Name
- $gcObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $gc.Forest.Name
- $gcObj | Add-Member -Name "SiteName" -MemberType NoteProperty -Value $gc.SiteName
- $script:a_gcs += $gcObj
- }
- }
- function GetAppsNCInfo($forest){
- foreach($appNC in $forest.ApplicationPartitions){
- foreach($dc in $appNC.DirectoryServers){
- $appObj = New-Object System.Object
- $appObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $appNC.Name
- $appObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $appObj | Add-Member -Name "DC" -MemberType NoteProperty -Value $dc.Name
- $script:a_appsnc += $appObj
- }
- }
- }
- function GetTrustsInfo($forest){
- foreach($trust in $forest.GetAllTrustRelationships()){
- $trustObj = New-Object System.Object
- $trustObj | Add-Member -Name "SourceName" -MemberType NoteProperty -Value $trust.SourceName
- $trustObj | Add-Member -Name "TargetName" -MemberType NoteProperty -Value $trust.TargetName
- $trustObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $trustObj | Add-Member -Name "Direction" -MemberType NoteProperty -Value $trust.TrustDirection.ToString()
- $trustObj | Add-Member -Name "Type" -MemberType NoteProperty -Value $trust.TrustType.ToString()
- $trustObj | Add-Member -Name "Options" -MemberType NoteProperty -Value (GetTrustOptions -trust $trust)
- $trustObj | Add-Member -Name "SelectAuth" -MemberType NoteProperty -Value $forest.GetSelectiveAuthenticationStatus($trust.TargetName).ToString()
- $trustObj | Add-Member -Name "SidFiltering" -MemberType NoteProperty -Value $forest.GetSidFilteringStatus($trust.TargetName).ToString()
- #$ForestTrust = $forest.GetTrustRelationship($trust.TargetName)
- #$trustObj | Add-Member -Name "ExclTopNames" -MemberType NoteProperty -Value ([System.String]::Join(",",$ForestTrust.ExcludedTopLevelNames))
- #$trustObj | Add-Member -Name "TopNames" -MemberType NoteProperty -Value ([System.String]::Join(",",$ForestTrust.TopLevelNames))
- $script:a_trusts += $trustObj
- }
- foreach($domain in $forest.Domains){
- foreach($trust in $domain.GetAllTrustRelationships()){
- $trustObj = New-Object System.Object
- $trustObj | Add-Member -Name "SourceName" -MemberType NoteProperty -Value $trust.SourceName
- $trustObj | Add-Member -Name "TargetName" -MemberType NoteProperty -Value $trust.TargetName
- $trustObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.Name
- $trustObj | Add-Member -Name "Direction" -MemberType NoteProperty -Value $trust.TrustDirection.ToString()
- $trustObj | Add-Member -Name "Type" -MemberType NoteProperty -Value $trust.TrustType.ToString()
- $trustObj | Add-Member -Name "Options" -MemberType NoteProperty -Value (GetTrustOptions -trust $trust)
- $trustObj | Add-Member -Name "SelectAuth" -MemberType NoteProperty -Value $domain.GetSelectiveAuthenticationStatus($trust.TargetName).ToString()
- $trustObj | Add-Member -Name "SidFiltering" -MemberType NoteProperty -Value $domain.GetSidFilteringStatus($trust.TargetName).ToString()
- $script:a_trusts += $trustObj
- }
- }
- }
- parse
- Write-Host "Запуск сбора информации"
- $forestList | foreach {
- $forest = GetForest -forestname $_
- Write-Host "Лес $forest :"
- Write-Host "Собираем сведения о лесе"
- GetForestInfo -forest $forest
- Write-Host "Собираем сведения о доменах"
- GetDomainInfo -forest $forest
- Write-Host "Собираем сведения о подсетях"
- GetSubnetInfo -forest $forest
- Write-Host "Собираем сведения о сайтах"
- GetSiteInfo -forest $forest
- Write-Host "Собираем сведения о связях сайтов"
- GetSiteLinksInfo -forest $forest
- Write-Host "Собираем сведения о мостах связей сайтов"
- GetBridgeInfo -forest $forest
- Write-Host "Собираем сведения о контроллерах доменов"
- GetDCInfo -forest $forest
- Write-Host "Собираем сведения о FSMO ролях"
- GetForestFSMO -forest $forest
- GetDomainFSMO -forest $forest
- Write-Host "Собираем сведения о серверах глобального каталога"
- GetGCInfo -forest $forest
- Write-Host "Собираем сведения о разделах приложений"
- GetAppsNCInfo -forest $forest
- Write-Host "Собираем сведения о доверительных отношениях"
- GetTrustsInfo -forest $forest
- Write-Host "--------------------------------------------"
- }
- $report = New-Object System.Object
- $report | Add-Member -Name "Forests" -MemberType NoteProperty -Value $script:a_forests
- $report | Add-Member -Name "Domains" -MemberType NoteProperty -Value $script:a_domains
- $report | Add-Member -Name "Sites" -MemberType NoteProperty -Value $script:a_sites
- $report | Add-Member -Name "Subnets" -MemberType NoteProperty -Value $script:a_subnets
- $report | Add-Member -Name "SiteLinks" -MemberType NoteProperty -Value $script:a_sitelinks
- $report | Add-Member -Name "SiteSitelinks" -MemberType NoteProperty -Value $script:a_site_sitelinks
- $report | Add-Member -Name "SiteBridges" -MemberType NoteProperty -Value $script:a_sitebridges
- $report | Add-Member -Name "LinkBridges" -MemberType NoteProperty -Value $script:a_sitelinks_bridges
- $report | Add-Member -Name "DCs" -MemberType NoteProperty -Value $script:a_dcs
- $report | Add-Member -Name "ForestFSMOs" -MemberType NoteProperty -Value $script:a_fsmo_forest
- $report | Add-Member -Name "DomainFSMOs" -MemberType NoteProperty -Value $script:a_fsmo_domain
- $report | Add-Member -Name "GCs" -MemberType NoteProperty -Value $script:a_gcs
- $report | Add-Member -Name "Apps" -MemberType NoteProperty -Value $script:a_appsnc
- $report | Add-Member -Name "Trusts" -MemberType NoteProperty -Value $script:a_trusts
- $report | Export-Clixml $resultfile
- $xmlstr = Get-Content $resultfile
- $xmlstr = "<?xml version=`"1.0`"?>`n`r<?xml-stylesheet type=`"text/xsl`" href=`"$xslfile`"?>`n`r" + $xmlstr
- Set-Content -Path $resultfile -Encoding UTF8 -Value $xmlstr
Advertisement
Add Comment
Please, Sign In to add comment