我正在尝试为我在 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