簡體   English   中英

從Powershell腳本中排除結果

[英]Exclude Results from Powershell Script

我正在創建一個Powershell腳本,該腳本提取與目錄關聯的權限並將結果輸出到CSV。 該腳本當前可以正常運行,但是,現在我要從列表中排除“ NT AUTHORITY \\ SYSTEM”和“ BUILTIN \\ Administrators”帳戶。 您能告訴我如何實現嗎?

$FolderPath = dir -Directory -Path "C:\GMT\Common\" -Recurse -Force
$Report = @()
Foreach ($Folder in $FolderPath) {
$Acl = Get-Acl -Path $Folder.FullName
foreach ($Access in $acl.Access)
    {
        $Properties = [ordered]@{'FolderName'=$Folder.FullName;'AD Group or User'=$Access.IdentityReference;'Permissions'=$Access.FileSystemRights}
        $Report += New-Object -TypeName PSObject -Property $Properties
    }
}
$Report | Export-Csv -path "C:\Temp\server_permissions.csv"

你可以只使用一個if語句來像這樣:

$FolderPath = dir -Directory -Path "C:\GMT\Common\" -Recurse -Force
$Report = @()
Foreach ($Folder in $FolderPath) {
    $Acl = Get-Acl -Path $Folder.FullName
    foreach ($Access in $acl.Access) {
        if (!($Access.IdentityReference -eq "BUILTIN\Administrators") -and !($Access.IdentityReference -eq "NT AUTHORITY\SYSTEM")) {
            $Properties = [ordered]@{
                'FolderName'       = $Folder.FullName
                'AD Group or User' = $Access.IdentityReference
                'Permissions'      = $Access.FileSystemRights
            }
            $Report += New-Object -TypeName PSObject -Property $Properties
        }
    }
}
$Report | Export-Csv -path "C:\Temp\server_permissions.csv"

如果您稍微重構代碼以使用管道,則可以使用Where-Object進行過濾:

Get-ChildItem -Directory -Path "C:\GMT\Common\" -Recurse -Force |
    ForEach-Object {
        $folder = $_
        (Get-Acl -Path $folder.FullName).Access |
            Where-Object IdentityReference -notin "NT AUTHORITY\SYSTEM","BUILTIN\Administrators" |
                ForEach-Object {
                    [PsCustomobject]@{
                        'FolderName'   = $folder.FullName
                        'ADGroupOrUser'= $_.IdentityReference
                        'Permissions'  = $_.FileSystemRights
                    }
                }                
     } | Export-Csv -path "C:\Temp\server_permissions.csv" -NoTypeInformation

即使您不想使用此方法,我也建議避免在屬性名稱中使用空格,例如'AD Group or User' = $Access.IdentityReference 盡管此方法有效,但以后只會給您帶來不必要的麻煩。

暫無
暫無

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

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