"Put your seatbelts on" - Powershell tager dig tilbage til 80?erne

Jeffery Snover leverede mandagens agiterede foredrag om Powershell.

Lad mig med det samme afsløre, at hvad Powershell angår, er jeg det man kan betegne som en end-user. Jeg er tidligere Unix bruger og synes det er skønt og handy med en konsol til visse formål, så jeg slipper for at klikke rundt med musen. Og der omkring slutter min interesse for scripting.

Når jeg valgte at sidde ind til Powershell foredraget var det derfor med et håb om at blive overbevist om, at det var noget jeg sagtens kunne interessere mig mere for. Desværre havde foredraget den modsatte effekt på mig. Hvorfor skal scripting være fyldt med forfærdelig grim og indspist syntaks, som jeg overhovedet ikke har lyst til at lære' Og hvad sker der med de hvide og røde bogstaver på 90'er-blå baggrund' Helt ærligt drenge, er I farveblinde, eller skal det bare være 100 % retro'

Selvom foredraget tydeligvis ikke var for mig, men nok mere henvendt til Powershell-disciple, så blev jeg da alligevel underholdt af Jefferys stil: De første ca. 10 slides havde overskriften 'I Love', og så fik vi ellers at vide hvad Jeffery elsker og hvor cool og awesome Powershell faktisk er, og man kan jo blive nødt til at fortælle det, når man ikke gider demonstrere det?Faktisk var Jeffery så agiteret at min sidemand begyndte at imitere cheer-leader(!)

Klimaks nåede vi med Powershell-versionen af Space Invaders, der følte jeg mig hensat til 80?erne, og heller ikke dengang kunne jeg se det interessante i farvede streger på blå eller sort baggrund.

Lige da jeg var ved at komme mig over Space Invaders, nåede vi til: 'Man-pages' You got'em baby!' Man-pages er tilfældigvis en af mine yndlingsaversioner; det kan godt være at man(d) forstår dem, men jeg har aldrig fået noget ud af at læse dem.

Jeg er spændt på, om der er nogen Powershell disciple derude, som kan overbevise mig om, at Powershell i virkeligheden er über-cool ? også for folk som ikke er forelskede i scripting i forvejen.

Kommentarer (29)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Kristian Larsen

Powershell er jo bare endnu et bevis på den gamle læresætning:
"Those who don't know unix, are doomed to reinvent it".

Så det er vel næppe overraskende at det er blevet som det er.

  • 0
  • 0
Peter Mogensen

... jeg vil vove den påstand, at hvis man aldrig har fået noget ud af man-sider, så bruger man sin shell for lidt.

Der er simpelten grænser for hvad der kan forklares enkelt med "command --help" eller tilsvarende.

  • 0
  • 0
Peter Mogensen

Nej... det tror jeg ikke.

Hvor der er vilje er der vej.
Vi har alle været overvældet af kompleksiteten af det ene eller det andet system vi skulle til at bruge første gang vi så det - på et eller andet tidspunkt.
Jeg husker selv den selv-overtalelse jeg skulle mønstre for at få taget hul på Emacs-editoren i sin tid.

Men hvis man kan se at det vil være et nyttigt værktøj at have, og der ikke er decideret manglende eller fejlfyldt dokumentation, så er hovedsageligt et spørgsmål om vilje.

Nu har det på ca. samme måde med en shell som med Emacs. Jeg kan det jeg kan og jeg ved hvordan jeg slår nu funktionalitet op, så jeg med tiden kan mere. - og så tager vi den et skridt af gangen.

Iøvrigt mener jeg at man-side skrækhistorierne efterhånden er mere myte end reelt.

Jeg kan ihvertfald ikke umiddelbart komme i tanke om en man-side, der ikke formidler vigtig information klart og præcist. ... selv GNU tar er efterhånden overskuelig.

  • 0
  • 0
Ulrik Skyt

Jeg synes nu at Jeffrey Snovers foredrag var rigtig godt både mht. form og indhold, og jeg forlod det med et positivt førsthåndsindtryk af Powershell.

Det gode ved unix tools er jo, at hvis man kender sine tools - selvom det kræver læsning såvel som erfaring - kan man faktisk udrette de utroligste ting ved at pipe resultaterne fra det ene tool til det andet. Men dette gælder kun rigtigt i en unix verden, hvor der er udbredt tradition for brug af tekstfiler til alting.

Med Powershell får man nogle kommandoer som kan en masse ting (hvis man har incitament til at sætte sig lidt ind i det) - og de kan sammensættes med pipes, ligesom i unix. Men det er endnu smartere fordi man sender objekter mellem kommandoerne, ikke rå tekst - først til sidst laves en form for ToString() på objekterne, hvis man ikke har valgt anden formattering, og så ligner det jo hvad "man kender" fra unix verdenen.

Jeg hilser det velkomment, for hvor jeg kommer ses tit .bat filer i kombination med java/ruby/unix tools for at opnå simple ting, som sikkert nemt kunne laves i et lille Powershell script. Man har jo også hele .NET verdenens biblioteker til rådighed, så vidt jeg har forstået.

SpaceInvaders ser jeg som et kuriosum, farverne er jeg ligeglade med - og de kan garanteret tilpasses. Hvis man skal bruge det til noget seriøst er det funktionaliteten der tæller.

  • 0
  • 0
Anders Østergaard Jensen

Jeg har ikke set oplægget, men det her blogindlæg virker som et ret håbløst forsøg på at kritisere noget, der er meget teknisk, fra en ikke-teknisk vinkel. Hvis du ikke er til kommandolinjen, og heller ikke gider sætte dig ind i det -- givet at du heller ikke har det fornødne behov -- hvorfor dog så bruge tid på at brokke dig over noget, som tydeligvis er et ret heftigt stykke teknologi?

  • 0
  • 0
Bodil Biering

Jeg vil jo netop gerne gerne have kommandolinien, men bare på en mere brugervenlig og moderne måde.
Og selv "heftig teknologi" skal vel sælges til potentielle nye brugere?
Hvis du læser mit indlæg, så skriver jeg faktisk at jeg ankom med en positiv indstilling, men forlod salen med en følelse af, at foredraget kun var beregnet for medlemmer af klubben.

  • 0
  • 0
Michael Rasmussen

men bare på en mere brugervenlig og moderne måde.

Her gør du to fejlantagelser.
1) Kommandolinjen er [b]brugervenlig[/b]; du forveksler brugervenlighed med begyndervenlighed. I min verden er brugervenlighed, når en applikation hjælper mig med at udføre et stykke arbejde hurtigt og fleksibelt.
2) Moderne er per definition GUI og mus, mens tekstbaserede brugergrænseflader er UI i traditionel forstand. Tekstbaserede brugergrænseflader er blevet forfinet gennem 50 års daglig brug, og nåede sit udviklingsmæssige højdepunkt i starten af 90'erne. Du vil overfører en grafisk paradigme til et andet UI, hvilket ikke lader sig gøre, da udgangspunktet for de to paradigme er indbyrdes modstridende. Et tekstbaseret UI funderet i et GUI paradigme er ubrugeligt for dets primære brugere.

  • 0
  • 0
Lars Hansen

Her gør du to fejlantagelser.
1) Kommandolinjen er brugervenlig; du forveksler brugervenlighed med begyndervenlighed. I min verden er brugervenlighed, når en applikation hjælper mig med at udføre et stykke arbejde hurtigt og fleksibelt.

Du har ret i at en applikations brugervenlighed også hænger sammen med evnen til at udføre et stykke arbejde hurtigt og fleksibelt. Det er til gengæld en fejlantagelse, hvis du ikke mener at en applikations indlæringskurve har betydning for brugervenligheden.

En applikation der er let at lære, men som ikke hjælper brugeren med at udføre sit arbejde er selvfølgelig ikke brugervenlig.

Men omvendt er en applikation der løser opgaven hurtigt og fleksibelt, men som er meget svær at lære (set i forholdet af omfanget på den opgave der skal løses) vel heller ikke særlig brugervenlig.

De to ting kan ikke stå alene.

ISO 9126-1 (som er en kvalitetsmodel for software) opstiller for iøvrigt 3 karakteristika for "usability":
* Learnability
* Understandability
* Operability

  • 0
  • 0
Peter Mogensen

... argh.. verdens mest subjektive ord.

Et program er brugervenligt, når det er venligt ved mig (det er mig, der er brugeren).

Et alm. UNIX shell-prompt er for det meste ret venlig ved mig. (afhængig af hvilke standard-programmer, der ikke er installeret). Det er ganske givet ikke venlig ved alle, men det kender jeg meget få programmer der er.

  • 0
  • 0
Henrik Schmidt

Jeg vil godt give Bodil lidt ret her.

Der er ingen tvivl om, at Unix-shellen er et fantastisk og meget kraftfuldt arbejdsredskab, men det er ikke nemt at lære. Måden jeg lærte det på var at have nogle kollegaer, som er Unix-hajer, og som var villige til at pege mig i den rigtige retning, når jeg havde et problem, som jeg gerne vill løse. Jeg er nu på et niveau, hvor jeg er komfortabel med kommando-linien, men jeg er stadig langt fra at kunne kalde mig selv ekspert eller bare avanceret bruger. Det er primært fordi, at den viden jeg har nu udfylder mine behov i %95 af tilfældene. Havde jeg er større behov, var det nok ingen vej udenom som minimum at læse Bash reference manualen.

Man siderne bruger jeg typisk til at genopfriske brugen af en kommando, som jeg kender i forvejen, eller til at finde ud af, om jeg kan udnytte nogle af kommandoens options bedre. Hvis jeg skal bruge sed, gør jeg dog helt uden om man og direkte til Google.

Jeg mener dog ikke, at kommandolinien er mindre svær at lære end et vilkårligt programmerings-sprog. For at lære et programmerings-sprog at kende er det ikke nok at kunne de forskellige sprogkonstruktioner, men man skal også have en viden om Standard Library og navngivning som minimum, og det er svært at lære at blive en god programmør uden at have gode kolleger, som er bedre programmører end en selv.

Jeg tror bare man skal acceptere, at en Unix-shell er et avanceret værktøj, som man skal bruge energi på at lære at bruge. Hvis man tager til JAOO konference som Java-begynder, skal man nok heller ikke regne med at føle sig som medlem af klubben.

  • 0
  • 0
Peter Mogensen

Jeg tror bare man skal acceptere, at en Unix-shell er et avanceret værktøj...

Det er sikkert ikke det du mener, men det kunne godt lyde som om at avancerede ting ikke kan være brugervenlige. I så fald er jeg ikke enig.
Hvis noget skal klacificeres som ikke-brugervenligt, så vil jeg personlig mene at der skal kunne påpeges ting, som kunne ændre, så det blev nemmere at bruge - UDEN at det påvirker brugen i negativ retning for nogen brugere - heller ikke "power-users".
... og det er uanset hvor avanceret det er.

Jeg har f.eks. svært ved at se hvordan man-sider med en generel ændring (altså ud over at forfatte dem bedre) kunne blive bedre.

  • 0
  • 0
Henrik Kramshøj Blogger

ihvertfald hvis man deltog i celebrity death match :-)
man kan finde videon fra 2004 på http://187.signout.dk/BSD-DK/

Jeg nyder det gode citat omkring Unix (og dermed shell):
People say unix is not user friendly, I say it is... it's just picky about who it's friends with.

Når vi snakker brugervenlighed er det vigtigt at se hvem målgruppen er, og Unix ER for dem der bruger Unix meget. Der er ingen grund til så meget sniksnak om ting der går godt, så derfor siger programmerne ofte ikke noget hvis tingene går godt.

Der er ingen grund til at lede længere, Korn shell virker ;-)

  • 0
  • 0
Erik Cederstrand

For at vende tilbage til Bodils anmeldelse og afsluttende spørgsmål, så har jeg heller ikke fattet hvad det nyskabende i PowerShell er. Sidst jeg kiggede på deres blog var de ved at gå ud af deres gode skind over output redirection - helt ærligt, pipes har eksisteret i Unix lige så læng som Microsoft har eksisteret!

Den eneste nyskabelse jeg kan få øje på er, at CmdLets kommunikerer via objekter i stedet for tekst (CmdLets printer stadig tekst til stdout, men det er ikke længere en kontrakt, som det, i hvert fald de-facto, er i Unix). Om objekter er en bedre og mere stabil kontrakt end formateret tekst vil tiden vise, men det er i det mindste nytænkende at bruge MVC-mønsteret i en shell.

Jeg tror Snovers begejstring består i, at Windows endelig får en anstændig shell og et hæderligt scripting-sprog. Både VBScript og cmd.exe er en dårlig joke. Samtidig indbygger Microsoft PowerShell-understøttelse i f.eks. Exchange og SQLServer, så programmerne nu kan scriptes. Det har i den grad manglet tidligere i Microsofts strategi.

  • 0
  • 0
Erik Cederstrand

For at vende tilbage til Bodils anmeldelse og afsluttende spørgsmål, så har jeg heller ikke fattet hvad det nyskabende i PowerShell er. Sidst jeg kiggede på deres blog var de ved at gå ud af deres gode skind over output redirection - helt ærligt, pipes har eksisteret i Unix lige så læng som Microsoft har eksisteret!

Den eneste nyskabelse jeg kan få øje på er, at CmdLets kommunikerer via objekter i stedet for tekst (CmdLets printer stadig tekst til stdout, men det er ikke længere en kontrakt, som det, i hvert fald de-facto, er i Unix). Om objekter er en bedre og mere stabil kontrakt end formateret tekst vil tiden vise, men det er i det mindste nytænkende at bruge MVC-mønsteret i en shell.

Jeg tror Snovers begejstring består i, at Windows endelig får en anstændig shell og et hæderligt scripting-sprog. Både VBScript og cmd.exe er en dårlig joke. Samtidig indbygger Microsoft PowerShell-understøttelse i f.eks. Exchange og SQLServer, så programmerne nu kan scriptes. Det har i den grad manglet tidligere i Microsofts strategi.

  • 0
  • 0
Ulrik Skyt

Det gode ved objekter, som jeg ser det, er jo primært at alle objekternes variabler er tilgængelige direkte. Uden fx brug af regexp parsing og evt. efterfølgende type konverteringer. Og alle variabler kan jo nemt være mange flere end det er praktisk at inkludere i et evt. tekst-output. Direkte adgang til objekterne må også give bedre performance end parsing-printing-parsing-printing...

Den anden afgørende ting er at man får adgang til ting, der ikke er repræsenteret i tekstfiler, fx registreringsdatabasen eller som nævnt Exchange, SQLServer m.m. Og adgangen til information og funktionalitet er via veldefinerede API'er. Man baserer sig ikke på at forstå hver komponents egne interne formater ved såvel læsning som skrivning. Komponenternes indkapsling respekteres med andre ord.

  • 0
  • 0
Bodil Biering

Jeg er glad for at her er en som vil tage mit spørgsmål seriøst.
Tak for det. Jeg har også forståelse for begejstringen over at windows får en shell som kan noget, og at powershell adskiller sig ved at bruge objekter.
Jeg undrer mig bare meget over at der tilsyneladende ikke er sket ret meget udvikling med dette værktøj.
Tænk på udviklingen indenfor IDE'er og intellisense. Når man skulle programmere for 10 år siden, åbnede man Emacs og tastede løs, og hvis man var heldig kunne man finde noget syntaxhighlighting som virkede.
Den udvikling der er sket på dette område handler i den grad om brugervenlighed for programmører.
Jeg ved ikke om der er nogen, der så vil påstå at denne øgede brugervenlighed (som måske i særlig høj grad kommer begyndere til gode) har medført gener for super-brugere? I så fald er der jo stadig mulighed for at bruge sin gamle yndlingseditor.
Handler det måske i virkeligheden lidt om,
at der er folk herinde som har brugt en masse tid på at komme op ad den stejle shell-indlæringskurve,
og som derfor ikke ønsker sig at noget bliver forandret?

  • 0
  • 0
Erik Cederstrand

Jeg undrer mig bare meget over at der tilsyneladende ikke er sket ret meget udvikling med dette værktøj.

Jeg tror til dels det skyldes, at udviklingen af PowerShell går langsomt. Version 2.0, som indeholder en del nyskabesle, har været i "Technology Preview" i 1,5 år.

Jeg ved, at det kun bliver på anekdote-niveau, men her er et eksempel: jeg vil logge ind på en række blades, starte et program på hver blade, og logge ud igen. Rimelig simpel opgave, og på Unix ville jeg klare det på 3 linier med en for-løkke og SSH med password-løs nøgle. No go i PowerShell. Det kommer først med PwerShell Remoting i 2.0, som Microsoft ikke selv kan sige, hvornår de forventer at være klar med.

  • 0
  • 0
Peter Mogensen

Jeg ved ikke om der er nogen, der så vil påstå at denne øgede brugervenlighed (som måske i særlig høj grad kommer begyndere til gode) har medført gener for super-brugere?

Jo det vil jeg gerne. Og jeg vil stadig opponerer imod at man opfatter "brugervenlighed" som en objektiv linær størrelse.

Der er ganske vist kommet mange fine ting til ang. IDE'er, men samtidig mangler jeg også at måde et IDE, som jeg kan bruge ligeså nemt i en terminal via SSH og som ikke kræver jeg igen og igen rækker ud efter musen.
Det er selvfølgelig ikke en "gene" for mig at den slags eksistere og at andre kan bruge det, hvis de har lyst, men det er ikke brugervenligt nok for mig.

  • 0
  • 0
Dennis Krøger

Tænk på udviklingen indenfor IDE'er og intellisense. Når man skulle programmere for 10 år siden, åbnede man Emacs og tastede løs, og hvis man var heldig kunne man finde noget syntaxhighlighting som virkede.

Eh, ctags er over 10 år gammelt...

Der er heller ingen større udvikling her, bare en smule pænere indpakning.

  • 0
  • 0
Niels Grove-Rasmussen

Som MS' første reelle forsøg på en integrationsteknologi er PowerShell i version 1.0 interessant - men mest som prototype.

Det mest frustrerende som daglig administrator af SQL Server er imidlertidig de modsatrettede signaler og frigivelser fra MS:
*) Til SQL Server 2008 er PowerShell implementeret som et mini-sys. Godt nok med egne CmdLets, men jeg mener ikke det giver mening at frigive specialudgaver af et integrationsværktøj.
*) MS' overvågnings- og automatiseringsværktøj System Center Operations Manager (SCOM) forudsætter anvendelse af WSH (VBScript) på agent-klienterne. PowerShell kan ikke umiddelbart benyttes. Dermed skal en SQL Server 2008 installation downgrades med COM APIet DMO, som MS selv lagde i graven med SQL Server 2005. Jeg mener ikke det giver mening at MS går een vej med deres opvågningsplatform og en helt modsat vej med deres integrationsværktøj.

Jeg er fortsat meget spændt på om MS på et tidspunkt kommer med en klar melding om anvendelsen af PowerShell. Ikke bare inden for deres egne rækker, men også for andre platforme som UNIX eller z/OS.
Indtil da er jeg fristet til at basere det meste af den daglige integration og automatisering på andet end PowerShell - selv om jeg dermed udelukker meig fra .NET.

  • 0
  • 0
Frederik 'Freso' S. Olesen

For lige at vende debatten for en kort stund vil jeg da høre om du kender til/har prøvet fish <http://fishshell.org/&gt;? fish prøver netop at være så "brugervenlig" (hvis man tør bruge det ord ;)) som det er muligt at gøre en kommandoskal.

Udviklingen er dog gået lidt død, og der er ikke hørt noget fra Axel (projektlederen) i et stykke tid... :/

  • 0
  • 0
Log ind eller Opret konto for at kommentere