web-dev-qa-db-ja.com

Windows PowerShellはUnix / Linuxの端末と同じくらい強力ですか?

Windows PowerShell はLinuxのterminalと同じくらい強力で効率的ですか?

何も説明せずに、オフラインの人々から、Windows PowerShellは、UNIX管理者がWindowsをより快適に使用できるようにするための試みであると言われています。しかし、私は、彼らはそれが(またはほぼ)同じ効率を持っている場合にのみ快適になると思います。

43
kern

さて、あなたの最初の問題は、シェル(PowerShell)と端末を比較していることです。 Linuxでは、ターミナルは文字ベースのI/Oを送受信するものであり、背後にインタラクティブなユーザーがいると想定されます(つまり、containシェル)。最も一般的なシェルの1つはwithinで実行されますUbuntuのターミナルは Bash ですが、他にもあります。

オフラインの人々は、あまり説明せずに、Windows PowerShellはUnix管理者にWindowsの使用をより快適にさせる試みだと言っています。

本当に正しいことは、PowerShellはWindowsで WMICOM および 。NET のオブジェクトモデルの多くを公開しているということです。対話型でスクリプト可能なコマンドライン環境-このコマンドライン環境は、古いDOS(2.0以降)command.comと同様に、パイプラインやI/Oリダイレクトなどの多くの概念をUnixシェルから引き続き借用しています。そしてcmd.exeはそうしました。パイプラインは、PowerShellのオブジェクトで機能します。 HTMLを作成したり、十分な知識がある場合は Excel スプレッドシートをその場で作成したりできます。これは確かに、古いcmd.exe Shellからのアップグレード/交換であり、 Windows NT 4. からあまり変更されていません。

構文に関しては、Unixシェルのようではありません(最終的にコマンドレットはいずれも/をスイッチまたはパラメーターインジケーターとして使用しません)が、PowerShellウィンドウにlsname__を入力するなど、従来のUnixコマンドには多くのエイリアスがありますdirname__のように動作します。ただし、これらは単なるエイリアスです(「Get-Alias」にリストされています)。

PowerShellの機能については、スクリプトのみの方法で VBScript および CScript -から同様の機能がありましたが、どちらも.NETより前のものです。

ほとんどの場合、Bashを使用するときにUnixの人々がしなくてよいことの1つは、多くの高度で単純なPowerShellタスクに必要なプログラマーまたはオブジェクトの非常に精巧なオブジェクトモデルに精通していることです。しかし、これは、多くの標準 POSIX コマンドに対してストレートテキスト出力の明確な規則があるためにのみ可能です。 Windowsにはこの伝統がありません。管理タスクにmmcname__コンソールを使用することを好むように思われました。さらに、多くの有名なUnixユーティリティは複雑であり、使用する前に研究が必要です。- rsyncNAME _wgetNAME _ など効率はおそらく、使用しているツールを他の何よりもよく知っているかどうかの関数です。

54
LawrenceC

Windows PowerShellとUnixシェルは、2つの異なる点で利点があります。

Unix(シェル)は、すべてがファイルであるという哲学を持っています。 Unixコマンドの入出力はファイルのようにアクセスできます。これにより、コマンドの連鎖が非常に単純になり、あるコマンドの出力を別のコマンドで再利用することがUnixシェルの威力となります。

Windows PowerShellでは、私の知る限りでは、すべてがオブジェクトです。コマンドの結果をオブジェクトとして別のコマンドに渡すことができます。これは本当に強力ですが、単純なUnixという概念はありません。

PowerShellがUnixシェルほど効率的であるとは思いませんが、他の人はそれがそうであると信じています。

しかし、Windowsは* nixシステムではないため、比較は意味がありません。したがって、* nixの概念は適用されません。 MS-DOS と比較すると、PowerShellは非常に優れています。

26
Biapy