Das PnP-Office Open XML-Dateiformat (.pnp)
Wenn Sie eine Vorlage haben, die Dateiverweise (über das <pnp:Files />
-Element) müssen Sie sowohl die XML-Datei wie auch die Dateien verteilen, auf die verwiesen wird. Obwohl dies natürlich funktioniert, ist es sehr leicht, Dateien beim Kopieren an einen anderen Speicherort zu übersehen.
Hinweis
Das PnP-Bereitstellungsframework & PnP-Bereitstellungsmodul sind Open-Source-Lösungen mit aktiver Community, die unterstützung dafür bereitstellt. Es gibt keine SLA für den Support des Open-Source-Tools durch Microsoft.
Aus diesem Grund haben wir ein bestimmtes Office Open XML-Format eingeführt, das als PnP-Datei bezeichnet wird. Tatsächlich handelt es sich um eine ZIP-Datei mit einer bestimmten Struktur. Wenn Sie die .pnp-Datei auf die Erweiterung .zip umbenennen, können Sie die Datei einfach öffnen und sie sich ansehen.
Dateien
Wenn Sie den Dateiordner im gezippten Ordner öffnen, sehen Sie viele seltsame Dateinamen, die alle auf einer GUID (Globally Unique Identifier) basieren
Die Vorlage selbst befindet sich in dieser Liste und hat eine .xml-Erweiterung. Bei den anderen Dateien, die Sie sehen, handelt es sich tatsächlich um Dateien, auf die Sie in Ihrer XML-Vorlage verweisen.
Jede Datei wurde umbenannt, um einen eindeutigen Dateinamen zu erhalten. Der Grund dafür ist, dass das Office Open XML-Dateiformat keine Unterordner in dieser Struktur zulässt, aber was wäre, wenn in Ihrer Vorlage auf zwei unterschiedliche Dateien referenziert würde, die den gleichen Dateinamen haben? Angenommen, Sie haben eine Datei namens „project.docx“, die zu Ihrer Bibliothek "freigegebene Dokumente" gehört, und Sie haben eine andere „project.docx“-Datei, die in eine Bibliothek „Projektdokumente“ gehört. Aus diesem Grund benennen wir die Dateien so um, dass Sie über einen eindeutigen Dateinamen verfügen.
Wenn wir die Vorlage anwenden, verwenden wir eine Nachschlagetabelle, um den eigentlichen Dateinamen zu finden. Diese Nachschlagetabelle befindet sich im ProvisioningTemplate
Ordner und heißt files-map.xml
.
Dies ist ein Beispiel für den Inhalt dieser Datei:
<PnPFilesMap xmlns="clr-namespace:OfficeDevPnP.Core.Framework.Provisioning.Connectors.OpenXML.Model;assembly=OfficeDevPnP.Core" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<PnPFilesMap.Map>
<x:String x:Key="19cd09af-97a4-4015-ab9e-22451180702a.xml">theperspective.xml</x:String>
<x:String x:Key="cce8b9eb-73d2-4f72-8f42-2c6eb08e1566.png">assets/__sitelogo___sitelogo_theperspective.png</x:String>
<x:String x:Key="e4d4df2d-dab9-48e6-ab9e-8791d8bd8a86.pdf">assets/documents/Contoso Falcon.pdf</x:String>
<x:String x:Key="c364ce2a-05f0-4cfa-b916-9476004757ba.pdf">assets/documents/Contoso Flex.pdf</x:String>
<x:String x:Key="d06ca829-8e74-42e6-92b7-426899e82243.pdf">assets/documents/Contoso Mark8 Controller.pdf</x:String>
<x:String x:Key="670ef91a-18b1-4869-9ca2-fc573e6eca2f.pdf">assets/documents/Contoso Mark8.pdf</x:String>
<x:String x:Key="b90f3fd6-933f-4c55-a267-298be21c9d32.pdf">assets/documents/Contoso Quad.pdf</x:String>
<x:String x:Key="35667dfc-1a0c-4322-8980-43c58dd6ea70.png">assets/SitePages/2019-sales-leadership-award/sales-leadership-award.png</x:String>
<x:String x:Key="5c886067-3fd3-48bc-974e-75e7fc3aece0.jpeg">assets/SitePages/Contoso-called-on-drone-pilots-to/AdobeStock_145027729.jpeg</x:String>
<x:String x:Key="eeebf271-8661-4429-91f8-a3798b278900.jpg">assets/SitePages/Contoso-partners-with-non-profit-to-deliver-life-saving-supplies/7719-larm-rmah-216854-unsplash.jpg</x:String>
<x:String x:Key="48596918-fcbc-4d48-a0a9-ed966a4d1d65.jpg">assets/SitePages/Miriam-Graham--Contoso-s-new-Chief-Marketing-Officer/CLO17_azure_004.jpg</x:String>
<x:String x:Key="ceb43a63-37e5-4730-aad0-58fb5c3ea711.jpg">assets/SitePages/One-million-drones-sold-in-2018/kevin-chow-176761-unsplash.jpg</x:String>
<x:String x:Key="936af989-985e-4f2a-9f16-39da9c2e8dea.jpg">assets/SitePages/One-million-drones-sold-in-2018/white-drone-hovering-in-a-bright-blue-sky-PFV2XG7.jpg</x:String>
<x:String x:Key="e79b754e-c9f3-44a0-ae57-00119f326cf7.jpeg">assets/SitePages/Our-commitment-to-sustainability/AdobeStock_83900723.jpeg</x:String>
<x:String x:Key="1fca3e50-1d69-4bd1-87db-d3363803b6c8.jpg">assets/SitePages/Patti-announces-flagship-store-opening/contoso-storefront.jpg</x:String>
<x:String x:Key="63767808-1e11-40f8-956e-475d98e8a9f4.jpeg">assets/SitePages/Pushing-the-Boundaries-on-Aerial-Inspection/AdobeStock_137739028.jpeg</x:String>
<x:String x:Key="d38d36c8-3fff-49aa-8cf2-c6b0a3efcdab.jpg">assets/SitePages/Singapore-building-update--August-2019/12891-artist_rendering.jpg</x:String>
<x:String x:Key="229a203c-64cb-463c-b6ff-5c3e8c6fa631.jpeg">assets/SitePages/The-future-of-air-traffic--safely-sharing-the-skies-with-drones/AdobeStock_132294759.jpeg</x:String>
<x:String x:Key="979f54ef-cb91-4c49-97b0-4d93e62c1ab2.png">assets/SitePages/The-importance-of-branding-at-Contoso/SBLB-BRANDING.png</x:String>
<x:String x:Key="a6e4fc79-27c5-4f66-b540-fcb4ce1783c9.jpg">assets/SitePages/ThePerspective/23363-showcase.jpg</x:String>
<x:String x:Key="4bde9cf8-20c0-41a2-a28a-32d502d1e030.jpg">assets/SitePages/ThePerspective/27137-consumer-showcase-thumb-1.jpg</x:String>
<x:String x:Key="8561942b-8c11-4b30-afca-0bfd3a8a4c45.jpg">assets/SitePages/ThePerspective/33318-consumer-showcase-thumb-2.jpg</x:String>
<x:String x:Key="c60d109a-21ad-4d3e-b9b4-d92168a463e8.jpg">assets/SitePages/ThePerspective/1548836252flysafe-thumb.jpg</x:String>
<x:String x:Key="a553db37-a27f-48a1-8c25-72e3fd6479b3.jpeg">assets/SitePages/ThePerspective/AdobeStock_109868254.jpeg</x:String>
<x:String x:Key="cfd7e6e5-0c92-4f61-8713-ae6942e9d1c6.jpeg">assets/SitePages/ThePerspective/AdobeStock_132294759.jpeg</x:String>
<x:String x:Key="659ca9d3-081c-46c7-b0e5-23bb6e8bfaf9.jpg">assets/SitePages/ThePerspective/cta-banner.jpg</x:String>
<x:String x:Key="abcc211e-18fc-4864-9c06-724b47164102.jpg">assets/SitePages/ThePerspective/nasa-_SFJhRPzJHs-unsplash.jpg</x:String>
<x:String x:Key="ca166bc3-c2ec-44bf-8933-2a688d8702d2.png">assets/SitePages/Why-simplicity-matters/poster-patti-quote.png</x:String>
</PnPFilesMap.Map>
</PnPFilesMap>
Sie sehen, dass für jede Datei, die Sie im Files
-Ordner finden, ein übereinstimmender Eintrag in der files-map.xml
-Datei vorhanden ist.
Manuelles Bearbeiten
Prinzipiell ist es möglich, die .pnp-Datei manuell zu bearbeiten, indem die ZIP-Datei in einen Ordner extrahieren, dort Dateien aktualisieren und hinzufügen und die files-map.xml
-Datei ändern. Wir empfehlen jedoch, dass Sie die PnP-PowerShell verwenden, um diese Arbeit für Sie zu erledigen.
Erstellen einer PnP-Datei
Die einfachste Möglichkeit zum Erstellen einer PnP-Datei besteht darin, eine Vorlage aus einer Website zu extrahieren und die .pnp-Erweiterung anzugeben. Der Cmdlet erledigen diese Arbeit für Sie:
Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
Get-PnPSiteTemplate -Out myfile.pnp
Hinweis
PnP PowerShell ist eine Open Source-Lösung mit aktiver Community, die Support dafür bietet. Es gibt keine SLA für den Support des Open-Source-Tools durch Microsoft.
Dies gibt Ihnen jedoch nicht die Möglichkeit, die Vorlage einfach zu ändern. Die bessere Methode ist folgende:
- Erstellen Sie eine Konfigurations-Datei und stellen Sie sicher, dass zumindest die
persistAssetFiles
-Eigenschaft auftrue
gesetzt ist, wobei Sie optional spezifizieren können, dass Bibliotheken wie SiteAssets, freigegebene Dokumente oder Webeinstellungen (für das Logo usw.) extrahiert werden sollen. - Erstellen Sie einen neuen Ordner in Ihrem Dateisystem, und navigieren Sie mit der PowerShell zu diesem Ordner.
- Extrahieren Sie eine Vorlage als XML-Datei, und geben Sie die Konfigurationsdatei ein:
Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
- Sie werden feststellen, dass in Ihrem Ordner ein oder mehrere zusätzliche Ordner erstellt wurden. Diese enthalten die eigentlichen Dateien. Wenn Sie die XML-Datei öffnen, werden Sie
<pnp:File />
-Elemente bemerken, die auf diese Dateien verweisen. - Lesen Sie die Vorlage in ein In-Memory-Objekt ein und speichern Sie es als PnP-Datei:
$template = Read-PnPSiteTemplate -Path myfile.xml Save-PnPSiteTemplate -Out myfile.pnp -Template $template
Hinweis
Sie können eine Mandantenvorlage auch mit dem PnP-PowerShell-Ersatz Read-PnPSiteTemplate
mit Read-PnPTenantTemplate
und Save-PnPSiteTemplate
mit Save-PnPTenantTemplate
speichern. Weitere Informationen zu Mandantenvorlagen finden Sie unter PnP-Bereitstellung von Mandantenvorlagen.
Weitere Informationen:
- SharePoint Patterns and Practices (PnP)
- SharePoint Developer-Gruppe der Microsoft Tech Community
- PnP-Remotebereitstellung