PowerShell 日志功能不写入数据

问题描述 投票:0回答:0

我正在尝试为我在 PowerShell 中从事的项目创建可重用的日志功能。我是 PowerShell 的新手,所以我无法弄清楚为什么我的函数没有产生预期的结果。我正在尝试创建一个将 NTFS/ACL 详细信息发送到日志文件的函数。此函数将合并到一个更大的脚本中,该脚本将更改某些 NTFS/ACL/ACE 文件夹权限。为了简化(更改权限),我排除了一些其他代码。

下面是我当前的精简代码。当它运行时,它会创建日志文件,但该文件是空的。如果我在日志函数中移动创建日志的代码行,它会创建包含数据的日志文件,但格式不正确 - 它在一行中写入标题(对象属性名称),然后是数据,然后是带有标题的新行,然后是数据。我想让它写标题,然后是一行数据,一行数据,....在我为此创建一个函数之前,它按预期工作。我是 PowerShell 的新手,所以我可能不了解如何将信息传入和传出函数。我的代码:

#variables
$rootDir = "\\server1\share1"
$logDir = "c:\temp"
$date = (Get-Date -Format "MMddyyyy-HHmm")
$logData =@()

#My Logging Function
Function CreateLog {
    #create and object to store attributes
    $logObj = New-Object -TypeName psobject -Property @{
        FolderPath = $Folder.Fullname
        IdentityReference = $ACL.IdentityReference.ToString()
        folder = $Folder[0]
        FileSystemRights = $ACL.FileSystemRights.ToString()
        InheritanceFlags = $ACL.InheritanceFlags.ToString()
    }

$Folders=(Get-ChildItem -Path $rootDir -Directory -Recurse)

foreach ($Folder in $Folders){

    $ACLs = get-acl $Folder.fullname | ForEach-Object {$_.Access}
    Foreach ($ACL in $ACLs){
        CreateLog
        if($ACL.FileSystemRights -eq "FullControl"){ 
            Write-Host "DO SOMETHING" 
        }
    }

$logData | select folder,IdentityReference,FileSystemRights,InheritanceFlags,FolderPath | Format-Table -Wrap | Out-File $logDir\testlog-$date.log -Append
powershell function logging
© www.soinside.com 2019 - 2024. All rights reserved.