Несколько месяцев назад я создал Perl-скрипт для добавления пользователей в Active Directory. В Windows 7 все работает нормально. В Windows 10 perl не может запускать «dsquery» или «dsadd», но я действительно не могу этого понять.
Когда я запускаю dsquery из той же командной строки, он работает. Пробуем с Perl-скриптом ... Не получится!
Der Befehl "C:\Windows\System32\dsquery.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
(= Команда dsquery не найдена ...)
Некоторые фрагменты кода из Perl-скрипта:
$datetime = strftime("%d.%m.%Y %H:%M:%S", localtime);
&GetOptions ("-v=s" => \$fname,
"-n=s" => \$sname,
"-u=s" => \$uname,
"-p=s" => \$pwd,
"-noshare" =>\$noshare,
"-test" =>\$test,
"-noquota" =>\$noquota,
"-sshpw=s" =>\$sshpw );
unless ($fname) {
print "Vorname: ";
$fname = <STDIN>;
chomp $fname;}
unless ($sname) {
print "Nachname: ";
$sname = <STDIN>;
chomp $sname;}
unless ($uname) {
$uname = substr($fname, 0, 1);
$uname = "$uname.$sname";}
$uname = lc($uname);
if (`C:\\Windows\\System32\\dsquery.exe user -samid $uname`){
print "Benutzer $uname existiert bereits!";
exit;}
На этом он уже останавливается. Но когда я бегу:
c:\windows\system32\dsquery.exe user -samid ANYUSER
оно работает.
Что здесь происходит? Кто-нибудь может это понять ??
Привет, Лукас
Я предполагаю, что у вас 32-битная установка Perl на 64-битной ОС. Нет 32-битной версии dsquery.exe
в C:\Windows\SysWOW64\
в Windows 10 AMD64. В диалоговом окне «Выполнить» сравните результаты следующего.
С 32 бит cmd
:
C:\Windows\SysWOW64\cmd.exe /K C:\windows\system32\dsquery.exe
Затем явно используя 64-битный cmd
:
C:\Windows\System32\cmd.exe /K C:\windows\system32\dsquery.exe
Или просто
DIR C:\Windows\SysWOW64\dsq*.*
DIR C:\Windows\System32\dsq*.*
Если вы действительно хотите запустить 64-битную версию dsquery.exe
из 32-битной среды попробуйте использовать sysnative
псевдоним.
C:\Windows\SysWOW64\cmd.exe /K C:\windows\sysnative\dsquery.exe
Попробуйте это в своем сценарии, нет никаких гарантий, что Perl просто не подавится этим.
if (`C:\\Windows\\sysnative\\dsquery.exe user -samid $uname`)