将每个Powershell进程记录到文本文件首先,我绝不是PS专家,总新手 - 完成录取。为了让脚本能够做我想做的事,我已经在互联网上搜索了我需要的东西,但是我已经达到了一个我正在努力并需要帮助的地步。通过
基本上,我使用ISE创建了一个脚本,用于抓取AD OU中的用户,通过禁用帐户,重命名帐户,剥离组并将它们移动到另一个文件夹来处理它们。为了自动化用户的停用过程。但我现在需要在每次运行时创建一个日志文件,以显示a)是否在原始OU(ToBeProcessed)中找到了任何用户,以及b)运行了哪些进程以及它们是否成功。这是代码。
$OUToBeProcessed = "OU=ToBeProcessed,OU=Users,OU=World,DC=local"
$OURetired = "OU=RetiredUsers,OU=Users,OU=World,DC=local"
$Users = Get-ADUser -SearchBase $OUToBeProcessed -Filter 'name -Like "*"' -Properties MemberOf
ForEach($User in $Users){
$SAN = $User.SamAccountName
#Disable user account
Disable-ADAccount -Identity $SAN
#Remove membership from groups for user
$User.Memberof | Remove-ADGroupMember -Member $User -Confirm:$False
$NewDN = "zzz_" + $User.Name
#Change display name
set-aduser $User -Displayname $newDN -ErrorAction SilentlyContinue
#Change distinguished name
Get-ADUser $SAN | Rename-ADObject -Newname $NewDN
Write-Host "$SAN may already exist."
#Move account to RetiredUsers
Get-Aduser $SAN | Move-ADObject -TargetPath $OURetired
}
我假设我要么需要使用写输出或日志文件cmdlet的,虽然有人还建议成绩单,但我不认为这就是我所需要的。
我已经尝试了许多方法将写入输出合并到脚本中,它运行时没有错误,但没有生成文本文件。但是我把它放在可能是问题的循环中。我把它放在循环之外,但我认为它不会被传递任何东西,它会创建没有任何内容的文件。如果这是合适的cmdlet,那么对于写入输出可能需要去的地方,真的很感谢。
管所需输出字符串'出文件-Path路径\到\ log.file -Append' –
@ MathiasR.Jessen - 这会工作,但如果性能是一个问题,在循环中使用'Out-File'不是一个好主意;由于每次在循环中打开和关闭文件都有很多开销。安全性较低但效率较高的可能是在循环中累积一组条目,并在循环退出时在一个操作中写出整个数组。 –
@JeffZeitlin脚本失败会发生什么?你将失去所有的记录事件 – 4c74356b41