Hoofdcategorieën

Een introductie tot Windows PowerShell

Door Yoeri Lauwers, dinsdag 19 september 2006 13:51, views: 154.986

Externe links

[1] Wikipedia - PowerShell
[2] Ars Technica - A guided tour of the Microsoft Command Shell
[3] Microsoft - Windows PowerShell RC1 Documentation Pack
[4] MSDN - Powershell Blog
[5] secretGeek - An Absolute Beginner's Babystep in PowerShell
[6] Blogspot - Monadblog
[7] Microsoft - Windows Powershell
[8] Bart de Smet - B# Blog
* Nuttige downloads
[1] Windows Powershell RC1
[2] .NET Framework 2.0
[3] Windows Powershell RC1 Documentation Pack
[3] Powershell Editor and IDE
* Dankwoord
Tot slot een dankwoord aan onze moderator elevator en GoT-gebruiker mutsje voor de assistentie die zij bij het schrijven van deze feature verleenden.

T'rug naar huus


Inhoudsopgave


Reacties

«  1  2  3  »

Een hele vooruitgang, maar het is zo te zien nog steeds niet mogelijk alleen cli te installeren en geen gui. Dat is nog steeds jammer...

Windows Server Core gaat dit gat vullen :)

Het kan aan mij liggen, maar als ik dat backup-script zie van MS dan vind ik dat op zich nog redelijk veel regels. Even snel vergeleken met een random linux backup-script - beetje aanpassen nog en het doet praktisch hetzelfde. Het enige wat er te zeggen is over de *nix-versie is misschien dat deze moeilijker te begrijpen is voor een leek. Terwijl daarentegen de MS-versie misschien wel meer regels is, maar wèl begrijpelijker.

De wedstrijden "hoe schrijf ik een programma in zo min mogelijk regels" horen bij C thuis en laten we hopen dat ze daar ook blijven. Leesbare code heeft toch wel voordelen.

De wedstrijden "hoe schrijf ik een programma in zo min mogelijk regels" horen bij C thuis en laten we hopen dat ze daar ook blijven. Leesbare code heeft toch wel voordelen.

Niet direct bij C, eerder bij Perl ofzo. C code is helemaal niet speciaal kort of obfuscated.

Door de gebrekkige documentatie, het niet geïntegreerd zijn in de shell en het opduiken van een aantal virussen die via lekken in de browser op kwaadaardige wijze gebruikmaakten van de mogelijkheden van deze scripting shell, kreeg WSH al gauw een kwalijke reputatie.
Ik weet het niet maar volgens mij is VBScript prima gedocumenteerd.

Kwaadaardige code heeft niet zoveel met VBScript te maken, ook een exe of com kan kwaadaardig zijn...

Niet dat VBScript nog bij de tijd is en veranderingen niet nodig zijn maar VBScript is als beheerder nog steeds prima te gebruiken..

Ook als 100% commandline door cscript te gebruiken (of te defaulten naar commandline)

PowerShell is uiteraard een 100% verbetering / uitbreiding maar met VBScript kan veel meer dan hier wordt voorgesteld....

De voorbeeldscriptjes kunnen ook prima met VBScript bijvoorbeeld...

Vooral het feit dat het object georienteerd is, spreekt me aan.

Weet hier iemand of men voor linux ook bezig is met object georienteerde shells?

Voor java heb je beanshell wat OO is en voor veel scripting doeleinden te gebruiken is. Je bent wel gebonden aan de in Java aanwezige objecten, en je eigen objecten natuurlijk.

Maar het lijkt erop dat PowerShell voor .Net is wat beanshell voor java is. Aangezien .Net een belangrijk component is van Vista is het in PowerShell makkelijker beheertaken uit te voeren.

Ik weet niet zeker, maar ik dacht dat mono (.net voor linux) ook met zoiets bezig was... dacht ik, misschien, mogelijkerwijs, ofzo

Python en perl kan je beide in interactive mode draaien. Als je geen nood hebt aan een interactive shell kan je naast perl en python ook andere talen als php, tcl, ... gebruiken

php en ruby hebben ook en interactive shell..


:?

Wat wil je dan, dat de syntax exact hetzelfde is als Perl of Javascript? Waarom? En dat zou geen leentjebuur spelen zijn?

Ik begrijp je punt niet zo, het is een op C# gebaseerde scripttaal. En de C# syntax is gebaseerd op C. Net als Javascript en heel veel moderne talen, overigens. Waarbij ook niemand klaagt over 'leentjebuur spelen en net iets anders maken.'

Het is een OO-shell, dus het zou niet logisch zijn om de syntax te baseren op bash. Het lijkt idd nergens op (letterlijk :)) en dat komt natuurlijk doordat iets dergelijks nog niet bestond.

Een van de grote voordelen van bestaande cli applicaties is dat er (bv dmv trial and error) erg snel een resultaat valt te behalen. Een doorslaggevend aspect is dat de documentatie direct voorhanden is, bijvoorbeeld door de applicatie zonder argumenten aan te roepen, met --h, /?, etc. of man <utilitynaam>. Dit was een van de grote missers van windows scripting host imho. Heeft MS een documentatiefeature ingebouwd voor objecten? Kan ik een object ertoe bewegen zijn invocatie/interface specificatie te dumpen?

Get-help Get-WmiObject

Het resultaat lijkt wel een manpage :)

Het vergelijk tussen VBScript en PowerShell gaat eigenlijk maar half op.

VBScript was een tijd lang de manier om complexere taken te automatiseren binnen Windows, aan de andere kant was het veel meer een echte script taal met daaraan de beperkingen die de meeste talen hebben (geen bruikbare interactieve shell, geen in-line documentatie, etc).

Met PowerShell heb je een shell die daadwerkelijk op de eerste plaats shell is en pas op de tweede plaats als scripting taal kan dienen - daarmee komt dus inderdaad commandos als Get-Help en dergelijke naar voren die ook veel beter passen :)

Het was natuurlijk al wel heel lang mogelijk om windows varianten van de unix shell gewoon onder windows te installeren en daarmee over vrijwel gelijke functionaliteit te beschikken als met unix shells.

Vooral het feit dat het object georienteerd is, spreekt me aan.

Weet hier iemand of men voor linux ook bezig is met object georienteerde shells?
Ruby is goed te gebruiken voor shell taken. Bovendien is Ruby volledig object georienteerd. Het levert een interactieve shell mee. Deze heet irb (interactive ruby shell). Soms als je iets in gewikkelders wilt dan je /tmp directory leeghalen is het wel handig. Dit voorbeeldje gooit alle core bestanden weg:

(`find / -name "*.core"`).split("\n").each{|x| system("rm -iv #{x}")}

Als je erin geinteresseerd bent, kun je voor een uitgebreidere uitleg van de shell hier kijken. Python, een andere OO scripttaal, heeft ook een shell (ipython).

Als je dan toch unix commando's gebruikt binnen je Ruby (dat doe je toch met je ``), doe het dan gewoon in Bash:

find / -name *.core -type f -print0 | xargs -0 /bin/rm -f

hmmm dat heeft in principe niks met `bash' te maken.

Laten we jou regel even onder de loep nemen:
find / -name *.core -type f -print0 | xargs -0 /bin/rm -f
En nu zoekt find eerst naar de naam en dan bekijkt hij of het een file is, het is slimmer om dat om te draaien. En gnu find heeft ook nog een aardige optie. Daarbij expand de * wildcard, dus dat werkt niet goed.

dus dan wordt het:
find / -type f -name '*.core' -delete

Maar bijna iedereen gebruikt locate, en die maakt een database van alle files, dus is het handiger om die te raadplegen. Die corefiles hebben geen haast ten slotte:

locate '*.core'|xargs rm -f

Of nog handiger: voeg de volgende regel aan /etc/profile toe:

ulimit -c 0

Dan krijg je helemaal geen corefiles. 8-)

Wat ik me dan afvraag is hoe die -whatif werkt. Ik neem niet aan dat ie compleet sandboxed dingen gaat uitvoeren. Als je bijvoorbeeld een (slecht gebouwd) script hebt dat blijft loopen tot alle bestanden in een map zijn verwijderd, blijft dit oneindig lang doorlopen als je hem -whatif'ed.
«  1  2  3  »

Op dit item kan niet meer gereageerd worden.

VNU Media logo Hosted by True

© 1998 - 2009 Tweakers.net - Alle rechten voorbehouden - Uw Privacy - Algemene Voorwaarden

Uitgever van: