如何在 Powershell 中列出网络上所有计算机的操作系统

如何在 Powershell 中列出网络上所有计算机的操作系统

我正在寻找一个脚本来显示我域中的所有机器、主机名和操作系统版本。我找到了一些脚本,但没有一个脚本可以同时完成这两项功能。

以下是我发现的一个例子:

$strCategory = "computer"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("(objectCategory=$strCategory)")
$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
  $colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
  {$objComputer = $objResult.Properties; $objComputer.name}

有人能告诉我如何为 powershell 创建一个脚本来列出主机名和操作系统版本吗?

答案1

获取操作系统版本

 Get-ADComputer -Filter * -Property * | Format-Table Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion -Wrap –Auto

Get-ADComputer默认情况下也返回计算机名称。

答案2

不确定这是否正是您要找的,但它对我有用。您需要知道传递给函数的计算机名称。它会在返回字符串中为您提供操作系统。我相信它可以被修改以满足其他需求。

function global:Get-OSInfo
{
  param([string]$computer)

    [string] $strReturn = '' 

    if([string]::IsNullOrEmpty($computer) -eq $false)
    {   
        # Create the connection to Active directory.
        $dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
        $root = $dom.GetDirectoryEntry()
        $search = [System.DirectoryServices.DirectorySearcher]$root

        # Search the directory for our user.
        $search.Filter = "(&(objectclass=Computer)(sAMAccountName=$computer$))"
        $result = $search.FindOne()

        if ($result -ne $null)
        {
            $system = $result.GetDirectoryEntry()
            $strReturn = $system.Properties["operatingSystem"]
        }
    }

    return $strReturn
}

答案3

我意识到这是一个旧线程并且不使用 powershell,但是为什么不运行 SysInternals Suite 的一部分 ADExplorer.exe?

相关内容