Bri*_*ian 8 string powershell sharepoint roles
我创建了一个脚本,该脚本基本上遍历站点及其子站点中的所有列表,并列出每个文档或项目的权限。
\n\n但是,该脚本可以正常工作,当写入 CSV 文件时,权限(成员 + 角色)字符串将被写入而System.Object[]
不是 CSV 输出中的正确字符串(例如Member: user123 Role: Full Control
)。
示例输出:
\n\n"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"\n
Run Code Online (Sandbox Code Playgroud)\n\n下面是脚本:
\n\nAdd-PSSnapin Microsoft.SharePoint.PowerShell\n\nfunction Get-DocInventory([string]$siteUrl) {\n $site = New-Object Microsoft.SharePoint.SPSite $siteUrl\n\n $i = 0;\n foreach ($web in $site.AllWebs) {\n\n $count = $site.AllWebs.Count\n foreach ($list in $web.Lists) {\n\n if ($list.BaseType -ne \xe2\x80\x9cDocumentLibrary\xe2\x80\x9d)\n {\n continue\n }\n\n foreach ($item in $list.Items) {\n $data = @{\n "Web Application" = $web.ToString()\n "Site" = $site.Url\n "Web" = $web.Url\n "list" = $list.Title\n "Item URL" = $item.Url\n "Item Title" = $item["Title"]\n "Item Created" = $item["Created"]\n "Item Modified" = $item["Modified"]\n "File Size" = $item.File.Length/1KB\n "Permissions" = foreach($roleAssignment in $item.RoleAssignments)\n {\n $Permission = ""\n\n foreach($roleDefinition in $roleAssignment.RoleDefinitionBindings)\n {\n $Permission = $(foreach($roleAssignment in $item.RoleAssignments){$roleAssignment}\n {\n "Member: " + $roleAssignment.Member.LoginName + " Role: " + $roleDefinition.Name + " "\n } -join \',\')\n\n $Permission\n Write-Progress -activity "Working" -status "Checked Sub-Site $i of $count" -percentComplete (($i / $count)/100)\n }\n }\n }\n New-Object PSObject -Property $data\n }\n }\n $web.Dispose();\n }\n $i++\n $site.Dispose()\n}\n<# Get-DocInventory "https://#####.####.###.##/" | Out-GridView #>\nGet-DocInventory "https://#####.####.###.##/" | Export-Csv -NoTypeInformation -Path C:\\Users\\livob002-lap\\Desktop\\Permissions-FinanceIntranet.csv\n
Run Code Online (Sandbox Code Playgroud)\n\n是否可以将用户名的 System.Object[] 作为字符串导出到 CSV 中?这些名称按其应有的方式显示在 GridView 中。
\n有几种方法可以避免它。
\n\n使用\xe2\x80\x93Join
[pscustomobject]@{\n Value = (@(1,3,5,6) -join \',\')\n} | Export-Csv -notype output.csv\n
Run Code Online (Sandbox Code Playgroud)Out-String 和 Trim()
\n\n[pscustomobject]@{\n Value = (@(1,3,5,6) | Out-String).Trim()\n} | Export-Csv -notype output.csv\n
Run Code Online (Sandbox Code Playgroud)参考:使用 Export-Csv 时避免 System.Object[] (或类似输出)
\n小智 4
foreach 语句返回一个数组,因此该行
"Permissions" = foreach($roleAssignment in $item.RoleAssignments)
Run Code Online (Sandbox Code Playgroud)
将 System.Array 分配给键“Permissions”。System.Array 的 ToString() 方法返回 System.Object[]。
您可以使用 -join 运算符将字符串数组“转换”为字符串。以下可以工作。
"Permissions" = foreach($roleAssignment in $item.RoleAssignments)
{
...
} -join ', '
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
72499 次 |
最近记录: |