我创建了一个脚本,基本上遍历站点及其子网站中的所有列表,并列出每个文档或项的权限。
脚本可以正常运行,但是在写入CSV文件时,权限(成员+角色)字符串被写为
示例输出:
以下是脚本内容:
脚本可以正常运行,但是在写入CSV文件时,权限(成员+角色)字符串被写为
System.Object []
,而不是CSV输出中的正确字符串(例如Member:user123 Role:Full Control
)。示例输出:
"Common Hover Panel Actions", "https://#######.####.###.##", "https://######.######.#####.####", "System.Object[]", " Ministry for Finance", "Master Page Gallery", "12/22/2015 8:34:39 AM", "_catalogs/masterpage/Display Templates/Search/Item_CommonHoverPanel_Actions.js", "12/22/2015 8:34:39 AM", "6.2763671875"
以下是脚本内容:
Add-PSSnapin Microsoft.SharePoint.PowerShell
function Get-DocInventory([string]$siteUrl) {
$site = New-Object Microsoft.SharePoint.SPSite $siteUrl
$i = 0;
foreach ($web in $site.AllWebs) {
$count = $site.AllWebs.Count
foreach ($list in $web.Lists) {
if ($list.BaseType -ne “DocumentLibrary”)
{
continue
}
foreach ($item in $list.Items) {
$data = @{
"Web Application" = $web.ToString()
"Site" = $site.Url
"Web" = $web.Url
"list" = $list.Title
"Item URL" = $item.Url
"Item Title" = $item["Title"]
"Item Created" = $item["Created"]
"Item Modified" = $item["Modified"]
"File Size" = $item.File.Length/1KB
"Permissions" = foreach($roleAssignment in $item.RoleAssignments)
{
$Permission = ""
foreach($roleDefinition in $roleAssignment.RoleDefinitionBindings)
{
$Permission = $(foreach($roleAssignment in $item.RoleAssignments){$roleAssignment}
{
"Member: " + $roleAssignment.Member.LoginName + " Role: " + $roleDefinition.Name + " "
} -join ',')
$Permission
Write-Progress -activity "Working" -status "Checked Sub-Site $i of $count" -percentComplete (($i / $count)/100)
}
}
}
New-Object PSObject -Property $data
}
}
$web.Dispose();
}
$i++
$site.Dispose()
}
<# Get-DocInventory "https://#####.####.###.##/" | Out-GridView #>
Get-DocInventory "https://#####.####.###.##/" | Export-Csv -NoTypeInformation -Path C:\Users\livob002-lap\Desktop\Permissions-FinanceIntranet.csv
在CSV中将System.Object []的用户名导出为字符串是否可能?名称在GridView中显示正常。