2009-05-26 13 views
16

So che Powershell è abbastanza potente in quanto è un linguaggio di scripting in cui si ha accesso all'intero framework .Net (questo è tutto ciò che so a riguardo). Ma sto lottando per capire qual è il grande clamore su Powershell quando potrei usare C# per codificare esattamente la stessa cosa?Perché dovrei usare Powershell su C#?

+1

Duplicate http://stackoverflow.com/questions/742262/what-can-i-do-with-c-and-powershell – NinethSense

+2

@NinethSense: Non pensi che il link che hai fornito era circa quello che uno può fare sia in PowerShell che in C#? Voglio sapere perché avrei scelto PowerShell su C# – Draco

+1

L'altra domanda riguarda l'estensione o l'utilizzo di Powershell da C#. Sicuramente non un duplicato. – Joey

risposta

15

Penso che tu stia facendo la domanda sbagliata. Dovrebbe essere: "Perché dovrei usare C# quando potrei usare Powershell per codificare la stessa cosa?"

Questo è il vecchio argomento di script rispetto al software compilato rivisitato. Una soluzione di scripting è più flessibile (hai solo bisogno del Blocco note per modificare lo script, non è richiesto alcun compilatore).

Per una piccola attività, uno script è più veloce da scrivere, distribuire e modificare rispetto alla creazione di un progetto in Visual Studio, compilandolo, distribuendolo alla destinazione, correggendo il codice, ricompilandolo nuovamente, distribuendolo di nuovo ...

Per qualsiasi compito più grande, preferisco decisamente un IDE che compila il mio codice. I messaggi di errore su una build rotta sono di grande aiuto per trovare la causa. (Efficienza runtime di solito è meglio in un software compilato, ma con le CPU moderne si tratta di una differenza di pochi millisecondi, quindi per la maggior parte dei progetti, non importa più.)

È può fare qualsiasi tipo di progetto in C# o Powershell. Ciò non significa che lo dovrebbe essere.

1
  • Non è un linguaggio compilato.
  • Ha un ecosistema di plugin con un sacco di "librerie" per fare varie cose specifiche del dominio come copiare file, giocare con AD, Exchange.
  • È lo strumento giusto per un gruppo di lavori diversi e leggermente sovrapposti.
  • È molto più potente e coerente di CMD.EXE e altre cose si sono evolute dalle shell dei comandi che dovevano essere contenute nella RAM 8K.

E perché stai usando C# in ogni caso, ILASM può fare tutto con molto più controllo, e tu stai solo chiamando roba nel BCL comunque.

7

Quando non si utilizza Powershell come shell ma come ambiente di programmazione, si può pensare a Powershell come a una sorta di parco giochi interattivo .NET. Non userei mai Powershell per la prototipazione della GUI, ma in passato l'ho usato per giocare con gli oggetti .NET e i loro metodi per risolvere un particolare problema. La semplice modifica di una riga di comando è più produttiva rispetto a un ciclo di modifica/salvataggio/compilazione/esecuzione ogni volta che si apporta una modifica.

Inoltre, i domini appropriati per entrambe le lingue sono molto diversi. Powershell è, al suo centro, uno strumento di amministrazione e automazione, con accesso semplificato a molte cose che possono essere più difficili da utilizzare da un altro ambiente, come il Registro di sistema, l'archivio certificati, WMI e altri.

Probabilmente non si vuole scrivere un'applicazione di database enterprise con Powershell e probabilmente non si vuole scrivere un programma C# solo per copiare alcune cose nel file system.

+0

upvoted per l'utilizzo della parola enterprisey – SheldonH

0

ho generalizzato tua domanda nelle seguenti:

Perché dovrei usare (linguaggio di alto livello che conosco poco) sopra (inferiore lingua livello so di più)?

Il punto di un linguaggio di livello superiore è quello di astrarre compiti comuni in modo che siano più veloci da scrivere. Molte persone che fanno questa domanda non possono concepire questo beneficio di un linguaggio di livello superiore perché sono già a loro agio con il loro linguaggio di livello inferiore.

Alla fine, tutto si riduce alla tua volontà di apprendere le astrazioni di un linguaggio di livello superiore nella speranza che tu possa diventare tanto abile quanto quello inferiore.

+2

Non penso che PowerShell sia intrinsecamente "di livello superiore" di C#, è solo che il loro rispettivo compito i domini sono molto diversi. – Joey

+0

PowerShell è davvero di livello superiore, se non altro perché il concetto di "pipeline" rende più facile riutilizzare e combinare "pezzi" ... Certamente PowerShell cade a un livello inferiore quando devi fare qualcosa per il quale non c'è già uno script o un cmdlet esistenti, ma la componibilità di cmdlet e funzioni è molto più elevata di qualsiasi altra cosa in C# (o Ruby/Python/Perl). – Jaykul

Problemi correlati