You are browsing the archive for PowerShell.

PowerShell-palikka C#:lla

3.2.2017 in DevOps, Sovelluskehitys, Tuottavuus by Heikki Raatikainen

Aika pitkään ehdin C#:lla koodailla ennen kuin tuli ensimmäinen kerta jolloin jouduin miettimään toiminnon paketoimista PowerShell-moduuliksi.
Kaikki alkoi siitä että keksin hienon pienen sovelluksen jota luultavasti joissakin organisaatioissa infrakaverit ajaisivat. No kun ideasta keskustelin meidän oman infraporukan kanssa niin varsin aikaisessa vaiheessa joku totesi että nykyään kaikki pitää olla PowerShell-rajapinnan takana. Ja minä sitten menin tuota uskomaan.

PowerShell-skriptiä en ollut koskaan tehnyt enkä oikeasti ole edes joutunut käyttään CmdLet-palikoita. Ensimmäiset googlaukset menivät hutiksi koska hakusanojen perusteella löytyi vain kuinka kirjoitetaan ps-skripti PowerShell:llä. Aikani lisäilin sopivia hakusanoja niin johan löytyi muutama ihan kunnollinen tutoriaali miten itse tehdään Visual studiolla ja C#:lla oma powershell-laajennusosa. Esimerkiksi tästä löytyy tiiviisti oleellista asiaa PowerShell-moduulien tekemisestä ja niiden parameterirajapinnasta.

Loppujen lopuksi rajapinta CmdLetin tekemiseen on aika yksinkertainen. Periytytetään oma luokka CmdLet-kantaluokasta, määritellään attribuuteilla minkä niminen CmdLet:in verbistä tulee ja minkä tyyppistä dataa se palauttaa. Paluutyyppi kannattaa määrittää putkituksen takia. Lisäksi parametrien välitys CmdLet:lle vaati hieman opiskelua mutta lopulta aika suoraviivaisesti parametrit asettuu propertyihin attribuuttien avulla. Varsinainen toiminto mitä CmdLet-tekee koodataan yhteen ylikirjoitettavaan metodiin ProcessRecord, ei sinällään mitään rakettitiedettä.

Tarkoitus oli alunperin tehdä kolme CmdLet:iä, ensimmäinen etsii halutut tiedostot ja välittää ne seuraavalla prosessoitavaksi ja kolmas olisi sitten kirjoittanut sopivaan paikkaa tulokset. No ennen kuin olin ehtinyt edes kaikkia tehdä niin sain ohjeistuksen että tuohon pitäisi tehdä vielä hieno käyttöliittymä jotta käyttäminen onnistuisi muiltakin kuin PowerShell-osaajilta. Sitä selvitellessä tuli aika nopeasti ilmi että PowerShell-käyttöliittymähän on itse asiassa XAML-koodausta joten siirsin koko projektin koodin WPF-projektiin. Se siitä PowerShell-koodauksesta.

Tulipahan tutustuttua yhteen uuteen asiaan ja kynnys jatkossa tehdä joku toiminto PowerShell-moduuliksi laski nollaan. Ja varmasti PowerShell-laajennoksille löytyy koodaajan kannalta paljon hyviä paikkoja missä sitä voi hyödyntää vaikka tällä kertaa ei osunutkaan omalle kohdalle.

Poweria VMware ylläpitoon – PowerCli

8.5.2013 in Infra, VMware by Pertti Pellonpoika

VMware-ympäristön ylläpidon automatisointiin on lukuisia vaihtoehtoja kuten vCenter Orchestrator, vSphere Cli (vCli) ja Vsphere Managerment Assistant (VMA). Kuitenkin PowerShell on vaihtoehto, jolla saadaan parhaat ohjelmointimahdollisuudet ja ennen kaikkea PowerShell on ainoa tuettu vaihtoehto mm. ESXi CD:n räätälöinnin (ImageBuilder) ja AutoDeploy-käynnistysympäristön määrittelyyn. Tarvetta on siis paitsi eräajoihin, useamman objektin muokkaamiseen ja myös sellaisten asioiden tekoon, jotka eivät muutoin onnistuisi.

PowerCli hankkiminen

Ensimmäinen vaihe on VMware PowerShell laajennuksen saaminen. Se ei tule VMware vCenterin tai ESXi:n mukana, mutta on rekisteröinnin jälkeen maksutta ladattavissa VMwarelta http://www.vmware.com/go/powercli. Se ei siis vaadi mitään lisenssien hankintaa ja sen voi asentaa vapaasti. Merkittävänä lisänä uusimmassa Release 2:ssa tuki ns. hajautettujen virtuaalikytkinten hallintaan sekä vCloud hallintaan. Lisäksi vasta Release 2 tukee PowerShell 3.0:aa.

PowerCli lataus

PowerCli asennus

Seuraava vaihe on em. laajennuksen asennus. Tässä vaiheessa tulee päättää, millä koneella PowerShell komentoja voi antaa. Se voi olla mikä tahansa kone, jolta on yhteys vCenteriin ja ESX:iin. Windows-kone, jolla vCenter Server toimii, on mahdollinen, mutta itse suosin sitä hallintapalvelinta tai työasemaa, jossa suoritetaan myös vSphere Client -ohjelmaa.

VMware vSphere PowerCLI komentojen suoritukseen riittää PowerShell 2.0, mutta PowerShell 3.0:n uudistukset eivät muutoin tietysti ole pahitteeksi. Käyttöjärjestelmänä Windows:it XP:stä ja Server 2003:sta lähtien. Huom. kuitenkin että edes uusimmalla 5.1 Rel2:ssa Windows 8 ja Server 2012 eivät ole tuettuja suoritusympäristöjä. Taustalla lienee se että Rel 2 on helmikuulta ja vCenter Serverin alustatuki Server 2012:lle tuli vasta nyt huhtikuussa 5.1 Update 1:n myötä.

Itse asennus tai edellisen päivitys menee next-> next-> next

PowerCLI asennus

Käytettävä versio

Asennuksen jälkeen käytettävissä on 32-bit ja 64-bit versiot (edellyttäen tietysti että asennuskohde oli 64-bit). Virtuaalikoneen customization räätälöintiä hyödyntävät tai käsittelevät komennot toimivat ainoastaan 32-bit versiossa. Ao. rajoituksen huomioiden suosin 64-bit versiota.

PowerCLI32bitPowerCLI64bit

Suoritusoikeudet

Käynnistettäessä saattaa tulla ilmoitus, ettei PowerCLI-laajennus lataudu. Kyse on yleenä PowerShell-laajennusten suoritusoikeudesta. Käynnistä silloin uudelleen korotetuilla oikeuksilla (UAC) ja anna komento:

>set-executionpolicy remotesigned

ja käynnistä uudelleen.

Yhteys vCenter Server -palveluun

Kun VMware vSphere ympäristön on vCenter Server:in hallinnassa, tulee myös PowerCLI komennoilla operoida vCenter Server:in kautta. Kytkeydy siis ensin vCenter Server:iin komennolla Connect-VIServer. Yhteys tapahtuu SSL-salattuna ja jollei vCenter Server:in varmenne ole luotettujen listalla saat siitä luonnollisesti varoituksen.

Apuva!

Käytettävissä olevista PowerCLI-komennoista saat kätevästi listauksen komennolla Get-VICommand. Windows Help -referenssin saat myös auki vaikka komennolla Get-PowerCLIHelp

PowerCli Reference

Mutta varsinainen Online tai Offline dokumentaatio löytyy osoitteesta http://www.vmware.com/support/developer/PowerCLI/

PowerCli Documentation

Mahdolliset ongelmat

PowerShell-ympäristössä on mahdollista, että eri moduleissa on samannimisiä komentoja. Näin on erityisesti Microsoft Hyper-V -modulissa ja VMware PowerCli -modulissa. Esim. Get-VM ei listaa virtuaalikoneita VMwaresta, koska se yrittää listata niitä Hyper-V:stä. Listaa silloin modulit Get-module komennolla ja poista esim. Hyper-V moduli komennolla Remove-Module HyperV

May the Power be with your VMware t. Peltsi

Poweria ylläpitoon – ja asiantuntijauraan

24.1.2013 in Infra, Yleinen by Mika Seitsonen

Ikkunoitujen Windows-käyttöjärjestelmien ja niiden päällä toimivien sovellusten hallinta on vaatinut erityisesti graafisten työkalujen osaamista. Erilaisten velhojen ajaminen onnistuu ensikertalaiseltakin melko kivuttomasti, mutta jos samaa velhoa pitää käyttää kymmeniä tai satoja kertoja, niin tehtävään kuluva aika on yksinkertaista laskea kertolaskuna. Nyt alkaa olla aika tehostaa tekemistä kertaheitolla kun siihen tarjolla oleva työkalukin on jo saavuttanut ”sen kolmannen versionsa”. Kyseessä on siis Windows PowerShell. Read the rest of this entry →