修改计算机的AD描述

时间:2017-09-08 11:36:51

标签: powershell

我想通过在其中添加序列号来修改计算机的“描述”字段。 首先,我导出了一份计算机列表:

$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

     

未达到

有什么想法吗?

感谢

1 个答案:

答案 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