Windows

如何在 Powershell 中列出網路上的所有電腦作業系統

  • March 2, 2020

我正在尋找一個腳本來顯示我的域中的所有機器、主機名和作業系統版本。我找到了一些腳本,但我找到的腳本都沒有。

這是我發現的一個例子:

$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 創建一個腳本來列出主機名和作業系統版本嗎?

獲取作業系統版本

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

Get-ADComputer預設情況下也返回電腦名稱。

不確定這是否正是您正在尋找的,但它對我有用。您需要知道傳遞給函式的電腦名稱。它會在返回字元串中為您提供作業系統。我相信它可以被修改以適應其他需求。

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
}

引用自:https://serverfault.com/questions/585223