質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

5回答

11895閲覧

PowerShellの普及率と仕事での利用について

AGadget

総合スコア60

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

1グッド

0クリップ

投稿2019/08/16 20:29

PowerShellの普及度合と、実際に仕事で使えるのかという2点について質問させてください。

私の職場ではちょっとした処理にはバッチファイルを用いています。なお、PowerShell(.ps1ファイル)使用率は0%です。これまで特に疑問も持たず、不満も無かったのですが、ふと「令和にもなって、PowerShell使用経験ゼロってどうなの?」と、ちょっと不安になってきました。

そこで自身への投資として、休みの日にでも勉強してみようかと思ったのですが、PowerShell関連の記事を色々読んでいると、ファイルレスマルウェアだの、「PowerShellは『凶器』」だの、.ps1ファイル実行にはセキュリティポリシー変更云々、と何だかネガティブな話題ばかりが目に付きます。

私は趣味でPowerShellを使う予定はありません。仕事のためだけに勉強しようと思っているのですがPowerShellに問題(特にセキュリティ関連)があるのであれば使う訳にはいきませんし、勉強するのも後回しにしようと思っています。

皆様の職場でのPowerShellの使用感はどのような感じでしょうか。結構使われていますか? それとも全く使われていませんか? また、セキュリティの問題やコマンドプロンプトで十分といった観点からPowerShellは有用だと思いますか?

ご回答のほど、よろしくお願い致します。

Noricha👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

普及率は、Windows が入っていれば 100% です。使い勝手はとても良く、bat など使っていられません。

凶器だセキュリティーだはデマです。よくわかっていない人が言っているだけです。お年寄りは怖がってパソコンに触らなかったり、使ったことのない機能を使わなかったりするでしょう? 凶器でセキュリティーが低いと思っているんですよ。

使える人はこれがなくては仕事にならないし、使えない人はしなくていい苦労をしている、それだけです。ここでも「バッチでどうやったらいいですか?」という質問をよく見ますが、PowerShell ですれば一行で片付くことが、使わないと難解なものを書かなければいけなかったり、サードパーティーのソフトを入れなければいけなかったりしています。

PowerShell でなければできないということは少ないと思います。簡単なものならバッチでいいでしょうし、複雑なものなら C# や Python を使えばいいでしょう。また、みんなが困っていることなら専用のソフトがあるはずです。

しかし、いつでも開発環境を立ち上げてコンパイルできるとは限らないし、新しいソフトをインストールできるとも限りません。そこで少し複雑な自動化がしたければ、どこにでもある普及率 100% の PowerShell の出番です。

PowerShell があれば、sed も awk も perl も grep も要りません。簡単なものから複雑なものまで、必要なアプリケーションはほぼ全て作れます。ボタンやテキストボックスを自由に配置したウィンドウも作れるし、音声合成や音声認識もできます。WMI も使えるし COM も使えます。Excel に入っているデータとデータベースのデータを照合して必要な人だけにあてた住所ラベルを印刷することもできます。ウェブサーバーを作ることもできるし、メールの配信もできます。

セキュリティーは bat や vbs より高く、それらでの経験が生かされています。

実際に使えばわかります。「よくわからないけどできること多すぎて怖い」と手を出さなければ、セキュリティー云々のデマを流すようになります。

#追記 ファイルレスマルウェアについて

これは、怪しいショートカットファイルや怪しいリッチテキストファイルを怪しいサイトやメールからダウンロードして開いた時に感染するマルウェアです。JavaScript や PowerShell を使用していますが、**JavaScript や PowerShell を使えない人には感染しないというわけではありません。**まずウィルス検知ソフトを信頼するのをやめ、怪しいファイルを開かないことを徹底すべきでしょう。ウィルス検知ソフトはあくまで保険にすぎず、未知のウィルスを検知することはできません。そして未知のウィルスはこの瞬間にも次々と生まれています。

投稿2019/08/16 21:58

編集2019/08/17 00:00
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGadget

2019/08/17 09:36

ご回答ありがとうございます! やっぱりコマンドプロンプトよりPowerShellのほうが良いのですね。セキュリティも深刻な問題無し(というと若干語弊がありますが)ということでPowerShellの勉強始めていこうと思います。
guest

0

「PowerShellは『凶器』」

には同意します。.NETを絡められるので、恐ろしいほどに自由度があります。私も.NETの世界で何かしなければならないときにはPythonではなくPowerShellが選択肢に上がります。良い道具は凶器にもなり得るという意味で、PowerShellには独特のエッジがあると思います。

PowerShellの使用感

に関しては、やはり.batや.cmdのほうが.ps1よりも可搬性に優れるという印象です。私は.batや.cmdを基本として、必要に応じて.ps1を-ExecutionPolicyオプションを指定しながら呼び出すスタイルを採用しています。私が考えるPowerShellの2番目に素晴らしい点は入出力のXML化が容易というところなので、XML周りの処理に関してもPowerShellを採用する動機が発生します。

PowerShellをどれくらい使っているか

私はPowerShellをあまり使っていません。PowerShellの使用頻度は.batや.cmdの半分未満です。理由は1) 私はPythonが使える、2) 可搬性が.batや.cmdほどに高くない、3) PowerShellを読み書きできる人が周りにいない、からです。

MS製品群(SharePointとかAzureとか)の中にどっぷりと浸かるため or サブ言語としてのPowerShellはありだと思いますが、仕事でゴリゴリとメインで使っていくつもりなのであればPowerShellを読み書きできる人が周りにいるかという視点も持っておくと良いと思います。

投稿2019/08/18 03:12

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/18 03:15

凶器の説明ができていないためにデマを広げるだけになっています。 可搬性についても間違っています。
Zuishin

2019/08/18 03:17 編集

例えば、del 一つあれば bat は凶器になります。レジストリを書き換えるコマンドを呼び出しても、for の書き方を間違えてもです。bat はどんな危険なコマンドでも呼び出すことができます。これを凶器と呼ぶなら、パソコンを使うのをやめるのがいいでしょう。
YouheiSakurai

2019/08/18 03:20

・凶器の説明→良い道具は凶器にもなり得る ・可搬性→デフォルトの実行ポリシーではps1ファイルのダブルクリック起動ができない&PowerShellにはバージョンによる差異が(私的に)まぁまぁある
Zuishin

2019/08/18 03:20

初心者の方はよく間違えますが、彫刻刀セットがカッターナイフより危険と言うことはありません。 刃物の扱いを知らない人が扱うことが危険なのです。
Zuishin

2019/08/18 03:21

実行ポリシーについてはコマンドラインオプションで指定できます。可搬性は無関係です。
YouheiSakurai

2019/08/18 03:22

可搬性→デフォルトの実行ポリシーではps1ファイルのダブルクリック起動ができない
Zuishin

2019/08/18 03:24

セキュリティーのためですが、ダブルクリックと可搬性は無関係です。 カッターナイフで素人が何でもかんでもしようという方が危険です。
Zuishin

2019/08/18 03:27

どうしてもダブルクリックでの起動が必要なのであれば、スクリプトにショートカットを張れば解決します。逆にその一手間をかけなければいけないところで、未熟な人の濫用を防いでいます。 デフォルトでダブルクリックで起動するバッチの方が明らかに凶器でしょう。
YouheiSakurai

2019/08/18 03:30

良い道具は凶器にもなり得る→PowerShellは凶器、バッチは凶器、Pythonは(私的に最高の)凶器 全部、凶器、兼良い道具。
Zuishin

2019/08/18 03:33 編集

バッチもです。比較になっていません。
AGadget

2019/08/19 08:16

YouheiSakurai様 ご回答ありがとうございます! 使用感についてのご説明大変参考になりました。色々なことができるということですので、その辺り気を付けながら使っていきたいと思います。
guest

0

何かを作るとき、どの言語を選ぶのかと言う面で「普及率」とか「人気度」等という曖昧なものを根拠にしたいのであれば、レガシーなものを使い続けた方が無難です。レガシーから逃れられている人達は、そういう物とは関係無く、ちゃんと分析して適材適所を判断しています。

私の所では、とあるADとその配下の端末全台からなるシステム一式をリプレースするタイミングで、ログオンスクリプトはPowerShellに移行しました。理由としては、バッチ単独では難しい処理が可能(従来はVBScriptやJScriptを用いていた部分もあった)であるということです。それ以外では、そのシステムやサーバー等で単独で使う場合などにPowerShellを用いています。他にもChocolatey等のPowerShellを使ったツールも使っています。逆に言うとそれ以外では使用していません。

使用しなかった例を挙げます。

  1. MacやLinux上でも実行する予定のバッチやスクリプト。
    PowerShell Core 6.0以降(2018年)はMacやLinuxでも動作できますが、まだ新しく、安定して動作するかという点に不安があります。また.NETも.NET Frameworkではなく.NET Coreである、WMI等のWindows固有の物は使えない、等の注意点もあり、Windowsと同じ感覚で使用すると動かないという目に遭う可能性があります。かといってPython等の言語と比べて大きな利点はないため、今は避けています。
    ※ 各ディストリビューションではパッケージが用意されているため、インストール自体が難しいというわけではありません。PerlやPython2(3ではない)とは違って、デフォルトではインストールされていない場合があるというのも一応考慮に入っていますが、重要視してはいません。

  2. 環境が不明な各バージョンのWindowsで実行する予定のバッチやスクリプト
    Office 2019(ボリュームライセンス版)を組織内に配付するためにインストールのバッチを作らなければならないことがありました。Office 2019のインストールは設定等が書かれたXMLを用意し、コマンドを叩くという仕組みになったため、一般の利用者がインストールするには難しかったからです(ちょっと特殊な組織なので、端末は情シスで一括管理とかでは無く、各部署や利用者単位で管理になっており、インストールも各利用者に任されています)。初めはPowerShellで作ろうとしましたが、次の理由で断念しました。
    a.実行ポリシーのデフォルトがRestrictedであり、それを利用者に変更するのは難しい(バッチと組み合わせれば回避は可能であるが)。
    b.Windowsのバージョン毎にデフォルトで入っているPowerShellのバージョンが異なり、一つ一つ確認するのが大変(開発環境はWindows 10しかない)。(よく考えたら、Office 2019はWindows 10またはWindows Server 2019にしかインストールできないから、バージョンを気にする必要が無かった…今気付いた)
    最終的には、インストール用の配布物の中にRuby実行環境一式も一緒において起動バッチからRubyスクリプトを呼び出すというなんとも言えない物になってしまいました。PowerShellで作ろうとしたときは、WPFでGUIにしようと企んでいたはずなんですが…。(時間ができたら、Electronで作り直したい)

まぁ、ぶっちゃけ私がまだ慣れていないので、本格的な物が素早く作れないってのも理由にはあるんですが…。

投稿2019/08/16 23:23

raccy

総合スコア21739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGadget

2019/08/17 09:40

ご回答ありがとうございます! 色々できるんですね。他所に配布するのは……簡単ではなさそうですが高機能なのは良いですね。ちょっと本腰入れて勉強してみようと思います。
guest

0

まず、個々の特定の職場における普及率を知ることに何の意味もないと思います。
(例えばMicrosoftの社員がこの質問に答えたらメチャクチャ高い、という結果になるだろうし、Windows使ってない職場ならゼロになる)

普及率より、何ができるかの方が重要じゃないでしょうか?

普及率を気にするのは情報量であったり、将来のサポートについて気にする場合だと思いますが、現状で情報量は申し分ない程度にありますし、将来については確実なことは何一つ言えないものの、それはコマンドプロンプトについても同様に、いつレガシーとして切り捨てられるのかは誰もわかりません。

あと使用感というのもイマイチ聞きたいことがよくわかりません。
CUIなんで、コマンド打って結果が帰ってくるだけです。

そこで自身への投資として、休みの日にでも勉強してみようかと思ったのですが、PowerShell関連の記事を色々読んでいると、ファイルレスマルウェアだの、「PowerShellは『凶器』」だの、.ps1ファイル実行にはセキュリティポリシー変更云々、と何だかネガティブな話題ばかりが目に付きます。

少なくともその資料がどういう根拠で書かれているのかわからないと、議論する余地がないです。
セキュリティ保護機構のないバッチファイルとの比較であれば、バッチの方が明らかに危険じゃないの?という一般論になります。

もともとWindowsのバッチファイルは、*nix系のシェルスクリプトと比べて非常に機能が制限されており、標準のコマンドラインツールも充実していないため、他のスクリプト処理系ならできる単純な事ができなかったり、やろうとしても非常に複雑になってしまう問題があります。

それを補うために登場したのがPowerShellなので、バッチファイルで十分事足りる用途であれば、無理して使うものではないかと思いますが。

あくまで目的を達成するために使う道具なんで、

ふと「令和にもなって、PowerShell使用経験ゼロってどうなの?」と、ちょっと不安になってきました。

そういう動機で使うもんじゃないのは確かだと思います。

投稿2019/08/16 21:21

編集2019/08/16 21:29
gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGadget

2019/08/17 09:33

ご回答ありがとうございます! セキュリティ的には深刻な問題は無いということですね。 ありがとうございます!
guest

0

.bat .cmd で事足りているなら、あえて手を出す必要は無いのでは?
PowerShell を学んで、仕事に使えそうなものがあれば
使っていくといいと思います。

ただ、PowerShell はいろんなことができ「すぎる」ので
なんかミスった時のリスクは高い(ことがある)と考えてください。
知らない人が使った場合のメリット/デメリットも
想定しておいた方がいいでしょうね。

個人的な印象ですが、IT関連の専門家でもないなら
あえて使う必要はないんじゃないかなあ。

投稿2019/08/16 22:50

takasima20

総合スコア7464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/16 22:58

嘘ですね。ミスった時のリスクは bat も高いです。それを言うなら、コンピューターを使わなければいいと思います。
AGadget

2019/08/17 09:38

takasima20様 ご回答ありがとうございます! コマンドプロンプトより自由度(?)が高いという点は念頭に置いておこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問