我想通过在其中添加序列号来修改计算机的“描述”字段。 首先,我导出了一份计算机列表:
$a = Read-Host "Enter Starting of Computername"
$a = "$a*"
Get-ADComputer -Filter 'Name -like $a' -Properties IPv4Address,Description | FT Name,DNSHostName,IPv4Address,Description -A > C:\temp\Computer.csv
之后我复制了List并修改它以运行以下脚本来获取每台计算机的序列号。
$(
echo COMPUTER:PC123;wmic /NODE: PC123 bios get serialnumber;
echo COMPUTER:PC234;wmic /NODE: PC234 bios get serialnumber;
echo COMPUTER:PC345;wmic /NODE: PC345 bios get serialnumber;
) *>&1 > C:\temp\output_test.csv
如果计算机在网络中,我会收到结果:
计算机:PC123 SerialNumber
123xyz
但如果计算机不可用,我当然会遇到错误。
最后,我正计划列出所有计算机的列表,如
计算机:PC123
SerialNumber
123xyz
计算机:PC234
的SerialNumber
未达到
有什么想法吗?
感谢
答案 0 :(得分:0)
powershell具有内置cmdlet,可用于您需要的几乎任何类型的活动,因此请在使用wmic
之类的cmd工具之前尝试使用它们。
还使用export-csv
将数据导出为csv格式。
变量不会在单引号中展开,因此您需要在过滤器参数值上使用双引号:
Get-ADComputer -Filter "Name -like $a" -Properties IPv4Address,Description | Select Name,DNSHostName,IPv4Address,Description | export-csv C:\temp\Computer.csv -NoTypeInformation
import-csv c:\temp\computer.csv |
ForEach-Object {
if(Test-Connection $_.name -quiet)
{
New-Object psobject -Property @{ Computer = $_.name; Serialnumber = (gwmi win32_bios -ComputerName $_.name).serialnumber;Reachable=$true}
}
else
{
New-Object psobject -Property @{ Computer = $_.name; Serialnumber = $null;Reachable=$false}
}
} | export-csv c:\temp\output.csv -notype