web-dev-qa-db-ja.com

PowerShellでネットワーク上のすべてのコンピューターのオペレーティングシステムを一覧表示する方法

ドメイン上のすべてのマシン、ホスト名、OSバージョンを表示するスクリプトを探しています。いくつかのスクリプトを見つけましたが、見つかったスクリプトのいずれも両方を実行することはできません。

これが私が見つけたものの例です:

$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のスクリプトを作成する方法を教えてもらえますか?

2
nate

OSバージョンを取得するには

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

Get-ADComputerもデフォルトでコンピュータ名を返します。

9
HopelessN00b

これがまさにあなたが探しているものかどうかはわかりませんが、私にとってはうまくいきます。関数に渡すコンピュータ名を知っている必要があります。そして、それはあなたに戻り文字列でOSを与えます。他のニーズに合わせて変更できると思います。

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
}
2
doug westmill

これは古いスレッドでPowerShellを使用していないことに気づきましたが、SysInternals Suiteの一部であるADExplorer.exeを実行しないのはなぜですか?

0
C Camerini