2

現在のマシンのOUをプルできるようにする必要があります。これを実行できるVBコードをいくつか見つけましたが、VBを呼び出さなくてもスクリプトで実行できるようにしたいと思います。任意のアイデア、VBコードは以下のとおりです。

Set objSysInfo = CreateObject("ADSystemInfo")
DN = objSysInfo.ComputerName
WScript.Echo DN

-ジョシュ

4

2 に答える 2

1

この関数を使用してADSystemInfoを取得できます。

function Get-LocalLogonInformation
{
    try
    {
        $ADSystemInfo = New-Object -ComObject ADSystemInfo
        $type = $ADSystemInfo.GetType()

        New-Object -TypeName PSObject -Property @{
            UserDistinguishedName = $type.InvokeMember('UserName','GetProperty',$null,$ADSystemInfo,$null)
            ComputerDistinguishedName = $type.InvokeMember('ComputerName','GetProperty',$null,$ADSystemInfo,$null)
            SiteName = $type.InvokeMember('SiteName','GetProperty',$null,$ADSystemInfo,$null)
            DomainShortName = $type.InvokeMember('DomainShortName','GetProperty',$null,$ADSystemInfo,$null)
            DomainDNSName = $type.InvokeMember('DomainDNSName','GetProperty',$null,$ADSystemInfo,$null)
            ForestDNSName = $type.InvokeMember('ForestDNSName','GetProperty',$null,$ADSystemInfo,$null)
            PDCRoleOwnerDistinguishedName = $type.InvokeMember('PDCRoleOwner','GetProperty',$null,$ADSystemInfo,$null)
            SchemaRoleOwnerDistinguishedName = $type.InvokeMember('SchemaRoleOwner','GetProperty',$null,$ADSystemInfo,$null)
            IsNativeModeDomain = $type.InvokeMember('IsNativeMode','GetProperty',$null,$ADSystemInfo,$null)
        }
    }
    catch
    {
        throw
    }
}
于 2012-06-06T06:39:07.300 に答える
0

このページによると、Powershellで直接使用することはできませんADSystemInfo(または少なくとも簡単ではありません)

ええと、それは完全に真実ではありません。PowerShell内からADSystemInfoを使用することが可能です。ただし、このプロセスは簡単ではなく、直感的でもありません。これは、ADSystemInfoに、WindowsPowerShellなどの.NET言語からオブジェクトに簡単にアクセスできる「ラッパー」がないためです。その結果、.NET Reflectionクラス、InvokeMemberメソッド、そして私たちが知る限り、多くの祈りを伴う多くの旋回が発生します。

ただし、このページには、System.DirectoryServices.DirectorySearcher.NETオブジェクトを使用してADクエリを実行するための例が示されています。VBスクリプトに一致するように少し変更されたページの例を次に示します。

$strName = $env:computername
$strFilter = "(&(objectCategory=Computer)(Name=$strName))"

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter

$objPath = $objSearcher.FindOne()
$objPath.GetDirectoryEntry().distinguishedname
于 2012-06-05T21:16:09.470 に答える