微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell,提取所有者和用户的SharePoint网站列表,并制作CSV

如何解决PowerShell,提取所有者和用户的SharePoint网站列表,并制作CSV

我正在尝试编写一个PowerShell脚本,该脚本可以部分完成以下任务:

  1. 检索在URL中包含某个单词的SharePoint网站(包括OneDrive网站)列表(完成);
  2. 使用ForEach-Object检索每个站点的所有者和用户列表(完成);
  3. 将这些信息导出到CSV文件中(部分完成);

我的问题是数字3,我试图用一栏表示网站URL,一栏表示所有者,而第三栏表示所有用户, 但是不幸的是,我只能用用户列表来制作csv,下面的代码使我明白了这一点:


$username = "username@domain.onmicrosoft.com"
$password = "password" | ConvertTo-securestring -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
$Tenanturl = "https://domain-admin.sharepoint.com/"

# Connessione all'account Admin SharePoint
Connect-SPOService -Url $TenantUrl -Credential $credential
Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Owner -like 'WordIWantToFilter'" | 

ForEach-Object {
Get-SPOUser -Site $_.Url
} | 

Select-Object -Property LoginName,UserType | 

Export-Csv -Path "C:\Users\User\Desktop\SharePoint_Sites_List.csv" -NoTypeinformation

结果是一个CSV文件,其中的LoginName,单元格A1中的“ UserType”和其他行中的相关信息。


我要完成的工作: 网站网址的第一列, 网站所有者的第二列, 第三列,其中包含每个站点的所有用户


我知道我缺少很多东西,但我不是开发人员:), 这些是我用来编写此代码的一些链接

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-7 https://techcommunity.microsoft.com/t5/sharepoint/list-all-site-collection-admins-powershell/m-p/264135

我应该找什么?我在寻找技巧,甚至只是几段代码, 谢谢

解决方法

我预计您会在这里遇到这种结构的麻烦:

Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Owner -like 'WordIWantToFilter'" | 

ForEach-Object {
Get-SPOUser -Site $_.Url
} | 

Select-Object -Property LoginName,UserType | 

Export-Csv -Path "C:\Users\User\Desktop\SharePoint_Sites_List.csv" -NoTypeInformation

这些管道会使事情变得混乱。作为各种公司的自动化顾问和工程师五年,我避免过分依赖管道,因为它会使调试代码变得棘手且容易出错。

我会这样重写它,以最小化那些管道语句:

$filteredSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Owner -like 'WordIWantToFilter'"

"Found $($filteresSites.Counts) from previous line"

$sitesArray=@() #make empty array to hold results
ForEach($site in $filteredSites){
   $sitesArray += Get-SPOUser -Site $_.Url
}
"Have $($sitesArray.Count) sites from previous line"

#good place to debug the output,btw :)
#prepare to export
"Run in the PowerShell ISE,we will have a left-over object `$sitesArray` we can use to test exporting "

$sitesArray | Select-Object -Property LoginName,UserType | 
Export-Csv -Path "C:\Users\User\Desktop\SharePoint_Sites_List.csv" -NoTypeInformation

然后使用它,在PowerShell ISE中将其全部打开并运行。您将获得一些有用的日志记录到控制台,并且ISE在时间变量后面留下一些状态,这使得故障排除非常容易。

这些更改将使您更容易确定丢失数据的位置。例如,如果您运行此程序并看到一个空文件,并且还有一个空的$sitesArray,则您在$filteredSites中进行过滤的结果太排斥了。

如果您仍然遇到问题,请发布更新。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。