【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
まあMSがこれだけ時間をかけて普及させようとがんばってきたのにちっとも普及しなかったからな
さらに.NET FrameworkベースのPowerShellで頑張ってればいいのに.NET Coreベースに移行するのは吉とでるか凶と出るか リボンUIとかメトロUIもそんな奴が作った感じするんだよね。今まで便利で不満なかったものが、
今からおれが考えたこれ使えと言いつつ自分は碌に使ってないから何が不便かすら理解していない。
結局移行してもらえず、無料にしたり、オープンソースにしたり。 >自分は碌に使ってないから何が不便かすら理解していない。
おまえがなーw
PowerShellのイケてないところはたしかにあるんだよ
でもお前はなにひとつ具体的にあげられないから議論にならない
典型的な批判してる俺かっこいいのプログラミング初心者だろうw >>362
リボン導入前のOfficeがどんなUIだったか知らないのか?
ttp://www.aoky.net/articles/david_pogue/images/toolbars.jpg 評判が悪ければすぐ撤回するのはゲイツの思想。
移行してもらえないのをユーザが馬鹿だからって基本ジョブスの思想なんだよね。
そもそもなんでそういう奴がWindows使ってるのか謎。Macでも使ってろよ。
まぁゲイツが引退してからのMSはまるでアップルだけどね。欠陥品のゴリ押しばかり。 結局具体的な使い辛さも言えずにぶつぶつ独り言を言うだけかよ... そういうことは移行を拒否した大勢の顧客に聞くべきだったのだ。ゲイツならそうした。
Vista、Office2007、Windows8、WPF、PowerShell、ワンボタンマウス・・・いくらでも例はある。 説明するまでもないこと
具体例云々繰り返す奴はLinux板で良く見かけるよ 結局、PowerShellって何がしたかったんだ?Unixシェルの駆逐? >>371
Unixシェルの駆逐(笑)が目的ならbash on Windowsなんか作らないだろ… 駆逐どころか、(Unixのログインシェルに移植版PowerShellを使えるか知らんが)PSのログインシェル人口が絶滅危惧種のcshに追いつけたら大成功だと思うよ。 なにいってんだ
bash on windowsもMacやLinuxでのPowershellも開発用
普段LinuxやMac使ってる人がWinでも開発しやすくするため、逆もしかり
なんで追いつけたら大成功なんてアホなこと言ってんの 単純にMSはコマンドプロンプトを完全にPowerShellに置き換えようとしたの? >>370
> 説明するまでもないこと
説明できない奴の常套句 w Cmdlet適当に組み合わせるだけでもいろんな事ができて便利なので使ってるけど、正直構文はちょっとキモいと思ってる
JScript/WSHの延長でTypeScriptっぽくしたほうが良かったんじゃ >>378
> 正直構文はちょっとキモいと思ってる
そうか?
まあ == の代わりに -eq とかはちょい見辛い気はする
あと関数内で単なる式を書くと戻り値になるとかも慣れないと気持ち悪いな
でもそれより配列の扱いが特殊な方が気になる なんだかんだと言いながら
PowerShell利用は急激に増えてるのは事実なんで
それでいいんじゃないの 結局、PowerShellがどういう意図で開発されたんだ?
なんでこの程度の基本的な質問すら誰も回答しないでスルーする? powershell覚えようかと思ったけど、bash使えるようになったからもういいや > なぜ新しいシェルが必要なのか?
> 理由その1:コマンド・プロンプトの進化が限界に来ているため
> 理由その2:コマンド・プロンプトのバッチ機能が不十分であるため
内容にガッカリ。Widnwosは開発環境、IDEが強力でコマンドプロンプトを使う場面が限られている。
しかも既にWSHがあってバッチ処理で困ることもない。WSHは言語は自由なのにvbscriptを持ち出して記述が冗長とかいうアホ指摘。
> Microsoftはシステム管理用に特化し、優れたスクリプト機能もあわせ持つ新しいシェルを開発する必要に迫られたわけである。
その解決手段がなぜか、「システム管理用に特化」のシェル。
この程度の理由じゃそりゃ移行してくれないはずだわ。誰も必要に迫られてないのだから。
こんな恥ずかしい技術記事持ってくんなよ。おまえはこの記事でPowerShellの必要性に納得したのかよ。 >>374
開発用シェルというものを初めて聞いた。
すまないが、それはどういう定義か教えて貰えないだろうか。 まあ爺はbashなりWSHなりを使っときゃいいんじゃね
もう新しい技術を取り入れる能力無さそうだし w 知ったかぶるなら、こういうのを見てからにしとけばよかったのに
使う気が無い人向けのPowerShell入門
http://karino2.livejournal.com/69885.html >>388
いいこと書いてるけど自動車乗れるようになったら自転車に乗らなくなるのと同じでPowerShellに慣れたらわざわざVBScriptなんて使わんわな 新しい技術、新しい技術連呼で具体例は一切なしか。まさに詐欺師ジョブスと同じ手法じゃん。
しつこく聞いてやって出てきたのがこれだからな。
http://www.atmarkit.co.jp/ait/spv/1003/11/news090_2.html
> 理由その1:コマンド・プロンプトの進化が限界に来ているため
> 理由その2:コマンド・プロンプトのバッチ機能が不十分であるため
さらに突っ込んだらこれが理由だとさ。
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner01.aspx
> その一方で例外もあります。たとえば、Microsoft Exchange Server 2007 の管理を自動化する場合は、PowerShell を使う必要があります。
つまりMSの製品にあれこれ制限かけて無理やり移行させようとしてるだけ。まさにAppleと同じ切り捨て手法ですな。MSオワタ >>391
> 新しい技術、新しい技術連呼で具体例は一切なしか。
ん?
ちょっと調べりゃすぐわかるだろうに...
・パイプにオブジェクトを渡せる
・スクリプトの癖に型を強制できる
・一部の処理でループを記述せずに配列を処理するできる (-eq 演算子とか switch 文とか) > パイプにオブジェクトを渡せる
すごいようでこれがあまりにもすごくないんだよな。残念大勝の一番の理由がこれ。 >>395
具体的って?
.NETにオブジェクトとして渡せるだけで十分だろ。 なにひとつ具体的にあげられないから議論にならないな
典型的な人を馬鹿にした俺かっこいいのプログラミング初心者だろう unixシェルは同じコマンドでも作者やバージョンによって出力フォーマットが違うことがあるのがゴミ
.netはecmaで標準化されてるからどの環境でも同じように使える PSは今やWindowsのシェルと言うよりも.NETのシェル
そしてMSには.NET以外のDOS由来だのActiveX/COMに割けるリソースは無い
そもそもcmdやWSHは別者過ぎて学習の指針となるべき一貫性が無い
そもそも.NETに興味ないならしょうがないけどね >>379
関数だと括弧をつけると配列を第一引数として渡したことになるところは毎回ハマる
メソッドの使用と混在すると特に
というかアレは関数じゃなくてcmdletだから、生成構文を区別して、関数は関数で別に作れたら良かったのに >>379
それは自分が何に成れているか次第ででょうね
私だと==を使う言語自体使っていなかったので
-eq以前に==自体に違和感感じるんだわ msはかつて大きなシェアをとった時代に独禁法で規制された
関係で他の環境への進出を長い間やれなかった(また控えていた)。
そのために他のプラットフォーム上では企業として進出しなかった。
今はそういう環境から解放されたので、他のプラットフォーム上に
積極的に出ることができるようになったという流れ。
今後は、どんどん出てくるよ。
うまく行くかどうかは別として。 >>402
括弧と言うかカンマ ',' の扱いが独特なのと一次元配列に対する親切機能(お節介機能とも言う)のお陰で今でも混乱してる俺
>>403
日頃どんな言語使ってるの? SAS なんて聞いたこともないからよく知らんけど統計処理用の言語みたいだから PowerShell みたいな言語と比較されてもそりゃ違うだろとしか言えんわな >>407
まあ特殊な管理用途以外でShell使う必要がないので
大規模なレガシーデータ処理だとまともに処理できるソフトが
余りないので、DB構築の前処理などに大変便利してる。
PowerShellも便利にしてるよ。 LISPみたいな印字書式を定義しなかったせいでオブジェクト毎に出力が無茶苦茶なのがな
適当なシリアライズ/デシリアライズなコンテナを探してこないと これ、
> ・パイプにオブジェクトを渡せる
蛇蝎のように嫌われているのだろうと思っていたが、意外にもこの界隈では評価されているんだね。
型を意識する必要のある点や、-output-string(だっけ?)が要ることもあったりする点が、他OS移植版普及のネックだろうと思う。 >>410
???
当然だけど文字列を渡すこともできるんだが... >>410
そうやってメリットデメリット出して考えてゆくのが
良いような気がするな。開発者自体が別プラットフォーム間での
移植性を考えているなら当然の問題として、それを考えていることに
なるので、じゃどういう考えを持っているか見て行くのも面白いと思う。 >>411
一つはそれはあるね
とはいえPowerShellの良さを生かそうとすると
別な手段も考え(てくる)気がする。
ま、.NETドライブするのが大きな目的だから、別プラットフォーム間で
.NET同士でオブジェクトで渡す方向があるでしょうね。 自分は事務職で、PowerShellを少しだけ使ってるんですけど、便利だなあと思う反面、
難しくてしんどいことも多いです。
最初にPowerShellを使ってみたのは、業務システムから出力されるCSVから、データの抽出をしたときです。
CSVのカラムが数百列あるうえに、下っ端の私が知らぬ間に仕様がたまに変わる。
(新規カラムがいくつか追加されている。しかもそれらが既存カラムの間に挿入されている)
そのCSVから複数条件で抽出するのに、以前はエクセルで毎回難儀してたのが、
2時間くらいかけて文法のさわりを勉強してPowerShellを使ってみたら超楽ちん!
それからはもう少し勉強して、Webからデータをとってきたり、毎度決まりきったファイルのリネームと移動、
みたいなことにも便利に使ってます。
しんどいのは、挙動の予測が難しい場合が多々あることです。
他の言語(VBA、C#)も少し勉強したことがあるのですが、初心者にわかりづらい挙動の多さという意味では
PowerShellが一番難しいです。
ちょっとしたことをするのにも大抵1つ2つ罠にはまって、毎回悩みながら解決する羽目になります。
そして文法はなんだか覚えづらい。
ここ何か月か新規スクリプトを作る機会がなかっただけでだいぶ忘れてしまいました。
OSに付属していることだし、職業プログラマーじゃない人も使うことを考えて、
できればもう少しシンプルで覚えやすい仕様にしてほしかった。 >しんどいのは、挙動の予測が難しい場合が多々あることです。
>ちょっとしたことをするのにも大抵1つ2つ罠にはまって、
>毎回悩みながら解決する羽目になります。
そういうのを、ここに質問する場にしたらどうでしょ。 >>416
ありがとうございます。
またハマってしまうことがあったら質問させていただきます。 >>415
> 2時間くらいかけて文法のさわりを勉強してPowerShellを使ってみたら超楽ちん!
2時間とか超優秀な部類じゃね?
> 初心者にわかりづらい挙動の多さという意味では
> PowerShellが一番難しいです。
まあこれはあるわな
便利さとのトレードオフもあるけど配列回りはちょっとやり過ぎな気もする
・-eq とかがフィルター演算子になる
・switch に配列渡すと自動的に全要素を処理する
等々... >>417
なんか利用されるのに適したcmdletあったら便利という気がするもので
いまC#で関数(dll)にして、ちまちまと自分ツールにしてます。
dllにすれば、そのまま.netクラスになるので、C#でもPowerShellでも
(使ってないけどvbでも)共用できるんで。
あと、海外のサイトにはいろいろ転がってるみたいなもので。 >>399
なるほど。最近勉強を始めて歴史を知らないからすげーと思ったわけか。
パクり屋のジョブスを革新、すげーと思う若者みたいなものだな。
UNIXではオブジェクト間通信の普及に失敗したけど、Windowsでは20年前に成功しているんですよ。
もう一度なぜオブジェクト思考が必要になったか歴史を勉強してくださいな。これは歴史の逆行ですよ。 >>420
> Windowsでは20年前に成功しているんですよ。
おそらくDDE辺りの話を知ったかしてるんだろうけど全く違う話だから w 「ファイルサイズ1MB以上のファイルをTEMPフォルダに移動する」
という処理をそのまま書き下せるのがシェルでオブジェクトを扱える利点
凄い事ではなくて、単にやりたいことをより自然に書けるようになるってだけ
下らないテキストの加工やマジックナンバーが減って読みやすくなる >>415
> そして文法はなんだか覚えづらい。
> ここ何か月か新規スクリプトを作る機会がなかっただけでだいぶ忘れてしまいました。
文法覚えづらいか?統一されてるからちょっと覚えるだけだと思うが。
補完も使ってないとかいうオチでは その程度なら unix の find コマンドでできる
逆に言うとオブジェクトを渡せなかったから find コマンドが色々なフィルター機能を持つ必要があったと言うことでもある >>421
20年前はIE4アップデートの話だよ。Windowsが一気にCOM化したんだよw
なんでDDEが出てくるんだよw これだからUNIX屋は今でも20年遅れてる。
ストリームにオブジェクト流すなんて昔から普通に行われているのに、
シェルでオブジェクト流せるパイプライン!! 最新の技術!!! 老害は便利さを理解できない!!! だもんなぁ。 >>425
20年前の話を後生大事を覚えてる老害乙 w
COMの話がどう関係するのか知らんけどストリームにオブジェクトを流せるとかはもう少し具体的に書いてもらえるかな ストリームにオブジェクト流すなんて昔から普通に行われている(笑)
そのわりにはあんたの大好きなWSHにはTextStreamはあるけどObjectStreamなんてものは見当たらないよね 同じような話をぼんやりした理解のまま混ぜてやってるから
誰が何を応援してるのかさっぱり分からん >>405
今でもっていうがもうずっと前から同じヤツが言ってるだろ
5人はいないと思う その人ジョブズがーゲイツがーとか意味不明な話ばっかで
突っ込まれることにびびって具体的なこと何も言えない人だから
構ってもしょうがないよ
XP最高秀丸最高とか言ってる老害と同類じゃないかな > COMの話がどう関係するのか知らんけどストリームにオブジェクトを流せるとかはもう少し具体的に
ここまでド素人丸出しの質問されてもね。
C++でもCOMでもMFCでもC#でも.netでもオブジェクト思考に関連する技術書なら書いてるでしょってレベル。
それが自称デシタルネイティブで老害連呼だからね。
安っぽいブログ風の記事ばかり読んでないでMSの公式解説書を全部読めよ。知識薄すぎなんだよ、小便垂れ。 ストリームてPSのコマンド群は単なるクラスライブラリなんだが… >>433
MSの基幹技術のCOMすら理解してなかったのになんでおまえはそんなに偉そうなの?
若さゆえの過ちというものを認めたくないのは分かるが背伸びし過ぎではないか。 シェルスクリプトでは、複雑なプログラミングは無理だから、PowerShell になる。
それよりもさらに複雑になると、Ruby になる
だから、Vagrant, Chef, Homebrew などの環境構築ツールは皆、Ruby で作られている 一つのコマンドが肥大化してカオスになったのがこれまでのシェルだから、それに慣れてしまってる人は良さが分かりにくいだろうね
コマンドに引数渡す時に頭につけるのは / なのか - なのか -- なのか、順番はあるのかないのか
そういうところを初めに統一しておいたのが地味にPSのいいところだと思う >>434
オブジェクトをパイプに流す話とCOMなんて関係ないだろ w
そんなのはどうでもいいからお前は
> ストリームにオブジェクト流すなんて昔から普通に行われている
の具体例書けよ >>436
> コマンドに引数渡す時に頭につけるのは / なのか - なのか -- なのか、順番はあるのかないのか
> そういうところを初めに統一しておいたのが地味にPSのいいところだと思う
それには同意、ヘルプも充実してるし
あと引数の型チェックとかヘルプをスクリプト内に書ける機能とか良くできてると思う コマンドレットのネーミングルールもあるのでそのあたりは楽だな。
考えてみれば旧来のshell言語は、覚えちゃったから使えるという
ところだもんな。 コマンドオプションはヘルプしっかりしてるし扱いもParamだけで楽チンでいいけど、演算子とメンバ関数が混在してくると何かもにょる
配列とか文字列の演算子多いし余計な変換するし http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43441&forum=7
> OLE1.0の時代は、DDE(Dynamic Data Exchange)をベースアーキテクチャとしていました。
> OLE2.0(現在)では、COM(Component Object Model)をベースアーキテクチャとしています。
> そのCOMは、プロセス間通信に RPC(Remote Procedure Call)を利用しています。
https://msdn.microsoft.com/ja-jp/library/ms538074(v=vs.85).aspx
> Text Services Framework を使用することにより、アプリケーションのテキスト ストリームにオブジェクトを埋め込むことができます。
https://docs.oracle.com/javase/jp/7/platform/serialization/spec/output.html#933
> クラス ObjectOutputStream は、オブジェクト直列化を実装します。
この直列化は20年ほど前からあるっぽい。
https://ja.wikipedia.org/wiki/Java#実行環境の構成
> シリアライズ(serialization、オブジェクト直列化):
オブジェクトの参照をたどって関連するオブジェクトをまとめてバイトストリームにすることができる。
そのストリームをファイルに書き込めば、オブジェクトの状態をそのまま保存(永続化)できる。
でっていう。 プロセス間でオブジェクトを受け渡すのは前からあったけど、シェルでサポートしてめっちゃ簡単に扱えるようになったのが利点じゃないの? PowerShellのコマンドってオブジェクトをパイプに流すときにいちいちシリアライズとかしてるのか?
つーか >>445
してないと言うかPSのコマンドはいちいちプロセス作ったりしない >>445
そんなことせずに、直接やり取りできるところが
いいところだもんね。 失礼、噛みマミった。
>>443 の下半分は、Java言語の話です。
MS以外は昔からあるというので検索してみました。
.net は Java をパクって作っているけど
MSがJavaを使えなくなったのは、
開発スピードがMSのが早くて仕様を勝手に作ってしまうので
かじ取りをSUNがするために裁判を起こして差し止めたからなので
Javaが最初の実装なら、MSもほぼ同時期に同様の実装をしていることになる。 そうやってせっかくJavaの仕様を統一したのに
GoogleがAndroidに組み込んだのはJavaもどき。
おかげでCPUのJava命令を使えず、ソフトウェアエミュレーションしてて無駄にCPU食って遅いとか。
.net が ARM の Java 命令で実行できるようになったらすごいけど・・・ android登場時からjazilleで動いてるi-appliなんかより断然早かったと思うけど >>451
>>443がプロセス間通信云々言ってるからじゃね?
PowereShellのコマンドレットをパイプでつなげるときは
powershell.exeのプロセスだけで完結しててプロセス間通信しないから
シリアライズの必要もない ipmo ちんこ
でちんこをパイプカットできるのは評価したい 使用頻度高いのに[pscustomobject]っていちいち全部手打ちしないといけないのがまどろっこしい
タブ補完か[pco]とかに省略できるかどっちかやってほしい 外部プログラムのウインドウサイズを変更するのは、.Net Frameworkの機能だけでは無理なんですかね。 >>457
その質問自体がちょっとおかしいので
もう少し具体的に話してみて。 Invoke-Sqlcmdコマンドを使って、データベースにINSERTやDELETEの結果を取得できる方法をどなたか教えて頂けませんでしょうか?
コマンドプロンプトでsqlcmdを使うと「(1 行処理されました)」等が表示されます。これを取得したいです。 ■ このスレッドは過去ログ倉庫に格納されています