如何以编程方式判断 Mac OS X 计算机是否绑定到 Active Directory 域?

Jon*_*Jon 5 macos active-directory

此命令:dsconfigad -show执行我需要的操作,但我需要管理员权限才能运行它。

上面的命令输出了一些我感兴趣的信息:

You are bound to Active Directory:
      Active Directory Forest        = xx.xxxxxx.local
      Active Directory Domain        = xx.xxxxxx.local
      Computer Account               = (computer name)
Run Code Online (Sandbox Code Playgroud)

我希望能够以Active Directory Domain编程方式看到上面的内容,并且最好不需要具有 sudo 权限。

有什么建议?我已经浏览了 Open Directory 文档,但对我来说如何做到这一点并不完全显而易见。我还尝试了一些代码示例,只是为了查询 AD 中的某些内容而没有成功……我将继续努力,但我希望这里有人有一些知识可以分享。

Sim*_*nek 2

如果没有节点身份验证,您至少应该通过查看活动的 OD 插件来查看 AD 是否已绑定 - 如果已绑定,它应该包括 AD。它可能会或可能不会显示域(通常对于 LDAP 会显示域,但我没有 AD 可以在这里测试,因此您的情况可能会有所不同):

迅速

import Foundation
import OpenDirectory

let mySession = ODSession.default()
do {
    print(try mySession?.nodeNames())
}
catch {
    print("error: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

Objective-C

#include <Foundation/Foundation.h>
#include <OpenDirectory/OpenDirectory.h>

int main(int ac, char **av) {
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  ODSession *mySession = [ODSession defaultSession];
  NSError *err = 0;
  NSArray *nodeNames = [mySession nodeNamesAndReturnError:&err];
  if (err) NSLog(@"error: %@", err);
  if (nodeNames) NSLog(@"nodes: %@", nodeNames);
  [pool release];
  return 0;
}
Run Code Online (Sandbox Code Playgroud)