PowerShellの普及度合と、実際に仕事で使えるのかという2点について質問させてください。
私の職場ではちょっとした処理にはバッチファイルを用いています。なお、PowerShell(.ps1ファイル)使用率は0%です。これまで特に疑問も持たず、不満も無かったのですが、ふと「令和にもなって、PowerShell使用経験ゼロってどうなの?」と、ちょっと不安になってきました。
そこで自身への投資として、休みの日にでも勉強してみようかと思ったのですが、PowerShell関連の記事を色々読んでいると、ファイルレスマルウェアだの、「PowerShellは『凶器』」だの、.ps1ファイル実行にはセキュリティポリシー変更云々、と何だかネガティブな話題ばかりが目に付きます。
私は趣味でPowerShellを使う予定はありません。仕事のためだけに勉強しようと思っているのですがPowerShellに問題(特にセキュリティ関連)があるのであれば使う訳にはいきませんし、勉強するのも後回しにしようと思っています。
皆様の職場でのPowerShellの使用感はどのような感じでしょうか。結構使われていますか? それとも全く使われていませんか? また、セキュリティの問題やコマンドプロンプトで十分といった観点からPowerShellは有用だと思いますか?
ご回答のほど、よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア28669
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
総合スコア6142
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/18 03:17 編集
2019/08/18 03:20
2019/08/18 03:20
2019/08/18 03:21
2019/08/18 03:22
2019/08/18 03:24
2019/08/18 03:27
2019/08/18 03:30
2019/08/18 03:33 編集
2019/08/19 08:16
0
何かを作るとき、どの言語を選ぶのかと言う面で「普及率」とか「人気度」等という曖昧なものを根拠にしたいのであれば、レガシーなものを使い続けた方が無難です。レガシーから逃れられている人達は、そういう物とは関係無く、ちゃんと分析して適材適所を判断しています。
私の所では、とあるADとその配下の端末全台からなるシステム一式をリプレースするタイミングで、ログオンスクリプトはPowerShellに移行しました。理由としては、バッチ単独では難しい処理が可能(従来はVBScriptやJScriptを用いていた部分もあった)であるということです。それ以外では、そのシステムやサーバー等で単独で使う場合などにPowerShellを用いています。他にもChocolatey等のPowerShellを使ったツールも使っています。逆に言うとそれ以外では使用していません。
使用しなかった例を挙げます。
-
MacやLinux上でも実行する予定のバッチやスクリプト。
PowerShell Core 6.0以降(2018年)はMacやLinuxでも動作できますが、まだ新しく、安定して動作するかという点に不安があります。また.NETも.NET Frameworkではなく.NET Coreである、WMI等のWindows固有の物は使えない、等の注意点もあり、Windowsと同じ感覚で使用すると動かないという目に遭う可能性があります。かといってPython等の言語と比べて大きな利点はないため、今は避けています。
※ 各ディストリビューションではパッケージが用意されているため、インストール自体が難しいというわけではありません。PerlやPython2(3ではない)とは違って、デフォルトではインストールされていない場合があるというのも一応考慮に入っていますが、重要視してはいません。 -
環境が不明な各バージョンの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
総合スコア21739
0
まず、個々の特定の職場における普及率を知ることに何の意味もないと思います。
(例えばMicrosoftの社員がこの質問に答えたらメチャクチャ高い、という結果になるだろうし、Windows使ってない職場ならゼロになる)
普及率より、何ができるかの方が重要じゃないでしょうか?
普及率を気にするのは情報量であったり、将来のサポートについて気にする場合だと思いますが、現状で情報量は申し分ない程度にありますし、将来については確実なことは何一つ言えないものの、それはコマンドプロンプトについても同様に、いつレガシーとして切り捨てられるのかは誰もわかりません。
あと使用感というのもイマイチ聞きたいことがよくわかりません。
CUIなんで、コマンド打って結果が帰ってくるだけです。
そこで自身への投資として、休みの日にでも勉強してみようかと思ったのですが、PowerShell関連の記事を色々読んでいると、ファイルレスマルウェアだの、「PowerShellは『凶器』」だの、.ps1ファイル実行にはセキュリティポリシー変更云々、と何だかネガティブな話題ばかりが目に付きます。
少なくともその資料がどういう根拠で書かれているのかわからないと、議論する余地がないです。
セキュリティ保護機構のないバッチファイルとの比較であれば、バッチの方が明らかに危険じゃないの?という一般論になります。
もともとWindowsのバッチファイルは、*nix系のシェルスクリプトと比べて非常に機能が制限されており、標準のコマンドラインツールも充実していないため、他のスクリプト処理系ならできる単純な事ができなかったり、やろうとしても非常に複雑になってしまう問題があります。
それを補うために登場したのがPowerShellなので、バッチファイルで十分事足りる用途であれば、無理して使うものではないかと思いますが。
あくまで目的を達成するために使う道具なんで、
ふと「令和にもなって、PowerShell使用経験ゼロってどうなの?」と、ちょっと不安になってきました。
そういう動機で使うもんじゃないのは確かだと思います。
投稿2019/08/16 21:21
編集2019/08/16 21:29総合スコア8947
0
.bat .cmd で事足りているなら、あえて手を出す必要は無いのでは?
PowerShell を学んで、仕事に使えそうなものがあれば
使っていくといいと思います。
ただ、PowerShell はいろんなことができ「すぎる」ので
なんかミスった時のリスクは高い(ことがある)と考えてください。
知らない人が使った場合のメリット/デメリットも
想定しておいた方がいいでしょうね。
個人的な印象ですが、IT関連の専門家でもないなら
あえて使う必要はないんじゃないかなあ。
投稿2019/08/16 22:50
総合スコア7464
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/17 09:36