Wstęp

Przechowywanie wersji w listach i w bibliotekach pozwala śledzić i zarządzać informacjami w trakcie ich rozwoju oraz przeglądać i, w razie potrzeby, przywrócić wcześniejsze wersje pliku lub elementu. Jest to niezwykle przydatne, przykładowo kiedy zdamy sobie sprawę, że wcześniejsza wersja może być bardziej odpowiednia niż późniejsza. Przechowywanie wersji dyktowane jest też względami administracyjnymi czy prawnymi i niektóre organizacje mogą podjąć decyzję o zachowaniu wielu wersji elementów w swoich listach ze względów prawnych lub dla celów audytu. 

Zastosowanie

Przechowywanie wersji ma wiele zastosowań. Po uruchomieniu ustawienia można:

Śledzić historię wersji Po włączeniu przechowywania wersji, można zobaczyć, kiedy dany element lub plik został zmieniony i kto je zmienił. Widać też, kiedy zmieniono właściwości (informacje o pliku). Na przykład, jeśli ktoś zmienia termin elementu listy, w wersji historii pojawia się taka informacja. Można również zobaczyć komentarze dodawane przez użytkowników, kiedy Ci ewidencjonują pliki do biblioteki.

Przywracać poprzednie wersje Jeśli popełniono błąd w obecnej wersji, jeśli obecna wersja jest uszkodzona, lub jeśli po prostu poprzednia wersja bardziej odpowiada obecnym wymogom, można zastąpić aktualną wersję wersją poprzednią. Przywrócona wersja staje się nową wersją.

Zobaczyć poprzednią wersję Można wyświetlić poprzednią wersję bez zastąpienia bieżącej wersji. Jeśli oglądasz wersję historii w programie Microsoft Office, takim jak plik Word lub Excel, można porównać dwie wersje w celu ustalenia, jakie są różnice.
Źródło: Jak działa przechowywanie wersji na listach i w bibliotekach?


Obsługiwane listy i biblioteki

Funkcja przechowywania wersji jest dostępna dla elementów list we wszystkich domyślnych typach list — w tym kalendarzy i listach niestandardowych. Opcja ta jest również dostępna dla wszystkich typów plików, które mogą być przechowywane w bibliotekach, w tym stron składników Web Part. Domyślnie przechowywanie wersji jest wyłączone (z wyjątkiem nowych OneDrive dla Firm)

Wymagane uprawnienia

Każdy, kto ma uprawnienia do zarządzania listami może włączyć lub wyłączyć przechowywanie wersji w opcjach biblioteki. 2  Kiedy spojrzymy na domyślne poziomy uprawnień w subskrypcji SharePoint, możemy zobaczyć, że Pełna Kontrola, Projektowanie lub Edycja obejmują uprawnienia do zarządzania listą. 3  Można to sprawdzić w tabeli w artykule tu lub na swojej własnej subskrypcji pod adresem:

https://TENANT.SharePoint.com/sites/SITECOLLECTIONNAME/_layouts/15/Start.aspx#/ _layouts/15/editrole.aspx?role=ROLENAME, na przykład:

https://trialtrial125.SharePoint.com/sites/TeamsiteWithLibraries/_layouts/15/Start.aspx#/ _layouts/15/editrole.aspx?role=Design

Można również utworzyć niestandardowy poziom uprawnień, który będzie zawierać uprawnienia "Zarządzanie listami". Taki poziom uprawnień również pozwoli użytkownikom zmieniać ustawienia wersji.

Kiedy tworzone są wersje

Istnieje szereg akcji, które powodują utworzenie wersji. Po włączeniu przechowywania wersji, wersji są tworzone w następujących sytuacjach:

* Gdy element listy lub plik jest początkowo tworzony lub kiedy plik jest przekazywany. Należy pamiętać, że jeśli włączono ustawienie biblioteki, która wymaga wyewidencjonowania pliku, należy zaewidencjonować plik, aby stworzyć swoją pierwszą wersję.

* Gdy wgrany jest plik, który ma taką samą nazwę jak istniejący plik i pole wyboru "dodaj jako nowa wersja do istniejących plików" jest zaznaczone.

* Kiedy właściwości elementu listy lub pliku są edytowane lub ulegają zmianie.

* Gdy plik zostaje otwarty, edytowany i zapisywany. Wersja jest tworzona, gdy po raz pierwszy naciśnięty zostanie przycisk Zapisz. Plik zachowuje ten sam numer wersji na czas bieżącej sesji edycji, pomimo zapisywania go kilka razy. Kiedy plik zostanie zamknięty i ponownie otwarty w nwej sesji edycji, wówczas tworzona jest nowa wersja.

* Podczas współtworzenia dokumentów, gdy inny użytkownik rozpoczyna pracę na dokumencie lub gdy użytkownik kliknie przycisk Zapisz, aby przesłać zmiany do biblioteki. Domyślny okres tworzenia nowej wersji podczas współtworzenia to 30 minut. Wśrodowisku SharePoint Server ustawienia te mogą być konfigurowane na poziomie aplikacji. Tych ustawień nie można konfigurować w usłudze SharePoint Online.

Przechowywanie wersji z interfejsu użytkownika


1. Otwórz listę lub bibliotekę.

2. Kliknij na zakładkę Lista lub Biblioteka.



3. Po prawej stronie wstążki kliknij na Ustawienia biblioteki.



3. W ustawieniach ogólnych wybierz opcję Ustawienia przechowywania wersji.




4. W Dokument - historia wersji wybierz opcję 
Utwórz wersje główne.




5. Kliknij OK, aby zapisać.


Włącz przechowywanie wersji przy użyciu Powershell


Wymagania



PowerShell ISE
SharePoint Online SDK.

Szczegółowe instrukcje z ilustracjami, jak zainstalować SharePoint Online SDK i uruchomić Powershell ISE można zobaczyć tutaj.


Krok po kroku z komentarzem


W oknie ISE dodaj ścieżki do programu SharePoint Online SDK zainstalowanego wcześniej. Sprawdź, czy ścieżki są dokładnie takie same, np. w systemie Windows Server może trzeba zmienić 15 na 16:

Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

Wprowadź poświadczenia, listę i witrynę, gdzie chcesz zmienić ustawienia wersji

$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString
$username="trial@trialtrial125.onmicrosoft.com"
$ListTitle="Not-Empty-Document-Library"
$Versioning=$true

Dobrą praktyką jest, aby zachować wszystkie informacje, które użytkownik może zmienić w jednym miejscu, zamiast rozkładać je po całym kodzie tak, abyśmy musieli je wyszukiwać, gdy w przyszłości będziemy chcieli go ponownie użyć. Warto więc podjąć decyzję, czy będziemy chcieli włączyć przechowywanie wersji lub wyłączyć tę opcję i przechować tą decyzję jako zmienną bool:

$Versioning=$true

Jak widać, postanowiłam włączyć przechowywanie wersji na mojej liście.
 

Teraz należy zrobić coś z danymi, które dostarczyliśmy. Dla większości działań warto umieścić je w postaci funkcji. Funkcje są blokami kodu przeznaczonymi do wykonywania określonego zadania. Jeśli zamkniemy nasze polecenia w takim bloku, to będzie bardzo łatwo wykorzystać je ponownie później. I na tym właśnie polega automatyzacja :)

function Set-SPOListVersioning
{
 
}


Funkcję można akceptować Parametry, określone w () obok nazwy funkcji lub w sposób pokazany poniżej:

param (
        [Parameter(Mandatory=$true,Position=0)]
        [string]$ListName,
        [Parameter(Mandatory=$true,Position=1)]
        [bool]$Versioning,
        [Parameter(Mandatory=$true,Position=2)]
        [string]$Username,
        [Parameter(Mandatory=$true,Position=3)]
        [string]$Url,
        [Parameter(Mandatory=$true,Position=4)]
        $password
        )


Utwórzmy teraz kontekst naszych działań. 
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url)


Dodaj poświadczenia do kontekstu, tak aby możliwe było uwierzytelnienie.
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username$password)


.ExecuteQuery() nie jest konieczne na tym etapie, ale użycie tego polecenia pozwoli upewnić się, że uwierzytelnianie przeszło sprawnie. Jeśli jest błąd w $Url, $Username, $password, lub Strona nie istnieje, to już na tym etapie otrzymamy błąd i możemy zawęzić nasz zakres poszukiwań.

$ctx.ExecuteQuery()


Pobieranie listy przy użyciu jej własności .Title (tytuł)
$ll=$ctx.Web.Lists.GetByTitle($ListTitle)
  $ctx.Load($ll)

Aktualizacja właściwości EnableVersioning przy użyciu zmiennej, którą zdefiniowaliśmy wcześniej pod nazwą $Versioning
$ll.EnableVersioning = $Versioning 
    $ll.Update()

.ExceuteQuery()  aby przetworzyć nasze zapytanie
$ctx.ExecuteQuery()

Try-catch, w przypadku błędów
try
    {
        $ctx.ExecuteQuery()
        Write-Host "Done" -ForegroundColor Green
       }
 
       catch [Net.WebException]
        {
                          
        }


W przypadku, gdy to się nie powiedzie, zawsze warto podać dokładny komunikat błędu. Dla moich celów wystarczy napisać go w oknie konsoli przy użyciu polecenia Write-Host, ale w razie potrzeby można ten komunikat błędu jeszcze wyeksportować jako oddzielny raport przy użyciu polecenia Export-CSV -Append.

try
    {
        $ctx.ExecuteQuery()
        Write-Host "Done" -ForegroundColor Green
       }
 
       catch [Net.WebException]
        {
             
            Write-Host "Failed" $_.Exception.ToString() -ForegroundColor Red
        }


Na koniec należy uruchomić polecenie, które stworzyliśmy i uzupełnić za pomocą danych, które zapisaliśmy na początku
Set-SPOListVersioning -ListName $ListTitle -Versioning $Versioning -Username $username -Url $Url-password $AdminPassword

Jako alternatywę można wyeksportować polecenia cmdlet, zapisać plik jako rozszerzenie .psm1 i zamiast skryptu Powershell otrzymamy moduł Powershell. Po zaimportowaniu tego modułu do naszego Powershella polecenie będzie dostępne z standardowego zestawu poleceń.

Export-ModuleMember "Set-SPOListVersioning"


Pełny kod



#
# Created by Arleta Wanat, 2015
#
 
function Set-SPOListVersioning
{
param (
        [Parameter(Mandatory=$true,Position=0)]
        [string]$ListName,
        [Parameter(Mandatory=$true,Position=1)]
        [bool]$Versioning,
        [Parameter(Mandatory=$true,Position=2)]
        [string]$Username,
        [Parameter(Mandatory=$true,Position=3)]
        [string]$Url,
        [Parameter(Mandatory=$true,Position=4)]
        $password
        )
 
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url)
  $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username$password)
  $ctx.Load($ctx.Web)
  $ctx.ExecuteQuery()
  $ll=$ctx.Web.Lists.GetByTitle($ListTitle)
  $ctx.Load($ll)
 
$ll.EnableVersioning = $Versioning 
    $ll.Update()
 
    try
    {
        $ctx.ExecuteQuery()
        Write-Host "Done" -ForegroundColor Green
       }
 
       catch [Net.WebException]
        {
             
            Write-Host "Failed" $_.Exception.ToString() -ForegroundColor Red
        }
         
 
}
 
 
# Paths to SDK. Please verify location on your computer.
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
# Insert the credentials and the name of the site and list
$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString
$username="trial@trialtrial125.onmicrosoft.com"
$ListTitle="Not-Empty-Document-Library"
$Versioning=$true
 
  
Set-SPOListVersioning -ListName $ListTitle -Versioning $Versioning -Username $username -Url $Url-password $AdminPassword

Skrypt można również pobrać tu.

Wersje pomocnicze

Na listach wszystkie wersje są śledzone w ten sam sposób.Jednak w bibliotekach usługi SharePoint Online można rozróżnić między wersjami pomocniczymi i głównymi. Jeśli biznes wymaga, warto śledzić i główne, i pomocnicze wersje plikuGłówne wersje to takie, w których dodaje się nowy rozdział. Główne wersje sygnalizują również, że dokument jest gotowy do recenzji szerokiej publiczności, natomiast pomocnicze, np. gdzie błąd w pisowni jest poprawiony, mogą oznaczać, że wersja jest pracą w toku i dokument nie jest jeszcze gotowy do szerokiego rozpowszechnienia. 

Kiedy tworzone sa wersje

 
Śledzenia obu rodzajów wersji pomaga uczynić historię wersji bardziej znaczącą. Gdy są śledzone wersje główne i pomocnicze, wersja są przechowywane domyślnie jako wersja pomocnicza, chyba że zostały określone jako wersje główne. Gdy ktoś zapisze plik i zamyka to wersja jest śledzona jako wersja pomocnicza. Plik musi zostać opublikowany, aby został zapisany jako wersja główna. Jeśli autor wyewidencjonuje plik i potem ponownie go zaewidencjonuje, zostanie wyświetlony monit do wyboru, czy plik ma zostać zapisany jako wersja główna, czy wersja pomocnicza.

Tak wiele możliwości oznacza, że można otrzymać aż trzy aktualne wersje pliku w danym momencie: wersję wyewidencjonowaną, najnowszą pomocniczą wersję pliku i najnowszą główną wersję opublikowaną. Wszystkie inne wersje są uważane za historyczne. Niektóre aktualne wersje są tylko widoczne dla użytkowników, którzy mają uprawnienia do przeglądania ich. 5

Numeracja

Numery wersji są automatycznie dodawane za każdym razem, kiedy tworzona jest nowa wersja. Listy lub biblioteki, która ma głównych wersji włączone wersje są liczbami całkowitymi, takich jak 1.0, 2.0, 3.0 i tak dalej. W bibliotekach, gdzie są śledzone wersje pomocnicze, mają po przecinku liczby na przykład 1.1, 1.2, 1.3 i tak dalej. Podczas jednej z tych wersji jest publikowany jako głównych wersji, jego numer staje się 2.0. Kolejne wersje pomocnicze są numerowane 2.1, 2.2, 2.3 i tak dalej. Możesz przeczytać więcej na numerowanie wersji tu.

Uruchom wersje pomocnicze z interfejsu użytkownika



Podczas konfigurowania wersji w tym czasie po utworzeniu listy lub biblioteki, proste wersji jest umożliwiał przy nie wykonać, i nie masz możliwość włączenia wersji głównych i pomocniczych. Aby włączyć wersje główne i pomocnicze, musisz wejść w ustawienia już utworzonej biblioteki i wykonać następujące kroki:

1. Otwórz listę lub bibliotekę

2. Kliknij na zakładkę Lista lub Biblioteka

3. W obszarze Ustawienia ogólne wybierz Ustawienia przechowywania wersji

4. W obszarze Dokument - historia wersji wybierz opcję 
Utwórz wersje główne i pomocnicze



5. Kliknij przycisk OK, aby zapisać.


PowerShell


Wersje pomocnicze wymagają jedynie niewielkich zmian w kodzie wyżej, dlatego powstrzymam się od komentowania każdego elementu. Właściwość odpowiedzialna za wersje pomocnicze jest również wartość logiczna o nazwie .EnableMinorVersions. Ustawienie tej wartości jako $true umożliwi pomocnicze i wersje główne, ustawienie wartości $false wyłączy przechowywanie wersji. 

$ll.EnableMinorVersions = $Versioning


Pełny kod



function Set-SPOListVersioning
{
param (
        [Parameter(Mandatory=$true,Position=0)]
        [string]$ListName,
        [Parameter(Mandatory=$true,Position=1)]
        [bool]$Versioning,
        [Parameter(Mandatory=$true,Position=2)]
        [string]$Username,
        [Parameter(Mandatory=$true,Position=3)]
        [string]$Url,
        [Parameter(Mandatory=$true,Position=4)]
        $password
        )
 
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url)
  $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username$password)
  $ctx.Load($ctx.Web)
  $ctx.ExecuteQuery()
  $ll=$ctx.Web.Lists.GetByTitle($ListTitle)
  $ctx.Load($ll)
 
$ll.EnableMinorVersions = $Versioning 
    $ll.Update()
 
    try
    {
        $ctx.ExecuteQuery()
        Write-Host "Done" -ForegroundColor Green
       }
 
       catch [Net.WebException]
        {
             
            Write-Host "Failed" $_.Exception.ToString() -ForegroundColor Red
        }
         
 
}  
 
# Paths to SDK. Please verify location on your computer.
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
# Insert the credentials and the name of the site and list
$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString
$username="trial@trialtrial125.onmicrosoft.com"
$ListTitle="Not-Empty-Document-Library"
$Versioning=$true
 
  
Set-SPOListVersioning -ListName $ListTitle -Versioning $Versioning -Username $username -Url $Url -password$AdminPassword

Możesz również pobrać skrypt tu.

Skrypty do pobrania

 

Skrypty są dostępne również do pobrania z galerii skryptów Technet:
Enable versioning programmatically using Powershell and CSOM
Enable minor versions programmatically using Powershell and CSOM

Pokrewne artykuły


SharePoint Online: Disable or enable attachments to list items using Powershell (en-US)


Inne języki

Ten artykuł jest dostępny również w innych językach:

Wiki: Versioning and SharePoint: the Powershell perspective (en-US)

web analytics