Windows
Windows 10 - Perl 與 dsadd/dsquery
幾個月前,我創建了一個用於將使用者添加到 Active Directory 的 perl 腳本。在 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
有用。
這裡發生了什麼?有沒有人能看懂這個??
乾杯,盧卡斯
我猜你在 64 位作業系統上安裝了 32 位 Perl。Windows 10 AMD64 上沒有 32 位版本的
dsquery.exe
in 。C:\Windows\SysWOW64\
從“執行”對話框比較以下結果。使用 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*.*
如果您真的想
dsquery.exe
從 32 位環境執行 64 位,請嘗試使用sysnative
別名。C:\Windows\SysWOW64\cmd.exe /K C:\windows\sysnative\dsquery.exe
在你的腳本中試試這個,不能保證 Perl 不會阻塞它。
if (`C:\\Windows\\sysnative\\dsquery.exe user -samid $uname`)