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.

Ja veel mõned viited veakoodidele

Kergema hilisema ülesleidmise huvides olgu siin veel mõned vanad kohad kus veakoode kirjas:

NT Status Codes – https://msdn.microsoft.com/en-us/library/cc231200.aspx

Üleüldse on https://msdn.microsoft.com/en-us/library/cc231196.aspx päris asjalik.

Samuti võib kiigata Dev Centris olevasse https://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx

, kuigi see on mõne koha pealt hõredavõitu.

Kuidas kiirelt tõlgendada veakoode.

Vana, aga meenutuseks.

Mõnikord esitatakse veakoodid numbriliselt ja suhteliselt loetamatult. Ok, kogenud admin mäletab peotäit koode peast ja une pealt. Aga mõnikord läheb ikka väikest värskendust vaja. Tehtav lokaalis võrguühenduseta (ei pea guugeldama)

Error 2147943785 – see teisenda Hexi 0x80070569 ( Windowsi kalkulaatoriga või kuidas mugavam on)

0x8007 = win_32

0x 0569 teisenda dec = 1385

Ja nüüd cmd/PS promptist

net helpmsg 1385

mis annab tulemuseks

Logon failure: the user has not been granted the requested logon type at this computer.

Lingering, lingering ….

Ilusad sõnad, tahaks peaaegu laulda, kui ei teaks nende sõnade halvamaigulist tähendus Active Directory kontekstis.

Lingering Objects – ehk siis jäänuk objektid (vabandust, pole õiget tõlget) on AD objektid mis on peamiselt tekkinud halvasti töötava replikatsiooni tagajärjel. Koos virtualiseerimise levikuga avanes veel üks võimalus – nn tagasikerimine, kus DC P2V muutmisel tehti vigu või DC taastati VM snapshotist  protseduure jälgimata.

Suurem tõenäosus jäänukobjekte kohata on suurtes AD implementatsioonides, mis hõlmavad paljusid DC sid ja paljusid ( sageli ebakindla Interneti VPN’iga) ühendatud andmekeskusi. Ja kui neid haldavad veel erinevad tiimid (erineva kompetentsi tasemega) siis …

Jäänukobjektide esimene avaldus on see, et AD ei taha enam replikeeruda – sellest saab mööda, kui lubada “non-strict” replikeerumisviis. KUID, see ei kõrvalda algpõhjust. Jäänukobjektide kõrvaldamine eeldas omajagu käsitööd ldp ja repadmin’ tööriistadega. See oli tüütu ja nõudis suurt täpsust.

Hiljuti sa MS AD team “valmis” (noh, betasse) SUUREPÄRASE tööriista – Lingering Object Liquidator (LOL) ‘i. Seda ei jagata veel päris avalikult ja selle kasutamine nõuab veel siiski teadmisi ( ja õigusi ) aga siiski on tegu suure sammuga edasi.

Tervet kasutusjuttu pole mõtete ümber rääkida. Härrad ja Prouad – see on tõeline kullafond.

Monitooritud Serveri eemaldamine SCOM’ist ja Specified cast is not Valid viga.

Oletame, et server mis on SCOM agendiga monitooringu all lõpetab oma eksitentsi ja ta lülitatakse välja või VM kustutatakse. Nüüd ( parem eelnevalt) tuleks SCOMis tegelikult teha ports tegevusi, mis sõltuvad kas jõudlus/event jms andmeid on tulevikus vaja või mitte.

Kõige lihtsam on Agent Delete, KUID siin tekivad järgmised probleemid:

* Server  või mõni tema objektidest võib olla osake Distributed Application’ist. Ehk – viisakas on üle käia ka seotud DA ja parandada disain.

* Palju suurem probleem ( mille kohta on ka MS Bugi ja mis pole ka veel 2012 R2 CU2’s ära parandatud) on siis kui eemaldad mõne SQL serveri ja Sul on kasutuses SQL Action accoundid ja need accoundid on levitatud AINULT valitud SQL serveritele (mille hulka kuulub siis kustutatud server).

Avaldub bugi sel hetkel,  kui soovid kontot muuta/vaadata. Specified Cast is not valid.

image

Edasi töötades näed, et levitusloend on tühi.

image

 

Olukorrast lahendamiseks hetkel head lahendust pole.

Tuleks:

1 – Nimetada SCOM konsoolis “vigane”  Run As Account ümber.

2- Luua uus SQL Action Account sama nimega nagu ennem oli  ja kasutada sama AD kasutajanime parooli.

3- Levitada see vajalikele SQL serveritele.

4- Asendada Run As Profiles  SQL’iga seotud profiilides (või kus see kasutuses oli) vana konto uuesti loodud kontoga.

5- Kustutada vana Run As Account konto.

 

Juhul, KUI SCOM’ist eemaldatud server on võimalik veel korraks tööle panna ja lasta ennast uuesti ära registreerida, siis on võimalik eemaldada ta viisakalt Run As Account’i levitamis listist.

TallPaulF on kirjutanud selliseks eeltööks mõnusa PS scripti:

param (
[parameter(mandatory=$true)]$TargetName,
[switch]$WhatIf
)
Import-Module -Name OperationsManager
Write-Host
$Accounts=0
Get-SCOMRunAsAccount |
%{
$Acct=$_
try {
$Dist = Get-SCOMRunAsDistribution -RunAsAccount $Acct
}
catch {
Write-Host -f yellow $('WARNING: RunAsAccount "{0}" has a corrupt RunAs Distribution!' -f $Acct.Name)
}
if ($Dist.Security -eq 'MoreSecure')
{
$FoundTarget = $false
$Dist.SecureDistribution = @($Dist.SecureDistribution | %{ if ($_.DisplayName -eq $TargetName) { $foundTarget = $true } else { $_ } } )
if ($foundTarget)
{
$Accounts++
$Dist | Set-SCOMRunAsDistribution -RunAsAccount $Acct -WhatIf:$WhatIf -Verbose
}
}
}
Write-Host
if ($Accounts -gt 0)
{
if ($WhatIf)
{
Write-Host -ForegroundColor green $("$TargetName would be removed from {0} RunAsAccount secure distribution lists" -f $Accounts)
} else {
Write-Host -ForegroundColor green $("$TargetName removed from {0} RunAsAccount secure distribution lists" -f $Accounts)
}
} else {
Write-Host -ForegroundColor cyan "$TargetName was not found in any RunAsAccount secure distribution lists"
}

Microsoft Message Analyzer – WoW!

image

  Nädala alguses ühte kentsakat võrguprobleemi lahendadedes komistasin juhuslikult ühe järjekordse põneva ja paljulubava tööriista otsa. Palun- tutvuge -  hardcore administraatori uus mängukaaslane – Microsoft Message Analyzer.

Alla laadida saab SIIT ja tootegrupi blogi on SIIN.

 

Ehk siis lühidalt on tegemist Network Monitori, WireSharki edasiarendusega. Ehk siis võrguliikluse (mitte ainult!)  koguja ja anlüsaatoriga. Lihtsaid võrguliikluse kogujaid on internetis saadaval ilmselt kümmneid, kuid kui sinu igapäevatöö pole just hommikust õhtuni võrgutasemel mudistamine, siis võib kogutud info reaalne sisu natuke hägusaks jääda. Network Monitori puhul aitasid välja laienduspakkidena jagatud “Eksperdid” , Message Analyseril on seda ideoloogiat edasi arendatud ja neid kutsutakse OPN Parseriteks.

Süvenedes võimalustesse on MMA ikka täiesti järgmise põlvkonna toode.

Lühidalt on MMA  järgmiste võimalustega:

  • võrgupakettide ja sündmuste (Windows event) reaalajas salvestamine
  • pakettide ja sõnumite töötlemine ja valideerimine
  • ETW sündmuste kogumine ja töötlemine
  • kirjeldavad graafikud (sügavuti mineku võimalusega)
  • sõnumite automaatne grupeerimine vestlusteks
  • erinevate logitüüpide toetamine
  • pakettide sisu (payload) renderdamine
  • stenaariumite tugi (komplekteerid just Sulle vajaminevad allikad, logid, vaated jne)
  • hullumeelselt parandatud Filtrite loogika ( + InteliSense UI)
  • Remote capture

 

Samas on ka mõned puudused:

  • ei tööta Vista põlvkonnast vanemate OS’ide peal.
  • puudub tugi võrgukaardi promiscuous modele (Kui seda on vaja siis võib logida NM abil ja analüüsida MA abil)