Powershell .vbs’i sees

Kuigi SCOM on väga-väga Powershellili orienteeritud lahendus on vähemalt 1 koht, kus saab kasutada (minule teadaolevalt) ainult Visualbasic scriptimist. Väidetavalt on eesmärk 2 suunaline.  Ja see koht on Agent Tasks.

image

Esmalt tagada ühilduvus hallatavate süsteemidega (cscript on neis kõigis) ja jõudlusteemad. Minu hinnagul on mõlemad tänapäeval ajalugu ja võiks loota, et lähiajal saab seal kasutada ka PS.

Seniks aga üks väike workaround.

Ehk siis manustame oma PS scripti vbs’i sisse.

Sellel on meetodil on mõned puudused: esmalt ei näe me mõistliku väljundit Taski käivitumise aknas ja Scripti sisu muutmine on natuke kohmakas ja ebamugav. Samuti ei saa kasutada argumente ja mingile konkreetsele objektile suunamist.

Samm 1 – kirjutame ja testime oma PS scripti. Sisend ja väljund argumente pole.

Samm 2 – kodeerime oma PS Base-64’ja.

Selleks võib kasutada allolevat PS’i, mille tagajärjel on skripti sisu lõikepuhvris.

$script = Get-Content C:\temp\minuskript.ps1 -Raw 
$bytes = [System.Text.Encoding]::Unicode.GetBytes($script) 
$encoded = [Convert]::ToBase64String($bytes) 
$encoded | clip

Samm 3 – tekitame nüüd vbs ümbrise.

Set objShell = CreateObject("Wscript.Shell") 
objShell.Run("powershell.exe –EncodedCommand  XXX”)

kus XXX asemele kleebi lõikepuhvri sisu.

Samm 4 – on juba SCOM’is vastava Taski loomine. Kus siis faili nimeks võid panna misiganes.vbs ja Script aknasse kleebi samm3 tulemus. Tehtud.

Jutumärgid….

Get-ChildItem "MyDocuments" =  Get-ChildItem ‘MyDocuments’ = Get-ChildItem MyDocuments  – tulemus OK, kasuta mida tahad
Get-ChildItem “My Documents” =  Get-ChildItem ‘My Documents’ – tulemus OK , üldiselt peaks kasutama "
Get-ChildItem "My,Documents” = Get-ChildItem ‘My,Documents’ – tulemus OK , üldiselt peaks kasutama "
Get-ChildItem "My’First’Documents”  – tulemus OK
Get-ChildItem ‘My’First’Documents’ – tulemus NOK , isegi kui My’First’Documents eksisteerib
Get-ChildItem ‘My”First”Documents’  – tulemus OK
Get-ChildItem "My”First”Documents” – tulemus NOK , isegi kui My”First”Documents eksisteerib

Tulemus OK eeldab et eksiteerib sellenimeline objekt.

Kas pole ikka Powershell imepärane asi.

http://blogs.technet.com/b/csps/archive/2010/09/12/tipsusingquotes.aspx

PowerShell SC Operations Manageris Osa 1

Vaatamata asjaolule, et Operations Manager 2007 (ja R2) ei saa hakkama Powershellita pole mingil põhjusel võimalik vaikimis kasutada monitoride defineerimisel Poweshell scripte. Uue monitori loomisel saab küll kenasti tüübiks valida Scripting.

image

Kuid kui nii kaugele jõuad et skripti kirjutama hakata pakutakse välja (ja reaalsuses aktsepteeritakse ainult Vb Scripti ja j Scripti.

image

 

Tegelikult – on olemas lahendus, kuidas siiski PS skripte monitooringus kasutada.

Selleks on kõigepealt soovitav natuke ettevalmistusi teha:

1. Veendu et Sul oleks masinas Powershell 2 ja ISE (või mõni muu mugav skriptikirjutamis vahend – a la PowerGui) – (vaata näiteks eelmist postitust PowerShell massidesse – kuid kas sest alati kasu on. ) Iseensest pole see just kohustuslik, kuid on mugavam.

2. Installi Management Pack Authoring Console – selle saab SCOM 2007 R2 Authoring Resource Kit’ist http://www.microsoft.com/downloads/details.aspx?FamilyID=9104af8b-ff87-45a1-81cd-b73e6f6b51f0&displaylang=en

 

Keywords: scom, powershell, scripts

PowerShell massidesse – kuid kas sest alati kasu on.

Powershell on pagana mõnus, efektiivne ja “cool” vahend  tegemaks enda elu lihtsustavaid skriptikesi. Mõnikord on teatud operatsiooni võimalik teha ainult PS abil. GUI’s lihtsalt pole sellist käsku või valikut. (Siin võib näiteks tuua terve hunniku Exchange ja System Center Virtual Machine Manageri tegevusi).

PowerShell 1.0 “ilmus” Teie masinatesse Windows Update kaudu. Windows 2008 peal oli ta juba kaasas.

Powershell 2.0 tuli koos Windows 2008 R2/Windows 7’ga ja on märgatavalt täiustatud. PowerShell 2.0 saab käima ajada ka vanematel platvormidel (XP, 2003, 2008, Vista). Seda uuendusena välja ei pakuta ja sikutama pead Sa ta http://support.microsoft.com/kb/968930 lehelt. Lisatingimustena on vaja .NET 2.0 SP1 (PS jaoks) ja .NET 3.0 kui soovid PowerShell ISE’t kasutada.

Siinjuures tuleb märkida, et kui varem oli paigaldatud PS 1.0 siis seda justkui ei puututa, kuid tegelikult käivitatakse alati siiski 2.0 versioon. Powersheli versiooni saad kontrollida Get-Host käsuga.

image

Lisaks tuleb tähelepanu pöörata asjaolule, et kuigi sellisel moel on võimalik endale uus “mootor” saada, ei pruugi kõiki objekte ja klasse vanemate OS versioonide peal lihtsalt olemas olla. Seega ei pruugi OS spetsiifilisi objekte kasutav skript mõnes teises masinas üldse töötada. Näitena võib tuua Windows managemendi nimeruumid. Rääkimata rakendustest, mis lisavad oma Cmdlets’e, pakkujaid (provider), lisandmooduleid (snap-in).

Keywords: Powershell, Windows 2003

Fondid, fondid ja Windows 7

Oh, miks küll pole kirjatüüpide jaoks grupipoliitika häälestust!

Kui sul on kord majas (kasutajad on oma arvutis kasutajaõigustes) ja pool majast moodustvad graafikud, kellel on ad-hoc vaja kasutada kolme juhuslikku kirjatüüpi firma baasis olemas olevatest tuhandetest oled hädas. Sa kas:

a) annad neile administraatori õigused (väga paha),

b) teed kirjatüüpidega majandamiseks lisakasutaja, kes on admin (natuke paha) või

c) jooksed nagu orav rattas ja lisad-eemaldad vastvalt graafikute soovidele.

Kuigi Windows 7 lisas tuhandeid GP objekte, pole selle probleemi juures midagi tarka teha ja tuleb tegeleda häkkidega. Kui XP puhul piisas kaustade ja registry õiguste muutmisest, siis Windows 7 on pirtsakam.

Alljärgnevalt aga lahendus, mis võimaldab fonte dünaamiliselt laadida ja eemaldada, seda kõike tavakasutaja õigustes.

Vaja   on selleks utikat nimega REGISTERFONT.EXE – saab sealt.

  1. Paki see lahti näiteks c:\fonts kausta
  2. kopeeri sinna oma vajalikud kirjatüübid.
  3. ava käsurida, mina sinna kausta ja kamanda “registerfonts add font1.ttf font2.otf”   jne..

Toetatud on kõik Windowsile sobivad erinevad variandid.

Sellisel meetodil on 1 viga (või eelis) – kõik dünaamiliselt laetud kirjatüübid kaovad masina restardil. Buuh. Hea, hoidmaks masinat suhteliselt stabiilses seisus (liiga palju installeeritud kirjatüüpe põhjustab Windowsis ikka veel probleeme). Halb – kui vastv projekt kestab kauem kui keskmine masina töösoleku aeg. Olen täheldanud veel ühe eripära – sellisesid kirjatüüpa ma Control Panel / Fonts all ei näe, kui kõikvõimalikes programmides on nad kasutatavad.

Kuna graafikud ei pruugi olla kõige helgemad kuskil kaustades ringi liikumises ja erinevate käskude sisestamisel on all toodud 2 powershell rida. Esimene neist eemaldab kõik samas kaustas juba olemasolevad kirjatüübid “font cachest” ja teine laadib nad uuesti.

foreach ($font in get-childitem * -include *.ttf,*.otf -name) {.\registerfont rem $font}
foreach ($font in get-childitem * -include *.ttf,*.otf -name) {.\registerfont add $font}

 

Vastava ps skriptikese võid juba startupist või kust iganes väljakutsuda stiilis:

powershell -NoLogo -ExecutionPolicy Unsrestricted -File skriptinimi.ps1

 

Surnud host VMM’is

Maailm pole alati selline nagu tahaks, aeg ajalt asjad juhtuvad. Seekord läks siis nii, et üks Hyper-V masin oli vaja ümber installeerida.

Selle tagajärjel arvab System Center VMM et  “Host needs attention”.  Ei Refresh ega Remove host aita, sest kuidagi ei saada ühendust VMM agendiga (huvitav,milleks küll on eraldi agenti vaja). Tegelikuses kurdetakse muidugi selle üle, et kontrolli kontoõigusi, remote sharesid ja üleüldse võrgujuuredpääsu toimivust.

image

Uuesti hosti VMM i lisada ei lasta, sest ta on ju juba olemas. Mingisugust uuesti lisamise või jõuga ülekirjutamis nupukest ei paista.

Kas tõesti tuleb SQL tabeli kallale minna?

 

Õnneks mitte – abiks tuleb Poweshell ja VMM commandlet Remove-VMHost.

Powershell on integreeritud VMM konsooli, käivita ja käsuta:

Remove-VMHost –VMHost <serveri nimi> –Force

mille peale teavitatakse veel igaks juhuks hosti omadused ja alustatakse eemaldamist. MIngitkatkestamise võimalust pole. VMM’is uuendus ja voilaa, nüüd saad juba hosti uuesti lisada.

Get-Help Remove-VMHost –detailed annab Sulle natuke lisalugemist ja seda on soovitav ennem teha. Järjekordselt tõestab see, et kuigi paljud uuemad MS System Center serverite konsoolid on tegelikult Powershelli skriptide genereerimise ja käivitamise vahendid tuleb ikka aega ajalt “musta kasti” sügavustesse ronida.