通過

2017-05-26 100 views
1

將每個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,那麼對於寫入輸出可能需要去的地方,真的很感謝。

+0

管所需輸出字符串'出文件-Path路徑\到\ log.file -Append' –

+0

@ MathiasR.Jessen - 這會工作,但如果性能是一個問題,在循環中使用'Out-File'不是一個好主意;由於每次在循環中打開和關閉文件都有很多開銷。安全性較低但效率較高的可能是在循環中累積一組條目,並在循環退出時在一個操作中寫出整個數組。 –

+0

@JeffZeitlin腳本失敗會發生什麼?你將失去所有的記錄事件 – 4c74356b41

回答

0

我個人傾向於在腳本中添加日誌功能。像這樣的東西(在這裏我輸出到主機和文件):

Function Log { 
    Param (
     [Parameter(Mandatory=$true)] [string] $String, 
     [Parameter(Mandatory=$true)] [string] $LogFilePath, 
     [Parameter(Mandatory=$false)][ValidateSet("ERROR","WARN","INFO","DEBUG")] [string] $Level = "INFO" 
    ) 
    $LogString = ((Get-Date -Format "s") +" $Level $env:USERNAME $String") 
    Write-Host $LogString 
    Out-File -Append -FilePath $LogFilePath -InputObject $LogString 
} 

那麼你可以做日誌記錄:

Log "Something wrong!" "c:\mylog.log" "WARN" 
Log "Updated stuff" "c:\mylog.log" 

或搜索http://www.powershellgallery.com/用於記錄模塊。

例(沒有試過一個自己): https://www.powershellgallery.com/packages/PSLogging/2.5.2