You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Event Log 4741提取计算机名,实现新建计算机自动移至指定OU

自动将新创建的计算机移动到指定OU(通过Event ID 4741触发)

你遇到的核心问题是Get-EventLog无法直接解析4741事件里的计算机账户信息,因为它对安全日志的扩展字段支持有限。改用Get-WinEvent就能正确提取事件中的计算机名,下面是完整的解决步骤:

1. 从4741事件中提取计算机账户信息

4741事件(计算机账户创建)的关键数据存在事件的Properties集合里,其中第一个元素(索引0)就是新创建计算机的SamAccountName(格式为计算机名$)。用以下命令可以提取:

# 获取最新的4741事件
$event = Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4741]]" -MaxEvents 1
# 提取带$后缀的计算机账户名
$computerSamAccount = $event.Properties[0].Value
# 可选:去掉$后缀得到纯计算机名
$computerName = $computerSamAccount -replace '\$$', ''

2. 修改自动执行的移动脚本

把你原来的示例脚本改成动态获取计算机名的版本,这里推荐直接用SamAccountName查询AD(避免和用户账户重名):

# 获取触发任务的4741事件
$event = Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4741]]" -MaxEvents 1
$computerSamAccount = $event.Properties[0].Value

# 匹配规则(注意末尾的$,对应计算机账户的SamAccountName格式)
if ($computerSamAccount -match '^ORD\d{3}\$$') {
    # 移动到目标OU
    Get-ADComputer -Identity $computerSamAccount | Move-ADObject -TargetPath "OU=X,DC=X,DC=X"
}

3. 计划任务配置注意事项

  • 触发条件:设置为「安全日志中记录了事件ID 4741」
  • 执行账户:必须拥有以下权限:读取安全日志、读取AD计算机对象、修改AD对象的OU属性
  • 环境依赖:确保执行脚本的主机已安装RSAT-AD-PowerShell模块(否则Get-ADComputer命令无法运行)

补充说明

你之前用Get-EventLog查不到SamAccountName是因为该cmdlet仅解析了事件的基础字段,没有处理安全日志的扩展事件数据。Get-WinEvent会保留事件的原始属性集合,所以能正确提取到所需的账户信息。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:03:21