Soci (Soczó Zsolt) szakmai blogja

2008.08.12.

Elegáns Powershell script XML feldolgozásra

Filed under: PowerShell,Scripting,Szakmai élet,Visual Studio — Soczó Zsolt @ 22:39

Az itt látható példa azokat a C# kódfájlokat listázza ki, amelyek árván maradtak, azaz ott vannak a fájlrendszerben, de nincsenek benne egy csproj fájlban.
Az egész számomra azért érdekes, mert szerintem igen tömören és elegánsan parsolják az xml csproj fájlt Powershellel.
A lopás árnyékát el nem kerülve, de idemásolom a példát a fenti forrástól:

param([string]$csproj = $(throw 'csproj file is required'))

$csproj = Resolve-Path $csproj
$dir = Split-Path $csproj

# get the files that are included in compilation
$xml = (Get-Content $csproj)
$files_from_csproj = $xml.project.itemgroup | 
	%{ $_.Compile } | 
	%{ $_.Include } |
	?{ $_ } | 
	%{ Join-Path $dir $_ } |
	Sort-Object

# get the files from the dir
$files_from_dir = Get-ChildItem $dir -Recurse -Filter *.cs |
	%{ $_.FullName } |
	Sort-Object
	
Compare-Object $files_from_csproj $files_from_dir

2008.02.18.

Script Elevation PowerToys for Windows Vista

Filed under: PowerShell,Scripting,Security,Szakmai élet,Vista — Soczó Zsolt @ 18:57

Hogy én ezt eddig nem láttam. Pedig jó az UAC ellen. :)

2008.01.31.

Powershell Custom Methods and Properties

Filed under: .NET,PowerShell,Szakmai élet — Soczó Zsolt @ 22:51

Soós Tibi powershellt tanul, ez lelkessé tett engem is. Én ugyan már túl vagyok az alap szintaxon, de a példái kapcsán érdekel, mi történik a háttérben.

Legutóbb ojjektumok properyjét listázgatta, formázgatta. Nyilván .NET programolóként tudjuk, hogy ez a reflection triviális felhasználása, de nem is ez a lényeg belőle. A kérdés akkor vált érdekessé, amikor elkezdte rendeztetni a Hastable-ben levő ojjektumokat ($result). A Hastable egy nagy ojjektumként megy át a csövön, ezért azon nincs mit rendezni. A példa GetEnumerator() hívása ravasz trükk. Ennek hatására a csőbe behullanak a cuccosok mint DictionaryEntry ojjektumok. Ez már egy sima, sik tömb, System.Array. Cool.
Ezt kéne rendeztetni, a Key propery alapján. Tibi viszont Name-et írt, és jól működött. Ez elgondolkodtatott. Miért megy ez jól, mikor nincs is Name-je a DictionaryEntry-nek?

No, hát a címbeli Custom Methods and Property-k miatt. Merthogy, a jámbor rendszergazda a saját szemüvegén keresztül látja a dolgokat, ő nem programoló. Ezért egyes nehezen emészthető fogalmakat, mint Key álnevekkel látnak el. Ezek xml fájlokban vannak, pl. a types.ps1xml-ben van elég sok. Konkrét alanyunk így néz ki:

   <Type>
        <Name>System.Collections.DictionaryEntry</Name>
        <Members>
            <AliasProperty>
                <Name>Name</Name>
                <ReferencedMemberName>Key</ReferencedMemberName>
            </AliasProperty>
        </Members>
    </Type>

Teccik látni, ezért érti a Sort-Object a Key helyett a Name property-t.

(A címbe majdnem bedobtam a Microsoft Powers Hell viccet, de ez már szakállas, nem?)

2007.06.14.

Free Powershell könyvecske

Filed under: PowerShell,Szakmai élet — Soczó Zsolt @ 09:08

Nem hosszú, de kezdőkönyvnek tökéletes lehet.

2006.12.08.

Powershell bevezető

Filed under: .NET,IIS,PowerShell,Scripting,Szakmai élet — Soczó Zsolt @ 09:29

Némi IIS7-tel fűszerezve. 10 perces kis olvasmány, az a csóka műve, aki az msdn magazinban a tesztelős cikkeket írja. Értelmes ember, értelmes cikk.

Powered by WordPress