回答:
次のPowershellは管理者またはドメイン管理者のアクセスを必要としません。Powershellv2 / v3を使用してドメインに参加しているワークステーションで制限付きユーザーとしてテストしました。サードパーティのツールやPowershellモジュールは必要ありません。
$dse = ([ADSI] "LDAP://RootDSE")
# Domain Controller Functional Level
$dse.domainControllerFunctionality
# Domain Functional Level
$dse.domainFunctionality
# Forest Functional Level
$dse.forestFunctionality
返される値は、明確な機能レベルを表します。
Value Forest Domain Domain Controller
0 2000 2000 Mixed/Native 2000
1 2003 Interim 2003 Interim N/A
2 2003 2003 2003
3 2008 2008 2008
4 2008 R2 2008 R2 2008 R2
5 2012 2012 2012
6 2012 R2 2012 R2 2012 R2
7 2016 2016 2016
参照:
私がここで多かれ少なかれ同じ必要性で終わったので、受け入れられた答えに対するちょうど補完的な解決策。違いは、レベル名がデコードされることです。
Import-Module ActiveDirectory
$ForestRoot = 'top.domain'
(get-adforest -identity $ForestRoot).ForestMode
(get-adforest -identity $ForestRoot).Domains |
ForEach-Object {Get-ADDomain -Identity $_ |
ft DNSRoot,DomainMode -AutoSize}
-identity $ForestRoot
クエリしようとしているフォレストに参加しているマシンからget-adforestコマンドを実行するときに、実際にはget-adforestコマンドの一部を含める必要はありません。コマンドレットは、現在のマシンの情報を取得するだけです。
あなたはそれをチェックしたいのですか、それとも実際に変更したいですか?これを変更するには、ドメイン/フォレストに対する特定の管理者権限が必要です。
dsqueryまたはPS Get-ADDomain(ADモジュールのインポートが必要)なしで考えることができる最も簡単な方法は、JoewareのADFINDコマンドを使用することです。
http://www.joeware.net/freetools/tools/adfind/
adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality
私のドメインからの出力例:
AdFind V01.47.00cpp Joe Richards(joe@joeware.net)2012年10月
サーバーの使用:DOMAIN-DC1.hahaha.local:389
ディレクトリ:Windows Server 2008 R2
dn:
domainFunctionality:4 [Windows Server 2008 R2ドメインモード]
forestFunctionality:4 [Windows Server 2008 R2フォレストモード]
domainControllerFunctionality:4 [Windows Server 2008 R2モード]
1返されたオブジェクト
GUIベースのアプローチでは、Active Directory Explorerを使用できます。ドメインの最上位ノードを右クリックし、[プロパティ]をクリックして、domainControllerFunctionality、domainFunctionality、またはforestFunctionalityの値を確認します。それらは以下に対応する整数値を持っています:
0 =勝利2000
1 =勝利2003混合/中間
2 =勝利2003
3 =勝利2008
4 =勝利2008 R2
5 =勝利2012
6 =勝利2012 R2
7 =勝利2016
あなたが何をしようとしているのかわからないため、この質問には少し違った方法で質問する必要があります。これは、PowerShellスクリプトまたはバッチファイルが必要です。これらのタスクを実行できます。それがあなたが求めているものである場合、それは設計上、不可能です。
ただし、ワークステーションからADを管理することについて質問している場合は、ユーザーがコマンドを実行できるスクリプトをユーザーに渡すことにより、そうでない場合はそのユーザーが実行できない(つまり、特権のないサービスアカウントからADにクエリを実行する)必要があります。使用しているPowershellのバージョン、および使用しているサーバーのバージョン。
また、委任したい一度に1つのタスクに対してAD Webサービスを検討することもできます。
TechNetの投稿から:以下のDSQUERYを実行してください
Dsquery * CN = Partitions、CN = Configuration、DC = Mydomain、DC = com -scope base -attr msDS-Behavior-Version
出力:msDS-Behavior-Version 2
DFLおよびFFLを示す属性:-フォレストレベルの設定
名前:msDS-Behavior-Versionパス:CN = Partitions、CN = Configuration、DC =、DC = com
値:0または設定なし=混合レベルのフォレスト
1 = Windows Server 2003中間フォレストレベル2 = Windows Server 2003フォレストレベル3 = Windows Server 2008フォレストレベル
名前:msDS-Behavior-Versionパス:DC =、DC =、DC = com(ドメインルート)値:0または未設定=混合レベルドメイン
1 = Windows Server 2003ドメインレベル2 = Windows Server 2003ドメインレベル3 = Windows Server 2008ドメインレベル
名前:ntMixedDomain
パス:DC =、DC =、DC = com(ドメインルート)
値:0 =ネイティブレベルドメイン1 =混合レベルドメイン
これを実行するためのユーザーの役割要件についてはわかりませんが、それを変更することはなく、すべてDSQUERYを使用しています(RSATから、Microsoftから無料でダウンロードできます)。その終わりを見る必要がある場合はコメントしてください。