2017-02-07 54 views
0

我想要做的是從我公司的大量資產中收集特定信息,100+。收集有關多臺計算機的特定映像和硬件信息

的文本文件只是一個電腦主機名

desktop12345 
desktop23456 
etc.

的名單這裏是我到目前爲止有:

$assets = Import-Csv 'c:\users\xxxxx\desktop\tex docs\assets.txt' 

foreach ($asset in $assets) { 
    Get-CimInstance Win32_OperatingSystem | 
    Select-Object CSname, OSArchitecture, version, BuildNumber, OSType, InstallDate, 
        operatingsystemsku, ServicePackMajorVersion, encryptionlevel | FL 
} 

但是,即使我有它只返回我的資產信息的列表。我想我需要在第一部分中替換Get-WmiObject -Class Win32_Desktop -ComputerName,但不能100%確定如何格式化它。

也許是這樣的:

$assets = Import-Csv 'c:\users\xxxxx\desktop\tex docs\assets.txt' 

foreach ($asset in $assets) { 
    Get-WmiObject -Class Win32_OperatingSystem -ComputerName | 
    Select-Object CSname, OSArchitecture, version, BuildNumber, OSType, InstallDate, 
        operatingsystemsku, ServicePackMajorVersion, encryptionlevel | FL 
} 

回答

2

這是取決於你的文本文件的格式猜測,假設它是直線上升的計算機列表。如果它不只是一個列表,請編輯該問題以顯示該文件的外觀。

$assets = Get-Content 'c:\users\xxxxx\desktop\tex docs\assets.txt' 

$output = foreach ($asset in $assets) { 
    Get-WmiObject -class Win32_operatingSystem -ComputerName $asset | 
     Select-Object CSname, OSArchitecture, version, BuildNumber, OSType, InstallDate, operatingsystemsku, ServicePackMajorVersion, encryptionlevel 
} 
$output | fl 

編輯:

每安斯加爾Wiechers的建議

$assets = Get-Content 'c:\users\xxxxx\desktop\tex docs\assets.txt' 
Get-WmiObject -class Win32_operatingSystem -ComputerName $assets | 
    Select-Object CSname, OSArchitecture, version, BuildNumber, OSType, InstallDate, operatingsystemsku, ServicePackMajorVersion, encryptionlevel | 
    fl 
+0

不走, 獲取-WmiObject可以簡化爲:RPC服務器不可用。 (異常來自HRESULT:0x800706BA) 在行:5 char:1 + Get-WmiObject -class Win32_operatingSystem -ComputerName $ asset |選擇對象... – Matt

+0

看起來沒有看到文本文件。可能需要「$ assett」或分割... –

+1

新的錯誤消息是您無法通過WMI連接到該計算機。可能的原因是'$ asset'中的值不正確,計算機未開啓,或者被防火牆限制。嘗試從文件中獲取第一個條目並手動運行該命令。例如Get-WmiObject Win32_OperatingSystem -ComputerName「desktop12345」'工作嗎? – BenH