Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door Yoeri Lauwers

Eindredacteur

Een introductie tot Windows PowerShell

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.

Wat vind je van dit artikel?

Geef je mening in het Geachte Redactie-forum.

Reacties (47)

Wijzig sortering
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.
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 :)
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..
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...
En is deze Powershell dan via SSH of telnet te benaderen?
Zo nee.. dan zie ik niet één twee drie wat voor functionaliteit het heeft als je nog vast zit aan Terminal services met daarin een venster.

En inderdaad... je bent nog steeds verplicht een GUI te draaien.
Met Longhorn moet daar verandering in komen! Het Gui draaien tenminste.
Je kan (net als WMI) tegen remote computers scripten, en als je echt wil is het opzetten van een ssh-server onder Windows ook prima mogelijk hoor.
Hoewel telnet standaard uit staat kan je dit ook met ipsec encrypten, heb je ongeveer hetzelfde effect als ssh.

Het kan allemaal. Alleen op een iets andere manier (niet dat dat zo erg is) dan onder *nix achtigen.

[edit]
Afgezien daarvan: waarom moet het nou weer op de *nix manier?
Hopelijk toch niet om dan weer te kunnen zeggen dat ze weer iets gejat hebben?
Sheez...
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-)
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 :)
Om live beelden te zien hoe Windows PowerShell werkt.
Wat leuke filmpjes op channel 9
http://channel9.msdn.com/tags/monad
Vooral de sql statements in powershell ben ik echt over te spreken dit geeft zoveel kracht en toch is het zo simpel.

1 ding waar ik nog een vraag over heb.
Windows PowerShell zal niet als standaardshell voor Windows Vista functioneren

Het wordt dus een optionele shell die je als admin weer moet gaan installeren, en onder windows longhorn wordt het de standaard shell, even voor de goeie duidelijkheid!
Longhorn == vista... :?
Nee,

Vista = Consumer OS (dus vergelijkbaar met XP)
Longhorn = Code name van het Server OS (vergelijkbaar met Windows Server 2003)
Maar was longhorn niet eerst (ook) de codenaam van vista? :P
Ja, longhorn was de codenaam voor Vista. De serverversies gaan volgens mij ook gewoon Vista heten toch?
Nee, De server versies gaan net als 2003 weer "Server jaartal" heten. Dus waarschijnlijk (en hopelijk?) Windows Server 2007.
** Vraagje : Heeft PowerShell nou ook eindelijk commando's die cmd.exe mist zoals "whois" bijvoorbeeld ??

Ik hoopte eigenlijk op wat meer informatie over ieuwe commando's, maar het is dus meer als scripting shell bedoeld dan besturings shell ??

Dat je gewoon firefox intypt en dat Firefox dan gestart wordt zou ook fijn zijn en scheelt heel wat snelkoppelingen her en der :)

* nero355 niet zo'n scripting guru is ...
whois is gewoon een utility en heeft helemaal niks met een shell te maken. Ik geloof niet dat Vista standaard met een whois query tool gaat komen, ik zie daar voor het gros van de gebruikers ook nie echt een voordeel in persoonlijk :)

Verder is de PowerShell wel degelijk een vervanger voor cmd.exe e.d. en kan je inderdaad vanuit je PS een Firefox starten :)
Wat wel raar is dat mijn Sophos Virus scanner de executable "PowershellIDE.exe" aanmerkt als virus "Mal/Packer".

Erg vreemd...
http://www.sophos.com/security/analyses/malpacker.html
Geen virus dus. Mal/Packer betekent dat compressiemethodes gebruikt zijn die ook soms door malware gebruikt wordt...

Op dit item kan niet meer gereageerd worden.


Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True