使用PowerShell从SharePoint进口CSV
希望有人能为此提供帮助。
我有一个通过多个站点集合运行的脚本,并在每个站点集合中获取一个特定的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 errorImport-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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论