10

Bourne Shell、Perl、Python、Ruby などの言語を使用して、Unix/Linux オープン ソースの世界でスクリプト作成に多くの経験を積んだ後、Windows XP 管理スクリプトを作成する必要があることに気付きました。従来の環境は、さまざまなスクリプト言語を使用できる Windows Script Host (WSH) のようですが、主な言語は VBScript であり、COM オブジェクトに基づいています。ただし、将来は .NET ベースの Windows PowerShell になるようです。

1970 年代の Applesoft 以来、私は Basic を行っていないので、VBScript を学ぶことに熱心ではありませんが、ネットワーク ドライブをマウントするための小さなスクリプトを書くことは十分に学びました。これを実際に学ぶために時間を費やすつもりなら、.NET PowerShell 環境に時間を投資する方向に傾いています。数年前に C# の Windows フォーム プログラミングを行ったので、.NET に触れる機会があり、これが PowerShell の魅力でもあります。

Microsoft の将来を予測する水晶玉を持っている人はいないことを理解した上で、PowerShell のユーザーであり、その価値があると考える人、または PowerShell の深刻な欠点を知っていて、私が近づかないように勧める人がいる場合は、その意見を聞きたいと思います。それから。

更新:ユーザーの Windows XP ワークステーションにスタートアップ スクリプトとしてインストールする特定のスクリプトに WSH/VBScript を使用することになりました。私がしなければならないことは、それを Startup フォルダーにコピーすることだけです。しかし、私はこの 1 つの仕事を完了するのに十分な WSH しか学習しませんでした。PowerShell が未来であることを知ってうれしく思います。より複雑なスクリプト タスクが発生した場合は、PowerShell を使用します。

4

6 に答える 6

16

「お得」ですか?

絶対。ここにいくつかの理由があります。

  1. Exchange Server 2007、SQL Server 2008 など、PowerShell をベースとする Microsoft 製品がますます増えています。
  2. PowerShell は Microsoft .NET にアクセスできます。
  3. 習得が容易 - PowerShell の機能を探索するために必要なコマンドはわずかです (例) Get-Command、Get-Help、Get-Member など。
  4. ほとんどのコマンドは、DOS または *NIX シェル コマンドに似た方法でエイリアス化およびマッピングされます。たとえば、"ls" と "dir" は "Get-ChildItem" のエイリアスであり、"cd" は "Set-Location" のエイリアスです。
  5. これは優れた開発者ツールです - PowerShell は .NET ライブラリにアクセスできるため、PowerShell で .NET 機能の一部をプロトタイプ化できます。
  6. ファイルシステムであるかのように、レジストリ、証明書、環境変数などをナビゲートできます-ファイルシステムで使用するのと同じコマンドを使用してナビゲートします-例) cd HKLM:\

欠点:

  1. PowerShell バージョン 1.0 は、リモート処理 (2.0 でサポート) と新しいスレッドの作成 (System.Threading.Thread を使用) をサポートしていませんが、2.0 ではバックグラウンド ジョブをサポートします)
  2. C#/Java ベースの言語に慣れていない場合、学習曲線は長くなる可能性があります
  3. 一般的な .NET オブジェクトを作成するのは難しい
    • 例) ジェネリックList<int>コレクションの作成は次のようになります。

$l = new-Object System.Collections.Generic.List``1[[System.Int32]]

于 2009-04-06T20:27:47.307 に答える
13

Powershell は間違いなく先を見越した方法ですが、7 より前の Windows には個別にインストールする必要があるため、それ以上の依存関係なしで実行されるスクリプトをデプロイするだけの場合は、WSH がより魅力的なターゲットになる可能性があります。また、XP などの古いバージョンの Windows にはまだ .NET が含まれていないため、さらにハードルが高くなります。

ただし、.NET にある程度触れたことがある場合は、Powershell が非常に直感的であることがわかるはずです。特に Windows Server 環境では、新しくリリースされたほぼすべてのサーバー コンポーネントにカスタム Powershell コマンドレットが付属しているため、すぐにコマンド ライン管理のデフォルトになるようです。したがって、Powershell は、Microsoft がしばらくたどりたい道のりのようです。彼らは今のところ COM を埋めさえしていないので、Powershellは管理タスク自動化およびスクリプト環境として位置付けられているため、少なくとも 10 年は長く存続すると予想されます。

また、オブジェクトベースのパイプラインも見つけました。慣れるまでに時間がかかりましたが、最終的には非常に強力で使いやすくなりました。*nix で sed/awk を必要とする多くのことを確実に簡素化します。

そうは言っても、私は今でも Windows バッチ ファイルを使用して、Windows で実行する必要のある多くのものを依存関係なく実行する必要がありますが、それは私の汚い習慣です :)

于 2009-04-06T19:55:10.023 に答える
3

WSH の主な利点は、Windows 98 以降、おそらく Windows 95 からデフォルトでインストールされていることですが、PowerShell が Server 2008 に付属し、XP 以降のすべてのものにインストールできるようになったため、問題は少なくなりました。

スクリプトを実行するサーバーを完全に制御できる場合は、PowerShell を使用することをお勧めします。

于 2009-04-06T20:27:22.970 に答える
2

私はかなり長い間、Windows に最適なスクリプト言語を探していました (そして今でも探しています)。しかし、すべての亜種を見た後、最終的に WSH 用の JScript にたどり着きました。Powershell には明らかに利点がありますが、最初の投稿の利点は重要ではないようです (組み込みの IDE を除く)。ただし、完全にリストされていない欠点があります。

  1. スクリプトを実行する前に、スクリプトを実行できるように手動で有効にする必要があります。これにより、分散ネットワークへの展開が WSH よりもはるかに困難になります。
  2. コマンドレットの命名規則。camelCase でも python_tail でもありません。それは文字通り私の目を燃やします。
  3. 変数名は $ で始まります (Perl スタイルだと思いますか?正確にはわかりません) - ここでも同じです。
  4. 実パスを使用してスクリプトを実行することはできません。

反対に、JScript はより C に似ており、スクリプトの実行を明示的に有効にする必要がなく、相対パスを受け入れ、大文字と小文字を区別し、緩やかに型指定されます (どちらも、VBScript と比較して、スクリプト言語の利点です)。私は PowerShell についてあまり知識がなく、MS Technet やネットで見つけたものだけです。

したがって、私がpowershellを拒否した2つの主な理由(おそらくより強力で、MSが積極的にサポートしていることを知っていても)は次のとおりです。1)各マシンでスクリプトの実行可能性を手動で有効にする必要があること私は以前はそうでした(そして私だけではないと思います)。

于 2014-03-12T08:33:20.020 に答える
1

可能な場合は Posershell を使用し、そうでない場合はインライン C# を使用します - WSH ではありませんか? -msdos バッチ。

于 2013-01-01T17:00:33.227 に答える