Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Active Directory用户登录和注销会话历史记录_Powershell - Fatal编程技术网

Powershell Active Directory用户登录和注销会话历史记录

Powershell Active Directory用户登录和注销会话历史记录,powershell,Powershell,我正在寻找使用PowerShell生成active directory域用户登录和注销会话历史记录的脚本。下面是我尝试过的脚本。这些仅显示上次登录的会话 脚本: $searcher=新对象DirectoryServices.DirectorySearcher([adsi]“”) $searcher.filter=“(objectclass=user)” $users=$searcher.findall() Foreach($users中的用户) { if($user.properties.ite

我正在寻找使用PowerShell生成active directory域用户登录和注销会话历史记录的脚本。下面是我尝试过的脚本。这些仅显示上次登录的会话

脚本:

$searcher=新对象DirectoryServices.DirectorySearcher([adsi]“”)
$searcher.filter=“(objectclass=user)”
$users=$searcher.findall()
Foreach($users中的用户)
{
if($user.properties.item(“lastLogon”)-ne 0)
{
$a=[datetime]::FromFileTime([int64]::Parse($user.properties.item(“lastLogon”))
“$($user.properties.item(`name`'))$a”
}
}
输出:

PS C:\Windows\system32>C:\Users\Administrator\Desktop\working\lastlogonworked.ps1
管理员2013年10月17日13:11:31
演示版2013年10月17日13:10:54
用户0 2013年10月17日07:07:07
用户1 2013年10月17日06:29:27
用户2 2013年10月17日08:39:05
用户4 2013年10月17日08:41:36
用户5 2013年10月17日09:38:07
CPU054 10/17/2013 13:11:53


请有人帮助我获取所有用户的登录和注销历史记录。

您将无法从AD获取该历史记录。您需要搜索DCs上的安全事件日志以查找登录/注销事件。

您将无法从AD获取该历史记录。您需要搜索DCs上的安全事件日志以查找登录/注销事件。

I通过google运行这个线程,查找如何记录用户登录,我发现了一个有趣的、可能更简单的方法。我决不是一个广告专家,这一点我的前任已经做到了。我想知道是怎么做到的

$searcher = New-Object DirectoryServices.DirectorySearcher([adsi]"")
$searcher.filter = "(objectclass=user)"
$users = $searcher.findall()
Out-File C:\logonfile.txt
Foreach($user in $users)
{
  if($user.properties.item("lastLogon") -ne 0)
  {
    $a = [datetime]::FromFileTime([int64]::Parse($user.properties.item("lastLogon")))
    "$($user.properties.item(`"name`")),$a" >> c:\logonfile.CSV

  }
}
  • 设置组策略以在登录时运行脚本。在本例中,一个名为“Logon.cmd”的脚本
  • 创建一个小批量文件,并将其(在我的示例中)放在此处:

    C:\Windows\SYSVOL\domain\Policies{81D…[SNIP}…C7}\User\Scripts\Logon

  • 该脚本的内容只有一行:

    回显登录,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME%>>\SERVER\SHARE\%USERNAME%.csv


现在,这为您提供了一个充满文件的共享,每个用户一个,而不是将事件直接记录到DC上的Windows安全日志。这可能会有问题(或恼人),或者可能会导致不懂计算机(人力资源和管理?)人们很容易获得人员跟踪信息。

我通过谷歌浏览了这条线索,寻找如何记录用户登录,我发现了一种有趣的、可能更简单的方法。我绝不是广告专家,这一点我的前任已经做好了。我试图弄清楚这是如何做到的

  • 设置组策略以在登录时运行脚本。在本例中,将使用名为“logon.cmd”的脚本
  • 创建一个小批量文件,并将其(在我的示例中)放在此处:

    C:\Windows\SYSVOL\domain\Policies{81D…[SNIP}…C7}\User\Scripts\Logon

  • 该脚本的内容只有一行:

    回显登录,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME%>>\SERVER\SHARE\%USERNAME%.csv


现在,这为您提供了一个充满文件的共享,每个用户一个,而不是将事件直接记录到DC上的Windows安全日志。这可能会有问题(或恼人),或者可能会导致不懂计算机(人力资源和管理?)人员可以轻松访问人员跟踪信息。

假设DCs记录此信息,如我所回忆的,传统上是0级错误事件的默认值。假设DCs记录此信息,如我所回忆的,传统上是0级错误事件的默认值。此方法的问题是用户可能会弄乱它。O因此,这不是一个坏概念。这种方法的问题是用户可能会弄乱它。否则,这不是一个坏概念