小编End*_*der的帖子

lastLogonTimeStamp 属性的 1601/01/01

我正在使用 lastLogonTimeStamp 跟踪用户上次登录时间,如下代码所示:

$Domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$ADSearch = New-Object System.DirectoryServices.DirectorySearcher
$ADSearch.SearchRoot ="LDAP://$Domain"
$ADSearch.SearchScope = "subtree"
$ADSearch.PageSize = 100
$ADSearch.Filter = "(objectClass=user)"

$properies = @("distinguishedName",
"sAMAccountName",
"mail",
"lastLogonTimeStamp")

foreach ($pro in $properies) {
    $ADSearch.PropertiesToLoad.add($pro)   
}

$userObjects = $ADSearch.FindAll()
foreach ($user  in $userObjects) {
    $logon = $user.Properties.Item("lastLogonTimeStamp")[0]
    $lastLogon = [datetime]::fromfiletime($logon)        
    $lastLogon= $lastLogon.ToString("yyyy/MM/dd")
    $lastLogon
}
Run Code Online (Sandbox Code Playgroud)

我到目前为止:

1601/01/01
1601/01/01
3/12/2012
1601/01/01
3/19/2015
Run Code Online (Sandbox Code Playgroud)

这不是我第一次对1601/01/01值感到非常困惑。而且我还阅读了有关此值的 MS 文档,对我来说这是无稽之谈,它没有太多描述它的目的。不仅lastLogonTimeStamp有这个输出,许多其他属性也返回了这个。所以我的问题是:

  1. 这个值的目的是什么?
  2. 在这种情况下,我应该返回什么作为适当的人类可读输出?(此属性对该用户无效?)

windows powershell ldap active-directory

6
推荐指数
1
解决办法
9095
查看次数

使用“0”参数调用“FindAll”异常 - 可信域 LDAP 搜索

我的方法是ModifyTimeStamp在扫描所有 DC 后获取最新的。我的代码中的场景是:

首先,我扫描 PDC 以获取distinguishedName值,然后扫描所有 DC 以获取distinguishedName值,如果它们-eq彼此相关,它将打印 ,ModifyTimeStamp这意味着ModifyTimeStamp每个 DC 上的所有值都将存储在数组列表中。arraylist 将打印最大值。如下:

$TrustedDomain = "test.com"
$context = new-object System.DirectoryServices.ActiveDirectory.DirectoryContext("domain",$TrustedDomain)
$D = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($context)
$PDC = $D.PdcRoleOwner 
$ADSearch = New-Object System.DirectoryServices.DirectorySearcher 
$ADSearch.SearchRoot ="LDAP://$PDC"
$ADSearch.SearchScope = "subtree"
$ADSearch.PageSize = 100
$ADSearch.Filter = "(&(objectCategory=person)(objectClass=user))"
foreach($pro in $properies)
{
    $ADSearch.PropertiesToLoad.add($pro)| out-null
}
$userObjects = $ADSearch.FindAll()

$dnarr = New-Object System.Collections.ArrayList
Function modiScan{
    $Searcher = New-Object System.DirectoryServices.DirectorySearcher 
    $Searcher.PageSize = 100 
    $Searcher.SearchScope = "subtree" 
    $Searcher.Filter = …
Run Code Online (Sandbox Code Playgroud)

powershell attributes ldap trusted

5
推荐指数
1
解决办法
2966
查看次数

停止在foreach循环powershell中打印元素的数量

foreach循环只是打印出其中的元素数量,如下面的代码.我想阻止它打印出来.

$ADSearch = New-Object System.DirectoryServices.DirectorySearcher
$ADSearch.SearchRoot ="LDAP://$Domain"
$ADSearch.SearchScope = "subtree"
$ADSearch.PageSize = 100
$ADSearch.Filter = "(objectClass=$objectClass)"

$properies =@("distinguishedName",
"sAMAccountName",
"mail",
"lastLogonTimeStamp",
"pwdLastSet",
"accountExpires",
"userAccountControl")

foreach($pro in $properies)
{
    $ADSearch.PropertiesToLoad.add($pro)   
}
Run Code Online (Sandbox Code Playgroud)

目前它给出了:

0
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

powershell foreach

3
推荐指数
1
解决办法
302
查看次数