Zarządzanie wieloma elementami listy SharePoint przy użyciu Powershell'a (pl-PL)

Zarządzanie wieloma elementami listy SharePoint przy użyciu Powershell'a (pl-PL)

Poniższy artykuł używa dodatkowego modułu zarządzania listami, elementami i plikami SPOMod do programu SharePoint Online Management Shell. Pobierz  i zainstaluj moduł, aby kontynuować.


Elementy


Elementy tu opisywane są elementami z listy na witrynie usługi SharePoint Online. W zależności od typu listy mogą to być ogłoszenia, zadania, kontakty, spotkania lub też niestandardowe, takie jak żądania obsługi lub zlecenia dostawy. Elementy mogą być dodawane, modyfikowane i usuwane za pomocą interfejs użytkownika, lub programowo, np. przy użyciu C#Ten artykuł skupia się na Powershell'u.



Tworzenie elementów


Element można dodać używając przycisku Nowy Element lub w widoku arkusza kalkulacyjnego:
  1. Przejdź do witryny zawierającej listę, do której chcesz dodać element.

  2. Wybierz Ustawienia SharePoint Online Public Website Settings button > zawartość witryny, a następnie w sekcji odpowiedniej listy, wybierz nazwę z listy.

    UWAGA: Witryny można modyfikować znacząco pod względem wyglądu i nawigacji. Jeśli nie możesz znaleźć opcji, takich jak polecenia, przycisk lub łącze, skontaktuj się z administratorem.

  3. Wybierz zakładkę Elementy, a następnie w grupie Nowy wybierz Nowy element.

 
  1. Wybierz Edytuj w górnej części listy. Jest to tak samo jak wybranie polecenia Szybka edycja na karcie listy .

    Adding an item to a list inline

    UWAGA: Można łatwo przełączać się z widoku listy do widoku arkusza kalkulacyjnego wybierając Widok i polecenie Szybkiej edycji.

Źródło: https://support.office.com/en-sg/article/Add-edit-or-delete-list-items-a4b31f53-f044-470e-9823-4526594bacde


To wszystko bardzo dobrze, dopóki nie musimy pracować z dosłownie tysiącami elementów i ręczne wprowadzanie danych lub ich zarządzanie staje się niemożliwe.

Źródło: https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSduLrp7N-zxOk1av58dKs4xmPKX1W4Zn-V1wCzbanzO2CpX0Yz


Po podłączeniu za pomocą polecenia Connect-SPOCSOM do witryny z naszą list (może to być zbiór witryn lub podwitryna), możemy stworzyć element za pomocą polecenia cmdlet New-SPOListItem.
Connect-SPOCSOM -Username 2190@tenant.onmicrosoft.com -AdminPassword *********** -Url https://tenant.sharepoint.com/sites/powie1
 
New -SPOList MultipleItems
 
New -SPOListItem -ListTitle MultipleItems -ItemTitle MyItem


Tworzenie wielu elementów do celów testowych


Jednym ze scenariuszy, w których potrzebuję list z dużą ilością elementów jest scenariusz, gdzie potrzebuję odtworzyć pierwotną listę, w której wystąpiły problemy. Jeśli nie można otworzyć listy z 2000 elementów, a lista nowo utworzona zostanie otwarta bez problemów, to wynika to z ograniczeń w liczbie elementów czy coś przytrafiło się mojej liście? Na szczęście, listę z wieloma elementami do celów testowych można utworzyć jedną linijką:

for ($i=0; $i -lt 2000; $i ++){ New-SPOListItem -ListTitle MultipleItems -ItemTitle ("Tytul elementu"+$i)}



  


Elementy, które mają więcej niż tytuł


Co zrobić, jeśli chcemy, aby dodać coś więcej niż tylko tytuł?
New -SPOListItem -ListTitle multipleitems -ItemTitle Itemek -AdditionalField MyChoiceColumn -AdditionalValue Choice1


Dla wielu elementów:
for ($i=0; $i -lt 2000 $i ++) {New-SPOListItem -ListTitle multipleitems -ItemTitle Itemek -AdditionalField MyChoiceColumn -AdditionalValue Choice1}



Import z CSV


 
Jako że to Powershell, możemy użyć Import-CSV i połączyć go z New-SPOListItem w celu przekazania dużej liczby elementów z pliku Excel do listy SharePointa.
Na początek potrzebujemy pliku csv, który może wyglądać następująco:
     

Jedna linijka w Powershellu:
import-csv c:\users\ivo\Desktop\map1 . csv | ForEach-Object {New-SPOListItem -ListTitle MultipleItems -ItemTitle ($_.title+$_.number) -AdditionalField $_.column -AdditionalValue $_.value}

 




Aktualizowanie elementów


Równie łatwo jak tworzyliśmy elementy, można je aktualizować za pomocą jednego wiersza poleceń.

Pojedynczy element


Update-SPOListItem -ListTitle MultipleItems -ItemID 906 -FieldToUpdate MyField -ValueToUpdate "Value from Powershell"




Wiele elementów


Załóżmy, że właśnie stworzyliśmy nową kolumnę z wartością logiczną ($true/$false) i chcemy tę wartość ustawić na $true dla wszystkich istniejących elementów.


  
$itemIDs =(Get-SPOListItems -ListTitle MultipleItems).ID
foreach ($idd in $itemIDs){Update-SPOListItem -ListTitle MultipleItems -ItemID $idd -FieldToUpdate MyField -ValueToUpdate $true}




Z CSV



Poprzedni przykład sprawował się dobrze, jeśli chcemy ustawić jedno pole z taką samą wartością. Jednak, co zrobić, jeśli istnieje cała masa różnych pól, które czekają, aby zostać zaktualizowane? Np. firma zdecydował się na zmianę swojej domeny, a wszystkie kontakty teraz powinny zawierać nową domenę. Można użyć pliku .csv, podobnego do tego:



$itemki =Get-SPOListItems -ListTitle MultipleItems
$ImportedUpdates =import-csv c:\users\ivo\Desktop\map1.csv
foreach ($impu in $ImportedUpdates) { Update-SPOListItem -ListTitle MultipleItems -ItemID (($itemki | where {$_.Title -eq ($impu.title+$impu.number)}).ID) -FieldToUpdate $impu.column -ValueToUpdate $impu.value }







Usuwanie elementów



Pojedynczy element


Remove - SPOListItem - ListTitle MultipleItems - ItemID 906







Usuń zaznaczone


Powiedzmy, że chcemy usunąć elementy w oparciu o pewnego rodzaju kryteria. W przykładzie poniżej będą to elementy z "UpdatedText" w MyTextColumn. Polecenie .Count nie jest obowiązkowe i służy do sprawdzenia, czy wyniki pod $ItemsForDeletion są tym, czego oczekiwaliśmy i jak długo może potrwać usunięcie ich wszystkich.
$ItemsForDeletion =(Get-SPOListItems -ListTitle MultipleItems -IncludeAllProperties $true | where {$_.MyTextColumn -eq "UpdatedText"})
$ItemsForDeletion.Count
$ItemsForDeletion | ForEach-Object {Remove-SPOListItem -ListTitle MultipleItems -ItemID $_.ID}



Usuwanie duplikatów


To samo polecenie może służyć do usunięcia zduplikowanych wpisów. W tej sytuacji jeśli dany element ma taki sam tytuł jak inny element, to zostanie on usunięty. Polecenia można modyfikować i porównywać nie tylko tytuły, ale także inne pola, wartości liczbowe lub wiele kolumn.

$forduplicates =(Get-SPOListItems -ListTitle MultipleItems)
for ($i=0; $i -lt $forduplicates . Count $i ++){ for ($j=$i$j -lt $forduplicates . Count $j ++) { if(($forduplicates[$i].ID -ne $forduplicates[$j].ID) -and ($forduplicates[$i].Title -eq $forduplicates[$j].Title)) { $forduplicates[$i].ID; $forduplicates [$j].ID; "---" ; Remove-SPOListItem -ListTitle MultipleItems -ItemID $forduplicates[$j].ID }}}






Wszystkie


Po ostatnich 2 przykładach usuwania elementów pozostało nam 11 elementów na liście. Usuńmy je wszystkie za pomocą programu Powershell.


Get-SPOListItems -ListTitle MultipleItems | ForEach-Object {Remove-SPOListItem -ListTitle MultipleItems -ItemID $_.ID}










Krótki opis



   
for ($i=0; $i -lt 2000; $i ++){ New-SPOListItem -ListTitle MultipleItems -ItemTitle ("title"+$i)}  Tworzenie wielu elementów o nazwie Title0, Title1, Title2, etc.
 for ($i=0; $i -lt 2000$i ++) {New-SPOListItem -ListTitle multipleitems -ItemTitle Itemek -AdditionalField MyChoiceColumn -AdditionalValue Choice1} Tworzenie wielu elementów o nazwie Itemek i jednoczesne ustawienie wartości ich kolumny ChoiceColumn na Choice1
 import-csv c:\users\ivo\Desktop\map1 . csv | ForEach-Object {New-SPOListItem -ListTitle MultipleItems -ItemTitle ($_.title+$_.number) -AdditionalField $_.column -AdditionalValue $_.value} Tworzenie elementów opartych na CSV
 
$itemIDs =(Get-SPOListItems -ListTitle MultipleItems).ID
foreach ($idd in $itemIDs){Update-SPOListItem -ListTitle MultipleItems -ItemID $idd -FieldToUpdate MyField -ValueToUpdate $true}
Aktualizacja wielu elementów
 
$itemki =Get-SPOListItems -ListTitle MultipleItems
$ImportedUpdates =import-csv c:\users\ivo\Desktop\map1.csv
foreach ($impu in $ImportedUpdates) { Update-SPOListItem -ListTitle MultipleItems -ItemID (($itemki | where {$_.Title -eq ($impu.title+$impu.number)}).ID) -FieldToUpdate $impu.column -ValueToUpdate $impu.value }
Aktualizacja zbiorcza elementów oparta na CSV
 
$ItemsForDeletion =(Get-SPOListItems -ListTitle MultipleItems -IncludeAllProperties $true | where {$_.MyTextColumn -eq "UpdatedText"})
itemsForDeletion. Count
$itemsForDeletion | ForEach-Object {Remove-SPOListItem -ListTitle MultipleItems -ItemID $_.ID}
Zbiorowe usuwanie wybranych elementów
 
$forduplicates =(Get-SPOListItems -ListTitle MultipleItems)
for ($i=0; $i -lt $forduplicates . Count $i ++){ for ($j=$i$j -lt $forduplicates . Count $j ++) { if(($forduplicates[$i].ID -ne$forduplicates[$j].ID) -and ($forduplicates[$i].Title -eq $forduplicates[$j].Title)) { $forduplicates[$i].ID; $forduplicates[$j].ID; "---" ; Remove-SPOListItem -ListTitle MultipleItems -ItemID $forduplicates[$j].ID }}}
Usuwanie zduplikowanych elementów
 Get-SPOListItems -ListTitle MultipleItems | ForEach-Object {Remove-SPOListItem -ListTitle MultipleItems -ItemID $_.ID} Usuwanie wszystkich elementów




Pliki do pobrania




Pokrewne artykuły


Manage SharePoint Online Access Requests using Powershell
Restoring and removing item permissions in subfolders for SharePoint Online using Powershell
SPOMod polecenia i zasoby

Inne Języki


Artykuł dostępny jest także w innych językach:
Working with multiple items using Powershell (en-US)