Digikuun blogissa tänään:

PnP.PowerShell – joskus myös PnP.Perkele!

Kirjoittaja:

Tämän tarkoitus on tasoittaa hieman tietä niille, jotka mahdollisesti kokevat erilaisia sisäisiä kiputiloja PnP.PowerShellin kanssa tai haluavat niiltä välttyä- etenkin alkuun pääsemisessä. 

PnP.PowerShell on varsin hyvä ja monikäyttöinen työkalu SharePointin komentamiseen – kunhan sen saa toimimaan. Virheilmoitukset eivät aina ole kovin selkeitä, ja syy virheeseen voi olla yllättävänkin mutkan takana. Tätä työkalua myös kehitetään aktiivisen yhteisön toimesta, joten se ei tule ihan suoraan Microsoftin tehtaalta, vaikka dokumentaatio löytyykin Microsoftin virallisesta dokumentaatiovarastosta. Tällä on oma vaikutuksena myös työkaluun, joka on hyvä ymmärtää työkalua käytettäessä.  

Satunnaisista haasteista huolimatta Iso Hattu päästä yhteisölle, joka jaksaa tällaisia työkaluja kehittää. Ilman tätä työkalupakki olisi vielä köyhempi. <3 

Vaan koitetaanpa sitten saada mopo käyntiin! Ensin pitää ymmärtää mitä PowerShell-moduulia pitää käyttää. Ja mistä tämä PnP edes tulee? Työkalua kehittävä yhteisö tai “projekti” on kulkenut nimellä SharePoint Patterns and Practises. Myös moduuleja on useampia, ja vanha moduuli kulkee nimellä SharePointPnPPowerShellOnline. Nykyään oikea ja kehittyvä moduuli on PnP.PowerShell. Moduuli löytyy PowerShell Gallerystä: https://www.powershellgallery.com/packages/PnP.PowerShell/1.7.0  

Mutta(1) ennen kuin ryntäät asentamaan, katsotaanpa esivaatimukset kuntoon. 

Vaikka jossain sanotaankin, että tämän pitäisi pyöriä PowerShell 5.1:llä, ainakin oman kokemuksen mukaan kaikki cmdletit eivät sen kanssa toimi. Suosittelen siis vahvasti käyttämään PowerShell Corea, eli 7.x.x versiota. Muuten saattaa tulla jänniä ja etenkin mystisiä virheitä. Minkään PS Coren alkupään version kanssa ei kannata yrittää, joten se kannattaa ensin päivittää viimeisimpään versioon. 

Nyt kun PowerShell-asiat on kunnossa, ei muuta kuin asentamaan moduulia. Se luultavasti menee läpi onnistuneesti, jos PowerShell on ajan tasalla: 

Install-Module -Name PnP.PowerShell 

Mutta(2) miten sillä moduulilla sitten otetaan pilveen kiinni?  

Historia ym. syistä tapoja on useita, ja käytettävä tapa riippuu myös siitä mitä ollaan tekemässä. Tarkempi kuvaus näistä löytyy dokumentaatiosta: 

https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/connect-pnponline

Jos on tarve päästä komentamaan admin-tunnuksella vivut ja asiat haluttuun asentoon, nykyään MFA:n aikakaudella toimiva komento on ollut: 

Connect-PnPOnline -Url  https://yritysfi-admin.sharepoint.com -Interactive 

Tätä ennen voi olla tarpeen tehdä PnPManagementShellin rekisteröinti Azure AD:hen: 

Register-PnPManagementShellAccess 

Mutta(3) milläs komennolla nyt sitten saan hoidettua asiani?  

Jokaisen asiantuntijan lempityökalu, eli Google tulille, ja hakemaan vastausta. Niin, saa toki käyttää Bingiäkin. 😉 Hakukonehärväyksessä on se hyvä puoli, että siitä saattaa saada vihiä mahdollisista ongelmista tai parhaasta tavasta tehdä asia X. Tällä kolikolla on kääntöpuolensa, kun cmdletit, parametrit ja pilvi itsessäänkin on koko ajan muuttuvaa maaperää. Jos siis luet muutaman vuoden vanhaa How-To kirjoitelmaa, se voi hyvin olla vanhentunut. Tai aiheuttaa hassuja ilmiöitä. Tästäpä voi äkkiä laskea yhteen, että lienee ehkä parasta myös vilkaista sitä dokumentaation puolta: 

https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp

Mutta(4) tämähän toimii! Nyt laitetaan business kriittinen prosessi tämän varaan, ja sitten kahville! 

Niin, voiko tämän varaan nyt sitten nojata ja kuinka vahvasti tai pitkäjänteisesti? En välttämättä ainakaan itse lähtisi mitään kovin suurta – tai kallista – viritelmää tämän päälle toteuttamaan, koska se voi tulla näpeille nopeammin ja yllättävämmin kuin Microsoft päivittää lisenssiehtoja. Tämä riippuu siitäkin mitä ollaan tekemässä, ja aivan varmasti tätä ajetaan monessakin paikassa ns. toiminnan Ytimessä. Harkintaa kannattaa silti hieman käyttää, olisiko joku kaupallinen tuote sittenkin parempi ratkaisu pidemmän päälle. 

Mutta(5) sehän – EH – nimittäin sitten kosahti!  

Ei soi eikä pyöri enää, vaikka pari kuukautta sitten se vielä toimi hienosti. Olemme saapuneet tämän kirjoituksen inspiraation lähteelle. Jos siis toiminta on yhtäkkiä lakannut, kannattaa käydä vähintään edellä mainitut asiat läpi uudelleen, ja hinkata niitä Google-kierrepotkuja Chuck Norrisin elkein. Joskus voi olla apua myös muista samasta kivusta kärsivistä, ja vertaistukea voi hakea mm. GitHubin keskusteluosiosta*: 

https://github.com/pnp/PnP-PowerShell/discussions

*Koska kyseessä on yhteisön tuotos, kannattaa ne pahimmat ärräpäät huutaa keittiön kahvinkeittimelle, ja kirjoitella vasta sitten mistä kenkä puristaa, ja olisiko mitään jeesiä kenties saatavilla. Jos sitten ratkaisu tuleekin itse keksittyä jossain vaiheessa, voi senkin mennä kertomaan myös muille, tai ainakin vastata omaan kysymykseensä. Sitä se yhteisöllisyys on. 

Mutta(6) onko tässä vielä jotain muttia? 

Aivan varmasti voi olla. Tämä kyseinen moduuli vaatii reipasta urheilumieltä ja hieman Jedin omaista mielenhallintaa,  

mutta toimiessaan voi tehdä isonkin Tempun. Mahtava, voimakas ja oikein käytettynä hyödyllinen monitoimityökalu.  

The -Force is Strong with this one!  


– Pilvikuiskaaja Riku Mustila