我创建了一个脚本来为新创建的AD用户创建一个homefolder(名称为SAMAccountname)。
$ADServer = 'xyz1'
Import-Module ActiveDirectory
$searchbase = "OU=xyz2,OU=xyz3,DC=xyz4,dc=xyz5"
$ADUsers = Get-ADUser -Filter {name -eq "xyz6"} -Server $ADServer -SearchBase $searchbase -Properties *
New-Item -ItemType Directory -Path "xyz7\$($ADUsers.sAMAccountname)"
除了我必须以用户名(AD帐户名)提供信息以便搜索该特定用户之外,所有内容都是自动进行的。 我想改变这个过程。我希望通过预定的运行使其自动化。
现在,我想查询事件日志并搜索EVENTID = 4720
(即“创建一个新用户”)并捕获这个新创建的用户的SamAccountName
(在属性[我已经检查]下) )并在我当前的脚本中传递...如果我按计划运行运行整个脚本,它将检测新用户创建并自动创建其主文件夹。
答案 0 :(得分:0)
$a = (Get-EventLog System | Where-Object {$_.EventID -eq 514}).message
应该允许您取回您想要的信息。然后,您可以将结果拆分为parese SAM名称。
" 514"只是我的例子 - 您需要将其替换为您想要跟踪的EventID。
linky 有关如何使用get-eventlog过滤结果的更多信息
答案 1 :(得分:0)
要提取在过去30分钟内创建的帐户名称,您可以使用如下的正则表达式:
Get-EventLog Security -Computer SERVERNAME -After (Get-Date).AddMinutes(-30) |
Where-Object {
$_.EventID -eq 4720 -and
$_.Message -match "sam account name:\s+(.*)"
} | ForEach-Object { $matches[1] }
话虽如此,最好的方法是在用户创建过程中集成主目录创建,即在创建用户时创建目录(因为此时您已经拥有了帐户名)。