需求:

用户因HR自动化项目上线,每日会批量更新域用户属性;为防止开发人员出问题后无法及时回滚用户属性相关信息,按照需求在HR计划任务同步前1小时对域用户属性按日期命名做导出操作。

步骤:

1.与研发沟通同步属性字段,确认后台对应域用户属性字段;

2.编写测试域导出用户属性脚本内容;

3.设置计划任务;

脚本内容:

$Ubakdate = "{0:yyyyMMdd}" -f (Get-Date)
$Filename = $Ubakdate + "-Usersattbak.csv"
Get-ADUser -Filter * -Properties * -SearchBase "OU=Staff,DC=azureyun,DC=com" |Select-Object name,SamAccountName,Givenname,surname,Displayname,title,mobile,Created,Department,DistinguishedName,description,manager,
physicalDeliveryOfficeName,streetAddress,EmailAddress,homeMDB,mail,mailNickname,MemberOf,PrimaryGroup,proxyAddresses,UserPrincipalName,whenCreated,whenChanged,
employeeNumber,postalCode,company |Export-Csv D:\UserBak\$Filename  -Encoding UTF8 -NoTypeInformation

注解:

按当前导出时间设置文件名称:

方法一:
$Ubakdate = "{0:yyyyMMdd}" -f (Get-Date)$Filename = $Ubakdate + "-Usersattbak.csv"
方法二:
$Ubakdate = "{0:yyyyMMdd}" -f (Get-Date)$Filename = $Ubakdate + '-' + "Usersattbak.csv"

设置计划任务:

1.创建任务计划程序:

Powershell-按日期命名导出域用户属性_第1张图片

2.设置触发器,每天21:00执行一次:

Powershell-按日期命名导出域用户属性_第2张图片

3.设置触发操作:

Powershell-按日期命名导出域用户属性_第3张图片

4.点击确定,在弹窗中输入对应账户密码:

Powershell-按日期命名导出域用户属性_第4张图片

5.完成计划任务设置。

Powershell-按日期命名导出域用户属性_第5张图片



补充:PowerShell日期格式化选项注解:

符号 类型 调用示例 输出
d 短日期格式 “{0:d}” –f $value 2019/9/3
D 长日期格式 “{0:D}” –f $value 2019年9月3日
t 短时间格式 “{0:t}” –f $value “{0:t}”  –f $value
T 长时间格式 “{0:T}” –f $value 18:18:50
f 完整日期和时间(短) “{0:f}” –f $value 2019年9月3日  18:18
F 完整日期和时间(长) “{0:F}” –f $value 2019年9月3日  18:18:50
g 标准时间 (短) “{0:g}” –f $value 2019/9/3  18:18
G 标准时间长 (长) “{0:G}” –f $value 2019/9/3  18:18
M 月日格式 “{0:M}” –f $value 9月3日
r RFC1123 日期格式 “{0:r}” –f $value Tue, 03  September 2019 18:18:50 GMT
s 排序日期格式 “{0:s}” –f $value 2019-09-03T18:18:50
u 通用日期格式 “{0:u}” –f $value 2019-09-03  18:18:50Z
U 通用排序日期 GMT格式 “{0:U}” –f $value 2019年9月3日  15:18:50
Y 年/月格式模式 “{0:Y}” –f $value 2019年9月

自定义日期格式

dd 一个月中天 “{0:dd}” -f $value 1
ddd 星期的缩写 “{0:ddd}” -f $value 周六
dddd 完整星期 “{0:dddd}” -f $value 星期六
gg 纪年法 “{0:gg}” -f $value 公元
hh 小时0-12 “{0:hh}” -f $value 11
HH 小时0-23 “{0:HH}” -f $value 23
mm 分钟 “{0:mm}” -f $value 18
MM 月份 “{0:MM}” -f $value 6
MMM 月份缩写 “{0:MMM}” -f $value 六月
MMMM 完整月份 “{0:MMMM}” -f $value 六月
ss “{0:ss}” -f $value 55
tt 上午或者下午 “{0:tt}” -f $value 下午
yy 两位数字的年份 “{0:yy}” -f $value 13
yyyy 四位数字的年份 “{0:yyyy}” -f $value 2019
zz 不包含分钟的时区 “{0:zz}” -f $value 8
zzz 包含分钟的时区 “{0:zzz}”  -f $value +08:00


Powershell-按日期命名导出域用户属性_第6张图片