首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PHP Linux服务器运行PowerShell脚本

问如何从PHP Linux服务器运行PowerShell脚本
EN

Stack Overflow用户
提问于 2020-12-11 01:07:04
回答 1查看 131关注 0票数 0

我有一个应用程序,它将获取员工的最后登录详细信息,这是不准确的,因为在AD中有多个域控制器。为了获得最新的上次登录,我们找到了一个PowerShell脚本,它将连接到两个域控制器,并从两个域控制器获取数据,并在比较之后返回最近的记录(https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Logon-for-Users-c8e3eab2)。我已经把脚本放在下面了。

PowerShell.ps1:

代码语言:javascript
复制
  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 serever)调用此脚本。我用在互联网上找到的东西尝试了很多方法,但都没有用。我已经将连接详细信息和属性(显示在应用程序的AD详细信息中)放在了我们当前使用的位置(也保存了上次登录)。如果您能提供一种从PHP调用脚本的方法,感谢您的帮助。

公共函数__construct()

代码语言:javascript
复制
{

    $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();

}
EN

回答 1

Stack Overflow用户

发布于 2020-12-11 01:28:58

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

我建议你,在你的PowerShell脚本中,将最后一次登录信息保存到数据库中,而不是使用PHP语言从数据库中检索它。

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

代码语言:javascript
复制
$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端,访问相同的数据库并获取信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65239022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档