如何将多个命令传送到CSV文件[Powershell]
我正在尝试获取服务器上所有文件夹的文件夹信息和安全信息。 但我对这里的Powershell不太熟悉。介意帮个新手吗 如何将安全acl管道传输到文本文件中? 以及文件夹名称、大小、子文件夹数等成员对象如何将多个命令传送到CSV文件[Powershell],powershell,Powershell,我正在尝试获取服务器上所有文件夹的文件夹信息和安全信息。 但我对这里的Powershell不太熟悉。介意帮个新手吗 如何将安全acl管道传输到文本文件中? 以及文件夹名称、大小、子文件夹数等成员对象 # Step 1 Get Folder Path function Select-Folder($message='Select a folder', $path = 0) { $object = New-Object -comObject Shell.Application
# Step 1 Get Folder Path
function Select-Folder($message='Select a folder', $path = 0) {
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null) {
$folder.self.Path
}
}
#Step 2:Search For Directories
$dirToAudit = Get-ChildItem -Path (Select-Folder 'Select some folder!') -recurse | Where {$_.psIsContainer -eq $true}
foreach ($dir in $dirToAudit)
{
#Step 3: Output: [Folder Path, Name, Security Owner, Size, Folder Count]
#Pipe To CSV Text File
Get-Acl -Path $dir.FullName | Select-Object PSPath, Path,Owner | export-csv C:\temp\SecurityData.csv
#I also want the Folder path, Size and SubFolder Count
}
#Step 4: Open in Excel
invoke-item -path C:\temp\SecurityData.csv
以下是一些我发现在这方面有用的网站:
这项任务并不特别容易。首先,您需要创建一个包含所需属性的自定义对象。这些属性将通过不同的命令添加,例如:
$objs = Get-ChildItem . -r |
Where {$_.PSIsContainer} |
Foreach {new-object psobject -prop @{Path=$_.FullName;Name=$_.Name;FolderCount=$_.GetDirectories().Length}}
$objs = $objs | Foreach { Add-Member NoteProperty Owner ((Get-Acl $_.Path).Owner) -Inp $_ -PassThru}
$objs | Export-Csv C:\temp\data.csv
获取文件夹大小将需要一些额外的计算工作。那么PSobject是哈希表数据类型吗?PSobject可用于创建自定义对象,也就是说,您可以在其中向对象添加属性和方法。您也可以将其视为创建记录或结构的一种方式。