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.