作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经让 Perl 创建了一个用户名数组 (@ua);现在我需要检查是否每个都存在于 Active Directory 中。我想到的最好的方法是对每个用户运行 dsquery 并确定命令退出时是零还是非零。我写了以下内容:
foreach(@ua)
{
$out = `C:\\Windows\\System32\\dsquery.exe user -samid $_`;
}
当我运行它时,我在命令行控制台中得到了一个重复的列表:
'C:\Windows\System32\dsquery.exe' is not recognized as an internal or external command, operable program or batch file.
但是,dsquery.exe 是在那个位置,我可以通过简单地运行它来证明:
C:\verify_users>C:\Windows\System32\dsquery.exe user -samid ...
"CN=...,OU=...,OU=...,OU=...,DC=...,DC=...,DC=..."
有什么想法吗?
谢谢!
最佳答案
正如 Miguel 所说,改用 Net::LDAP。
#!/usr/bin/perl
use warnings;
use strict;
use Net::LDAP;
my $tgt_user = shift or die "Usage: fetch_user_details <username>";
my $Server = 'server.foo.local';
my $User = 'user@foo.local';
my $Password = 'userpass';
my $LdapBase = 'OU=SBSUsers,OU=Users,OU=MyBusiness,DC=foo,DC=local';
# To AND conditions: "(&(cond1) (cond2))"
my $Filter = "SAMAccountName=$tgt_user";
# Bind a connection
my $ad = Net::LDAP->new("ldap://$Server")
or die("Could not connect to LDAP server: $Server");
my $res = $ad->bind( $User, password=>$Password );
if ($res->code) { die("Unable to bind as user $User: ".$res->error); }
# Run the search
# Could have attrs=>'a,b,c' for a search too
$res = $ad->search(base=>$LdapBase, filter=>$Filter);
if ($res->code) { die("Failed to search: ".$res->error); }
# Display results
my $count = $res->count;
print "Found $count matches\n";
for my $entry ($res->entries) {
$entry->dump;
# print $entry->get_value('givenname'),"\n";
}
$ad->unbind;
exit;
假设您的域名类似于带有 SBS 的 machine.foo.local,上面的内容应该差不多完成了 - 如果不是,您将需要稍微谷歌一下以了解如何设置 LdapBase。
关于windows - 我想在 Windows 下从 Perl 运行 .exe 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504010/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!