it-swarm-ja.tech

cygwin / unix-shellに対するPowershellの利点は何ですか

私が知っている明らかな違いは、Exchangeなどの特定のMS製品とのインターフェイス機能です。しかし、そのような製品を管理する必要がない人にとって、Powershellの利点は何ですか? Powershellを学ぶ理由は何ですか(私がbashとcygwinに堪能であると仮定して)?

9
Moshe

StackOverflowに関するJeffreySnover(PowerShellデザイナー)からの優れた回答があります。

https://stackoverflow.com/questions/573623/#573861

2
Richard Gadsden

最も明らかな利点:パイプラインにテキスト出力(またはレガシーコマンド)が含まれていない限り、パイプを介してテキストを移動するのではなく、すべてのプロパティとメソッドを含む.NETFrameworkオブジェクトのインスタンスを移動します。

これにより、ロケールや言語の設定にまったく影響されない、より表現力があり曖昧さの少ないパイプライン処理が可能になります(たとえば、日付や数値の形式、およびそれらを通常の文字列として処理する方法を考えてください)。

これは、スクリプト環境で多くの.NETFramework機能にアクセスできることも意味します。

18
Tomalak

パラダイムについての価値判断に立ち入ることなく、PowerShellの主な利点は.Netの統合と既存性です。Windows2008サーバー以降、デフォルトでバンドルされ、2003および2003R2のサービスパックに読み込まれます。

公平を期すために、スクリプトには他にもいくつかの選択肢があります。たとえば、PerlやPythonなどです。 Pythonは、ネイティブの.Net統合が必要な場合にIronPythonを使用するオプションも提供します。実際、IronPythonは、ディレクトリにドロップするだけで問題なくインストールされます。次のアプリケーションに簡単にバンドルできます。個別のインストール手順は必要ありません。

Powershellの主な強みは、少し両刃の剣です。 .netオブジェクトのストリーミングは非常に便利であり、その利点がありますが、フレームワークとうまく連携するコンポーネントの機能については、より多くの前提があります。これが実際に機能するためには、コマンドレットで物事をラップする必要があります。テキスト出力はやや低レベルであり、解析が必要ですが、フレームワークとうまく連携するためにコンポーネントにかかる負担が少なくなります。

時間の経過とともに、Windowsエコシステム(MSコンポーネントとサードパーティコンポーネントの両方)の多くにコマンドレットラッパーが付属しているため、Powershellで動作することが期待されます。これが発生すると、Powershellの場合ははるかに強力になります。

歴史的に、管理の観点から見たWindowsの従来の主な弱点の1つは、スクリプトのサポートが不十分なことでした。 MSはこれを数年前に認識し、数回の不完全な試み(WSHなど)の後、Powershellはその欠陥を修正するためのMSのこれまでで最も信頼できる取り組みです。

PowerShellの最大の利点は、テキストを解析したり、sedやawkを実行したりすることなく、何でも何にでもパイプできることだと思います。これらの厄介なオブジェクトを赤道に持ち込むことなく、PowerShellはパイプラインでコマンドをリンクするための自動 sedとawkを持っていると考えてください。

2
x0n

利点:-

  1. タスクの自動化:-ユーザーを1000台のマシンに追加するなどのタスクは、手動で面倒な作業です。ただし、PowerShellを使用すると、単純なスクリプトを作成するだけで、そのスクリプトが実行され、すべてのクライアントが自動的に構成されます。したがって、手順を自動的に繰り返すことで時間を節約できます。 Windows PowerShellのバックアップ/復元スクリプトは(Windowsタスクスケジューラを使用して)開発およびスケジュールできますが、サーバーの全体管理は1回限りのバックアップと復元に使用されます。 Windows PowerShellには、本番データベースではなくSQLスナップショットに対して実行できるという利点があります。 Windows PowerShellコマンドのパラメーターの1つにより、SQLスナップショットが生成され、WindowsPowerShellは本番データベースではなくスナップショットに対してアクションを実行します。これにより、本番環境でのバックアップ操作によるリソースへの影響が軽減されます。 Windows PowerShellを使用すると、SharePoint管理者は、バックアップまたは復元のオプションをよりきめ細かく制御できます。

  2. リモーティング機能の改善:-重要性は2つあります。まず、Windows7デスクトップはPowerShellコマンドを使用してサーバーと通信できます。その結果、Windows 7ラップトップの技術者は、PowerShellスクリプトを実行してサーバーをリモートで構成できます。次に、サーバー上にあるPowerShellで記述されたクライアントログオンスクリプトをWindows7でより簡単に実行できます。また、PowerShellを使用すると、リモートマシンを簡単に制御し、重要なタスクを実行して、これらの変更を大規模に簡単に適用できます。リモーティングはネットワークリソースを使用します。そのため、PowerShellを使用する場合は、GUIを使用しないため、特定のタスクに必要な帯域幅が削減され、ネットワークの過負荷の問題が解決されます。

  3. 一貫性:-タスクを完了するための手順が設定されている場合、Windows Powershellを使用すると、ステップを見逃すことはなく、可能な限り自動化され、自動化できないものについてPowershellプロンプトが表示されます。

  4. .NETサポート:-Powershellは.NETフレームワークをサポートします。したがって、すべてのシステム機能をPowerShellスクリプトに簡単に追加できるため、プログラマーがスクリプトを開発するのに役立ちます。したがって、VDIのタスクを自動化することは、はるかに簡単で、単純で、効率的です。

  5. 手作業の軽減:-管理者は、スクリプトを作成するだけで、仮想マシンの設定をリモートで作成、削除、または変更できるようになりました。彼は個々のPCに行って作業を行う必要はありません。また、書かれたスクリプトはすべてのコンピューターで受け入れられます。したがって、管理者はそれらを何度も書き直す必要はありません。

  6. 再利用性:-特定のタスクを実行するために作成されたスクリプトは、後で使用するために保存でき、他のスクリプトと組み合わせてさまざまなタスクを実行することもできます。そのため、スクリプトを実行するだけで、繰り返しのタスクをはるかに簡単に実行できます。これにより、管理者はマシンを構成する際の時間と費用を節約できます。

  7. パイプラインのサポート:-PowerShellの最大の利点は、テキストを解析しなくても、何でも何にでもパイプできることです。 1つのコマンドの出力を新しいセットへの入力として提供できるため、複雑なタスクを解決できます。

2
user59155

Cygwinは、Windowsのすべてのバージョンで使用できることが保証されているわけではありません。最後に、64ビットマシンでは問題があることを確認しました。 PowershellはWindowsのデフォルトコマンドシェルになりつつあり、Windowsマシン上のすべてのリソースへの「ネイティブ」アクセスを提供します。

0
Eric Z Beard