使用PowerShell从SharePoint进口CSV

发布于 2025-01-24 10:22:00 字数 2815 浏览 3 评论 0原文

希望有人能为此提供帮助。

我有一个通过多个站点集合运行的脚本,并在每个站点集合中获取一个特定的CSV文件。我将特定的CSV URL扔到数组中,然后想从该CSV中获取数据并在 foreach 中使用

它是我

Import-Module "\\path\Connect-SharePoint.psm1"


$SPListConnection = Connect-SharePoint -WebUrl "https://site.sharepoint.com/sites/edmsc/Internal" -CheckForAppCredentials
$SPListWeb = Get-PnPWeb -Connection $SPListConnection
$SPMasterList = Get-PnPList -Connection $SPListConnection -Web $SPListWeb -Identity "Site Collection Central"

$fields = @()
$fields += "ReportLocation"
$fields += "LastRunDate"

$permissionsReports = [System.Collections.ArrayList]::new()

try {
    $SPMasterListItems = Get-PnPListItem -Connection $SPListConnection -Web $SPListWeb -List $SPMasterList -Fields $fields -ScriptBlock {
        Param($items)

        $SPReportFoldersConnection = Connect-SharePoint -WebUrl "https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/" -CheckForAppCredentials
        $SPReportFoldersWeb = Get-PnPWeb -Connection $SPReportFoldersConnection

        foreach ($item in $items) {
            try {
                $Report_Location = [string]$item.FieldValues['ReportLocation'].Url
                $LastRunDate = [DateTime]$item.FieldValues['LastRunDate']

                $officeLocation = ($Report_Location -split "/")[-1]
                $report_year = $LastRunDate.Year.ToString()
                $report_month = $LastRunDate.ToString("MMMM")

                $permissionsListLocation = Get-PnPFolderItem -Connection $SPReportFoldersConnection -Web $SPReportFoldersWeb -FolderSiteRelativeUrl "$officeLocation/$report_year/$report_month" -ItemType File
                
                foreach ($item in $permissionsListLocation) {
                    $item.Name
                    $fileURL = "https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/$officeLocation/$report_year/$report_month/$($item.Name)"

                    if ($item.Name.Contains("permissions")) {
                        $permissionsReports.Add($fileURL)
                        }
                }

            }
            catch {

            }

        }
    }
}
catch {
    #Continue without doing anything
}

现在如何获得 CSV URL并导入每个CSV并在其中使用数据。这可能吗?

当我尝试这个错误时,

foreach ($item in $permissionsReports) {
      Import-Csv -Path $item
  }

我会有一个错误 import-csv:找不到驱动器。具有“ HTTPS”名称的驱动器不存在。

编辑: 添加$许可报告的输出

https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/BCS/2022/March/bcs-permissions-03-24-2022.csv
https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/DRR/2022/March/drr-permissions-03-24-2022.csv
https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/CISR_Analytics/2022/March/cisr_analytics-permissions-03-24-2022.csv

Hoping someone can help with this.

I have a script that runs through multiple site collections and gets a specific CSV file on each site collection. I am throwing the specific CSV URL into an array then wanting to pull data from that CSV and use it in a foreach

Here is how I am getting the CSV URL

Import-Module "\\path\Connect-SharePoint.psm1"


$SPListConnection = Connect-SharePoint -WebUrl "https://site.sharepoint.com/sites/edmsc/Internal" -CheckForAppCredentials
$SPListWeb = Get-PnPWeb -Connection $SPListConnection
$SPMasterList = Get-PnPList -Connection $SPListConnection -Web $SPListWeb -Identity "Site Collection Central"

$fields = @()
$fields += "ReportLocation"
$fields += "LastRunDate"

$permissionsReports = [System.Collections.ArrayList]::new()

try {
    $SPMasterListItems = Get-PnPListItem -Connection $SPListConnection -Web $SPListWeb -List $SPMasterList -Fields $fields -ScriptBlock {
        Param($items)

        $SPReportFoldersConnection = Connect-SharePoint -WebUrl "https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/" -CheckForAppCredentials
        $SPReportFoldersWeb = Get-PnPWeb -Connection $SPReportFoldersConnection

        foreach ($item in $items) {
            try {
                $Report_Location = [string]$item.FieldValues['ReportLocation'].Url
                $LastRunDate = [DateTime]$item.FieldValues['LastRunDate']

                $officeLocation = ($Report_Location -split "/")[-1]
                $report_year = $LastRunDate.Year.ToString()
                $report_month = $LastRunDate.ToString("MMMM")

                $permissionsListLocation = Get-PnPFolderItem -Connection $SPReportFoldersConnection -Web $SPReportFoldersWeb -FolderSiteRelativeUrl "$officeLocation/$report_year/$report_month" -ItemType File
                
                foreach ($item in $permissionsListLocation) {
                    $item.Name
                    $fileURL = "https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/$officeLocation/$report_year/$report_month/$($item.Name)"

                    if ($item.Name.Contains("permissions")) {
                        $permissionsReports.Add($fileURL)
                        }
                }

            }
            catch {

            }

        }
    }
}
catch {
    #Continue without doing anything
}

Now I want to be able to take that array and import each CSV and use the data on there. Is this possible??

When I try this

foreach ($item in $permissionsReports) {
      Import-Csv -Path $item
  }

I get an error
Import-Csv : Cannot find drive. A drive with the name 'https' does not exist.

EDIT:
Adding output of $permissionReports

https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/BCS/2022/March/bcs-permissions-03-24-2022.csv
https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/DRR/2022/March/drr-permissions-03-24-2022.csv
https://site.sharepoint.com/sites/edmsc/Corp/SiteCollectionReports/CISR_Analytics/2022/March/cisr_analytics-permissions-03-24-2022.csv

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文