Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell,提取具有所有者和用户的SharePoint网站列表,并生成CSV_Powershell_Csv_Sharepoint_Foreach_Sharepoint Online - Fatal编程技术网

PowerShell,提取具有所有者和用户的SharePoint网站列表,并生成CSV

PowerShell,提取具有所有者和用户的SharePoint网站列表,并生成CSV,powershell,csv,sharepoint,foreach,sharepoint-online,Powershell,Csv,Sharepoint,Foreach,Sharepoint Online,我正在尝试编写PowerShell脚本,以完成以下任务并获得部分结果: 检索url中包含特定单词的SharePoint网站(包括OneDrive网站)列表(完成) 使用ForEach对象检索每个站点的所有者和用户列表(完成) 在CSV文件中导出这些信息(部分完成) 我的问题是第3列,我试图用一列显示站点URL,一列显示所有者,第三列显示所有用户, 但不幸的是,我只能在用户列表中创建csv,以下是将我带到这一点的代码: 结果是一个CSV文件,其中单元A1中有LoginName、“UserTyp

我正在尝试编写PowerShell脚本,以完成以下任务并获得部分结果:

  • 检索url中包含特定单词的SharePoint网站(包括OneDrive网站)列表(完成)
  • 使用ForEach对象检索每个站点的所有者和用户列表(完成)
  • 在CSV文件中导出这些信息(部分完成) 我的问题是第3列,我试图用一列显示站点URL,一列显示所有者,第三列显示所有用户, 但不幸的是,我只能在用户列表中创建csv,以下是将我带到这一点的代码:



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


    我正在努力实现的目标: 网站URL的第一列, 第二栏为场地所有者, 第三栏是每个网站的所有用户


    我知道我遗漏了很多东西,但我不是一个开发者:), 这些是我用来编写代码的一些链接

    我应该找什么?我在寻找一些提示,甚至是一些代码,
    谢谢

    我预测你会遇到这种结构带来的麻烦:

    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
    中筛选的内容太排他了


    如果仍然卡住,发布更新。

    听起来您的系统可能没有使用
    作为字段分隔符。您可以尝试导出Csv路径“C:\Users\User\Desktop\SharePoint\u Sites\u List.Csv”-NoTypeInformation-UseCulture。是的,我忘了提到我来自意大利,所以分隔符和符号与美国的不一样。
    $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