【问题标题】:Modify AD Description of Computer修改电脑的AD描述
【发布时间】:2017-09-08 22:42:34
【问题描述】:

我想通过添加序列号来修改我们计算机的描述字段。 首先,我导出了我们的计算机列表:

$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 

之后我复制了列表并对其进行了修改以运行以下脚本来获取每台计算机的序列号。

$(
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 序列号

123xyz

但如果计算机不可用,我当然会遇到错误。

对我来说,最后是计算出一个包含所有计算机的列表

电脑:PC123

序列号

123xyz

电脑:PC234

序列号

未达到

有什么想法吗?

谢谢

【问题讨论】:

    标签: powershell


    【解决方案1】:

    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
    

    【讨论】:

    • 听起来不错!谢谢。我试过了。如何将 foreach 循环的结果也导出到 csv 文件中?
    • 就像我们第一次导出一样...无论如何请看编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多