【问题标题】:How to run a PowerShell script from PHP Linux server如何从 PHP Linux 服务器运行 PowerShell 脚本
【发布时间】: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


    【解决方案1】:

    从 PHP 运行 shell 脚本总是会引发很多安全问题。

    我建议您在 PowerShell 脚本中将上次登录信息保存到数据库中,而不是使用 PHP 从数据库中检索它。

    例如,您可以将其保存到 MySQL 数据库中,如下所示:

    $conn = ConnectToDatabase $user $pass $MySQLHost $database
    $query = "INSERT INTO user (last_login) VALUES ('$LastLogon');"
    $Command = New-Object MySql.Data.MySqlClient.MySqlCommand $query, $conn
    $Command.ExecuteNonQuery()
    

    然后在 PHP 端,访问同一个数据库并获取信息。

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 2019-06-12
      • 1970-01-01
      • 2012-12-25
      • 2010-12-02
      • 1970-01-01
      • 2017-08-17
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多