【发布时间】:2020-12-10 17:07:03
【问题描述】:
我有一个应用程序,它会获取员工的最后登录详细信息,但由于 AD 中有多个域控制器,这并不总是准确的。为了获得最新的 lastlogon,我们找到了一个 PowerShell 脚本,它将连接到两个域控制器并从两个域控制器获取数据并在比较后返回最近的记录 (https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Logon-for-Users-c8e3eab2)。我已经把脚本放在下面了。
PowerShell.ps1:
Import-Module ActiveDirectory
$hostname = "domaincontrollername1.test.**.**.***.**"
Write-Host $hostname
$user = Get-ADobject -Filter 'samaccountname -eq "id"' -SearchBase "OU=*** Users,DC=test,DC=***,DC=***,DC=***,DC=**" -Server $hostname -Properties "lastLogon"
Write-Host $user
$LastlogonTime1 = [DateTime]::FromFileTime($user.lastLogon)
Write-Host $LastlogonTime1
$hostname = "domaincontrollername2.test.**.**.***.**"
Write-Host $hostname
$user = Get-ADobject -Filter 'samaccountname -eq "id"' -SearchBase "OU=***Users,DC=***,DC=test,DC=***,DC=***,DC=**" -Server $hostname -Properties "lastLogon"
Write-Host $user
$LastlogonTime2 = [DateTime]::FromFileTime($user.lastLogon)
Write-Host $LastlogonTime2
if ($LastlogonTime1 -gt $LastlogonTime2)
{
$Lastlogon = $LastlogonTime1
}
else
{
$Lastlogon = $LastlogonTime2
}
Write-Host $Lastlogon
现在的挑战是从 PHP 应用程序(Linux 服务器)调用此脚本。我用我在互联网上找到的东西尝试了很多方法,但没有任何帮助。我已经放置了我们当前使用的连接详细信息和属性(显示在应用程序 AD 详细信息中)(也保存了 lastlogon)。如果您能提供一种从 PHP 调用脚本的方法,感谢您的帮助。
公共函数__construct()
{
$this->server = "actual server";
$this->port = "number";
$this->user = "useraccount";
$this->password = "password";
$this->dn = "DC=***,DC=**,DC=**,DC=**,DC=***";
$this->attributes = array("samaccountname","givenname","sn","name","title","description","department","lastlogon","memberof","userAccountControl");
$this->filter = "samaccountname=";
parent::__construct();
}
【问题讨论】:
标签: php linux powershell active-directory domaincontroller