2016-03-01 99 views
0

我正在編寫一個腳本,它發現我們基礎結構中的服務器不一致。基本上,我所做的是從兩個不同的來源獲取我們服務器的名稱和狀態,並找到不匹配的地方。源1是我們的SQL,其屬性名稱和狀態(狀態可以是InUse或Removed)源2來自vCenter,屬性名稱和PowerState(PoweredOn或PoweredOff)然後它們存儲在不同的變量中,比較對象與包含不同屬性的變量

使用此信息我想比較每個服務器的狀態和PowerState,InUse和PoweredOn應該匹配並輸出爲空,而所有其他(對於前InUse和PoweredOff)不應匹配並輸出到表或csv與服務器名一起用於進一步調查。

我嘗試將屬性重命名爲相同的名稱,然後使用ForEach進行過濾,但我無法完成它的工作。

任何幫助表示讚賞。

回答

0

假設:

  • 您使用PowerShell的
  • 我假設你知道如何列表讀取到字典中。爲了方便起見,我假設你正在使用哈希表。
  • 我假設服務器的名稱是,確切地說在兩個來源中都是相同的。如果沒有,你需要在你的腳本(可能是查找表)中對此進行解釋,或者在一個源中調整名稱。

$ sqllist是從SQL列表,按名稱 $ vclist鍵入時從vCenter清單,按名稱鍵

$output = @() 
foreach ($serversql in $sqllist) 
{ 
    $entry = $null 
    $servervc = $vclist.Get($serversql.Name) 
    if ($serversql.Status -match 'InUse' ` 
    -and $servervc.PowerState -match 'PoweredOn') 
    { 
    $entry = [PsCustomObject]@{ 
     Name=$serversql.Name 
     SqlStatus=$null 
     vCenterStatus=$null 
    } 
    } else 
    { 
    $entry = [PsCustomObject]@{ 
     Name=$serversql.Name 
     SqlStatus=$serversql.Status 
     vCenterStatus=$servervc.PowerState 
    } 
    } 
} 
$output | Export-CSV -Path log.csv 
相關問題