簡體   English   中英

檢索在 powershell 日期范圍內修改的文件的完整路徑和文件權限

[英]Retrieve full path and file permissions of file modified between date range in powershell

考慮到這是我在 stackoverflow 上發表的第一篇文章,對 PowerShell 來說還很新; 我會要求大家對您的答復溫和一點。

我正在嘗試在一個巨大的生產服務器的日期范圍內修改內容。 我希望將內容導出到一個 .csv 文件,其中的列表示 FullName、LastWriteTime、用戶/組、包含修改后文件的關聯文件夾的權限,以及它是否已被繼承。

我瀏覽了大量的論壇、文章等,但未能獲得所需的 output。這是我一直試圖運行的代碼:

    $BaseFolder = "<path to be traversed>"

[datetime]$start = '2019-10-05 00:00:00'
[datetime]$end = '2020-10-25 00:00:00'

$Acl = Get-Acl -Path $BaseFolder

#For each Group or Username in ACL   
$Files = ForEach ($Access in $Acl.Access){

Get-ChildItem -Path $BaseFolder -Recurse -Force | Where-Object { $_.LastWriteTime -gt $start -AND $_.LastWriteTime -lt $end } | 
Select-Object #FullName, LastWriteTime
              @{Name='Path';Expression={$_.FullName}},
              @{Name='LastWriteTime';Expression={$_.LastWriteTime}},
              @{Name='Group/User';Expression=$Access.IdentityReference},
              @{Name='Permissions';Expression=$Access.FileSystemRights},
              @{Name='Inherited';Expression=$Access.IsInherited}

} 

$Files | Export-Csv "<save-path>\Folder-Permissions-$((Get-Date).ToString("yyyy-MM-dd_HHmmss")).csv" -NoTypeInformation

以下是一些屏幕截圖,以獲得更好的想法:

當前output:
雖然這確實產生了一些輸出,但這不是我想要的。

所需的 output:
我想要一個類似於這個的輸出(我已經大量編輯了這個截圖)

非常感謝任何幫助,並在此先感謝您!

問候,

曼尼

我想是select-object之后的注釋弄亂了一切,因為之后有一個換行符,哈希表不會作為 arguments 傳遞給命令。 您的表達式定義也存在問題(您必須將它們放在腳本塊{}中)。

這應該有效:

$BaseFolder = "<path to be traversed>"

[datetime]$start = '2019-10-05 00:00:00'
[datetime]$end = '2020-10-25 00:00:00'

$Acl = Get-Acl -Path $BaseFolder

$Files = ForEach ($Access in $Acl.Access){
    Get-ChildItem -Path $BaseFolder -Recurse -Force |
        Where-Object { $_.LastWriteTime -gt $start -AND $_.LastWriteTime -lt $end } | 
        Select-Object @{Name='Path';Expression={$_.FullName}},
                      @{Name='LastWriteTime';Expression={$_.LastWriteTime}},
                      @{Name='Group/User';Expression={$Access.IdentityReference}},
                      @{Name='Permissions';Expression={$Access.FileSystemRights}},
                      @{Name='Inherited';Expression={$Access.IsInherited}}
} 

$Files | Export-Csv "<save-path>\Folder-Permissions-$((Get-Date).ToString("yyyy-MM-dd_HHmmss")).csv" -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM