2015-02-23 43 views
0

有人可以請我解決以下問題或更好的方法來接近它 - 我所要做的就是返回有關所選服務器的一些信息,幷包含AD Description Field:Powershell - WMI&AD對象

$cred = Get-Credential -Credential "test_user" 
$servername = "servername" 

[wmi]$os = Get-WmiObject -Class win32_operatingsystem -ComputerName $servername -Credential $cred 
[wmi]$cs = Get-WmiObject -Class win32_computersystem -ComputerName $servername -Credential $cred 
###[wmi]$ad = Get-ADComputer $servername -Properties Description -Credential $cred | Select-Object -Property description 

[hashtable]$osProperties = @{ 
    'Description' = $ad; 
    'OSVersion'=$os.version; 
    'OSBuild'=$os.buildnumber; 
    'SPVersion'=$os.servicepackmajorversion; 
    'Model'=$cs.model; 
    'Manufacturer'=$cs.manufacturer; 
    'RAM'=$cs.totalphysicalmemory/1GB -as [int]; 
    'Sockets'=$cs.numberofprocessors; 
    'Cores'=$cs.numberoflogicalprocessors; 
    'SystemType'=$cs.SystemType} 

$osproperties 

將返回:

Manufacturer     VMware, Inc.                                           
RAM       4                                              
OSVersion      6.1.7601                                            
SystemType      x64-based PC                                           
SPVersion      1                                              
Cores       2                                              
Model       VMware Virtual Platform                                        
OSBuild      7601                                             
Sockets      2 

但是,如果我不選擇行get-adcomputer我得到以下錯誤:

Cannot convert value "@{description=PROD - Portsmouth - VM - W2K8R2 Monitoring Server}" to type "System.Management.ManagementObject". Error: "Cannot convert the "@{description=PROD - Portsmouth - VM - W2K8R2 
Monitoring Server}" value of type "Selected.Microsoft.ActiveDirectory.Management.ADComputer" to type "System.Management.ManagementObject"." 
At line:12 char:2 
+ [wmi]$ad = Get-ADComputer $servername -Properties Description -Credential $cred ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : MetadataError: (:) [], ArgumentTransformationMetadataException 
    + FullyQualifiedErrorId : RuntimeException 
+1

刪除變量$ ad之前的[wmi]。 – notjustme 2015-02-23 11:07:30

+0

耶穌....也許我盯着那太久了! – Richard 2015-02-23 11:25:16

回答

1

您有2個問題,我看到。首先是notjustme指出的那個。您正試圖將Get-AdComputer的輸出轉換爲WMI對象...因此出現錯誤。

在你回來的同一行上,並帶有描述的對象屬性。該行中的兩個小改動將使其餘代碼按預期工作。

$ad = Get-ADComputer $servername -Properties Description -Credential $cred | 
    Select-Object -ExpandProperty description

旁註

看看你的問題,看看我做了格式化你的代碼塊。使用文本框上方的「{}」按鈕創建縮進,將爲您節省大量時間。

+0

啊,很好,我甚至沒有注意到。 – notjustme 2015-02-23 13:16:58

+0

感謝您的反饋意見以及代碼塊的建議。乾杯馬特 – Richard 2015-02-23 14:20:14