我已經在Powershell 2.0中解決了這個問題,但需要爲舊版應用程序移植到Perl 5.10。如何使用Perl驗證Windows帳戶和密碼?
我有Windows服務帳戶憑據,不能相互傳遞LOGI傳遞給Perl腳本$Account
和$Password
。 $Account
變量包含域名和AD用戶帳戶名稱。我的PowerShell的解決方案(一襯墊):
PS C:\> New-PsSession -Credential (new-object -typename System.Management.Automation.PSCredential -argumentlist '$Account', (ConvertTo-SecureString '$Password' -AsPlainText -Force)); exit-PsSession;
如果新的PSSession被創建,則帳戶驗證過去了,我得到的輸出到標準輸出,如:
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Session1 localhost Opened Microsoft.PowerShell Available
如果驗證失敗,我得到的輸出像這樣STDERR:
[localhost] Connecting to remote server failed with the following error message
: Access is denied. For more information, see the about_Remote_Troubleshooting
Help topic.
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:Re
moteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed
我可以在我的程序中解析這些結果。我想在Windows上的Perl 5.10中做類似的事情。我想要做的就是測試密碼是否適用於考慮交互式登錄被拒絕的帳戶。有任何想法嗎?
我也嘗試和PowerShell進程沒有返回。我用Win32 :: Spawn,Win32:Process:CreateProcess,qw(),system(),''花了幾天時間,而且它們都不能在我的調用過程中工作,所以我想知道它是否可以本地化在Perl中無需調用PowerShell進程。 –
你結束了;退出; ? – FtLie
from commandline c:> perl -e「print'123'。\'powershell -command ls; exit \'.432」 – FtLie