filimonic

(UNTESTED) Remote PC data example

Dec 17th, 2019
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $local:reportElementList = @()
  2. foreach ($local:computer in $local:ComputerList)
  3. {
  4.     $local:reportElement = New-Object -TypeName 'PSObject' -Property @{
  5.         'ComputerName' = $local:computer.DNSHostName;
  6.         'ReportData' = $null;
  7.         'Exception' = $null;
  8.         }
  9.  
  10.     try {
  11.  
  12.         $local:reportElement.ReportData = Invoke-Command -ErrorAction Stop -ComputerName $local:reportElementList.ComputerName -ScriptBlock {
  13. <# SCRIPTBLOCK BEGIN #>
  14.             $local:reportCollection = @()
  15.             $local:instanceList = @(<# Как ты там инстансы получаешь #> )
  16.             $local:wmiComputer = Get-WmiObject -Class 'Win32_ComputerSystem' -ErrorAction Stop
  17.             $local:hardwareData = @{
  18.                 'HostName' = $env:COMPUTERNAME
  19.                 'TotalPhysicalMemory' =  $local:wmiComputer.TotalPhysicalMemory
  20.                 'NumberOfLogicalProcessors' = $local:wmiComputer.NumberOfLogicalProcessors  
  21.                 <# ..... #>
  22.                 }
  23.             foreach ($local:instance in $local:instanceList)
  24.             {
  25.                 $local:instanceData = @{
  26.                     'Instance' = 'SampleInstance'<# ... как ты там данные по инстансу берешь #>
  27.                     'Version' =  'SampleVersion'<# ... как ты там данные по инстансу берешь #>
  28.                     <# ..... #>
  29.                 }
  30.                 $local:reportCollectionItem = New-Object -TypeName 'PSObject' -Property ($local:hardwareData + $local:instanceData) -ErrorAction Stop
  31.                 $local:reportCollection += @( $local:reportCollectionItem )
  32.             }
  33.         return $local:reportCollection;
  34. <# SCRIPTBLOCK END #> }
  35.     }
  36.     catch
  37.     {
  38.         $local:reportElement.Exception = $_.Exception
  39.     }
  40.     $local:reportElementList += @( $local:reportElement )
  41. }
  42.  
  43.  
  44. # ВЫВОД
  45. # Все компы где не удалось получить данные или при получении были ошибки
  46. $local:reportElementList |
  47.     Where-Object { $_.Exception -ne $null } |
  48.     Select-Object @('ComputerName', 'Exception') |
  49.     Out-GridView
  50.  
  51. # Все компы где удалось получить данные, но инстансов было найдено 0
  52. $local:reportElementList |
  53.     Where-Object { $_.Exception -eq $null } |
  54.     Where-Object { ( $_.ReportData -eq $null ) -or ($_.ReportData.Count -eq 0) } |
  55.     Select-Object @('ComputerName') |
  56.     Out-GridView
  57.  
  58. # Все компы где удалось получить данные, но инстансов было найдено больше 0
  59. $local:reportElementList |
  60.     Where-Object { $_.Exception -eq $null } |
  61.     Where-Object { ( $_.ReportData -ne $null ) -or ($_.ReportData.Count -gt 0) } |
  62.     ForEach-Object { return $_.ReportData } |
  63.     Select-Object * |
  64.     Out-GridView
Advertisement
Add Comment
Please, Sign In to add comment