PowerShell从CSV打印站点MasterPage

时间:2018-04-16 23:26:06

标签: powershell csv parsing sharepoint master-pages

适用于SharePoint Online

我有一张CSV,列出了网站名称及其网址。它包含2列:

SiteName和SiteURL

我正在尝试创建一个PowerShell脚本,该脚本将读取CSV文件,阅读SiteURL。然后让它返回网站的名称和它正在使用的MasterPage。结果可以在屏幕上返回,也可以导出到另一个CSV。

以下是我正在尝试的代码但是我在添加正确的CMDLETS时遇到了问题。我对PowerShell很新,任何帮助都会非常感激。

ng

运行脚本时收到此错误消息 Error When I run the script

1 个答案:

答案 0 :(得分:0)

假设你有$siteurls的集合,你可以尝试类似下面的内容:

foreach($url in $siteurls)
{
    $web = Get-SPWeb($url);
    $masterPage = $web.GetFile($web.MasterUrl);
    $masterPage.Name //name of the masterpage
    $web.Title //name of the website
}

让我知道这是否有效。

修改

更新的答案:这包括逐行阅读CSV文件和处理。一些假设如下:

  1. 您有两列名为SiteNameSiteUrl
  2. 您的CSV文件实际上是以逗号分隔的。如果不是,则在阅读CSV文件时需要使用-delimeter开关。
  3. 更新的代码现在是:

    $fileToRead= Import-CSV -Path <absolute path of your CSV file here>
    
    foreach($site in $fileToRead)
    {
        $web = Get-SPWeb($site.SiteUrl); //this reads the SiteUrl value in the current line
        $masterPage = $web.GetFile($web.MasterUrl);
        $masterPage.Name //name of the masterpage
        $web.Title //name of the website
    }
    

    修改

    更新了使用SharePoint PNP的答案

    connect-SPOService -Url $ adminUrl -Credential $ pscreds

    $fileToRead= Import-CSV -Path C:\...\sitemasterpages.csv
    
    foreach($site in $fileToRead)
    {
        $web = Get-Pnpweb($site.SiteUrl); 
        $masterPage = $web.Get-Pnpfile($web.MasterUrl);
        $masterPage.Name 
        $web.Title 
    }
    

    请注意,我使用了基于SharePoint PnP here文档的Get-Pnpfile。