將每個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