Windows Server 2008 { PowerShell } Soós Tibor soost@iqjb.hu MCT IQSOFT – John Bryce Oktatóközpont http://www.iqjb.hu
Tartalom { röviden } Hogyan induljunk el, alapkoncepciók PowerShell vs. VBScript Mit és hogyan lehet csinálni PowerShellben (Demo) Összegzés: mi is a PowerShell Programozási stílus
Hogyan induljunk el? Windows Server 2008-ban benne van, de nincs bekapcsolva 3 cmdlet: Get-Command Get-Help Get-Member Collection Csőkezelés Foreach-Object Where-Object Sort-Object
PowerShell vs. VBScript Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\default:StdRegProv") strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Fonts" objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrEntryNames For Each entry in arrEntryNames iTotalFonts = iTotalFonts + 1 If InStr(1, LCase(entry), "truetype") Then iTTFonts = iTTFonts + 1 Wscript.Echo entry End If Next Wscript.Echo "TrueType: " & iTTFonts Wscript.Echo "Total: " & iTotalFonts
PowerShell vs. VBScript $total = 0 $a = get-item "hklm:\\Software\Microsoft\Windows NT\CurrentVersion\Fonts" $f = $a.GetValueNames() foreach ($i in $f) { if ($i.contains("TrueType")) $total++ $i } " " "TrueType: $total” "Total: $($f.length)”
{ Kedvcsináló pár szkript } demó
Fájlok szortírozása tulaj szerint Set-Location C:\fájlok Get-ChildItem | Where-Object {-not $_.PSIsContainer} | ForEach-Object { $d = (Get-Acl $_).Owner.Split("\")[1] if(-not (Test-Path ((get-location).path + '\' + $d))) { new-item -path (get-location).path -name $d ` -type directory | Out-Null } Move-Item -path $_.pspath ` -destination ((get-location).path + '\' + $d +'\')
Egymásba ágyazott csoportok tagsága function Get-GroupMembers([string] $group) { $adstr = ([ADSI] "LDAP://$group").member foreach($memberstr in $adstr) $admember = [ADSI] "LDAP://$memberstr" $objclass = $admember.ObjectClass if($objclass.Contains("group")) Get-GroupMembers($memberstr) } else $admember
Programozási stílus Megszokást igényel function get-propertyvalue($object) { $result = @{} $proplist = $object | Get-Member -MemberType property, scriptproperty foreach ($element in $proplist) if ($propvalue = $object.($element.Name)) $result.($element.Name) = $propvalue } $result function get-propertyvalue($object) { $result = @{} $object | Get-Member -MemberType property, scriptproperty | Where-Object { $object.($_.Name) } | ForEach-Object { $result.($_.Name) = $object.($_.Name) } $result }
Mit láttunk? Hagyományos, „DOS” parancsok legtöbbje is használható Legfontosabb cmdlet-ek (kommandlet) get-command get-member PS meghajtók: fájlrendszer, registry, certificate, függvények, változók, alias… Dir = get-childitem Grafikus help PowerGUI (http://www.powergui.org)
Mi is a { PowerShell } ? Új rendszeradminisztrációs motor a Windows és a szervertermékek adminisztrálásához Parancssori környezet, új nyelvvel Adminisztrációs felület, MMC Admin UI Szkript Szkript PowerShell COM felület .NET Framework Szerver-funkcionalitás Múlt Szerver-funkcionalitás Jelen, jövő