- 1 名前:デフォルトの名無しさん [2013/09/12(木) 18:35:04.72 .net]
- スレなかったので立てました
- 62 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 17:48:22.43 .net]
- >>58
> Java とか ruby とか python はどこいったんだ。 使ってないし使う予定もないからだけど、そこらへんは普通にググったら出てくるだろ。 基本的に UWSC(スクリプト)との比較目的でやり始めたから キーボード、マウス操作できる AutoIt や AHK が入ってて 日本語でできる HSP が入ってる。 HSP は以前、使ってもないのにこき下ろしたことがあるけど実際どうだろうと思ってね。 VBScript や JavaScript はメジャースクリプト言語の代表として比較対象に選んだ。 UWSC があんまり遅いんでもっと遅いのはあるのかなってことで DOS コマンドでやってみてその後継の PowerShell もやってみたってわけ。 ttp://anago.2ch.net/test/read.cgi/software/1389240960/49+74 > 49 速い HSP3.31 = JavaScript (chrom) > VBScript >> AutoIt3 > AHK >> UWSC 遅い > 74 速い Lua(数値) > HSP3.31 = JavaScript (chrom) > Lua(文字) > VBScript >> AutoIt3 > AHK >> UWSC >>>> DOSコマンド 遅い それにPowerShellを加えたのが >>53 ちょっと変更があったのは時刻の取得が不公平な部分があったのを修正したから。
- 63 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 18:43:15.03 .net]
- >>58
ttp://www.infoq.com/jp/news/2009/04/top-scripting-languages-php-ruby >PHP >> Perl >> Python > Flex > Actionscript > Ruby > Javascript > Powershell > F# >> VBScript これを見ると、PowerShell は F#.net より高速だし、 VBScript よりはるかに高速と言うことになっているけど、どうなんだろうね。 PowerShell の時刻取得はコマンドレットだから呼び出しに時間がかかって当然なんだけど、 コマンドレットを使わなければC#に頼らなくても >>53 の中では最速ってことなんだろうか。 確かに別プロセスを立ち上げて時刻取得したら遅いだろうけど、 DOSでの時刻取得は環境変数を使ってあの速度だったから、シェルスクリプトは遅いんだろうと思って気にしてなかった。 円周率何万桁とかの時間を計測した方が正確なんだろうけど 時刻が秒単位でしか取れない処理系だと端数が出るんで不公平かなと。 あと、めんどくさいし。 よく知らない言語を調べながらやるのはめんどくさいし、スクリプトは最適化されないから自分で最適コーディングしないといけないし。 ループで使ってる時刻取得方法(速度順) C# on PS sec = DateTime.Now.Second; Lua(数値) sec = math.floor(os.clock ()) HSP3 val = gettime(6) Lua(文字) sec = os.date("%S") JavaScript sec = new Date().getSeconds(); VBScript val = Now AutoIt3 $SEC = @SEC AutoHotKey sec = %A_Sec% UWSC t = GetTime() PowerShell [int]$sec = (get-date).Second DOS sec = %time:~6,2%
- 64 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 19:06:04.20 .net]
- どうせやるなら100万回ループするのに何msec掛かるかを図った方が変なロスはないと思うよ
折角Measure-Commandで時間測れるんだし
- 65 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 22:09:50.36 .net]
- Measure-Command で 100万回のループやってみた。
C#の関数内のループで 53ミリ秒だった。 PowerShell だと・・・ $cnt++ 単純ループ 11秒 inc($cnt) 関数呼び出し 289秒 >>53 では 1,000倍の差があったけど、単純ループだと 200倍になってるんで コマンドレット呼び出しが 5倍不利に働いてると言える。 UWSC の 100万回単純ループが 12秒だったんで UWSC 程度の速度はあるということになるけど いろいろな機能をコマンドレットに頼るわけだから 実用機能で考えれば >>53 を基準にしていいんじゃないかな。 VBScriptはだいたい0.7秒 明らかにPowerShellは遅いんだけど このグラフはもしかして C# とか呼び出してるんだろうか。 ttp://www.infoq.com/resource/news/2009/04/top-scripting-languages-php-ruby/ja/resources/scripting_language_performance.png
- 66 名前:デフォルトの名無しさん [2014/01/27(月) 18:58:09.07 .net]
- 何が言いたいのかよくわからんなあ
それでpowershellはダメだと言いたいわけ?
- 67 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 19:42:07.25 .net]
- 普通にプログラミング言語っぽいしプログラム板にスレ立ってるけど
速度は遅いから重い処理を記述するのには向かないということを 自殺ベンチ もとい、自死ベンチ あれ? 自作ベンチ結果を披露しているわけだが それでは不満か。 そう言えばバッチファイルのスレもこの板だったか。 記号だらけでWebだと検索しにくいんでお世話になってる。 自分で遅いというのは確認したけど C#のコードで高速化もできるし自分の用途の範囲で問題ないと思っているんで 今ちょっと PowerShell を勉強中だから 全然ダメじゃない帝人。 長々と書いたのを「そんなこと言ってない」の一言に置換しようかと思ったけど気にせず投稿
- 68 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 20:57:22.58 .net]
- いや、はじめからそういう環境だってわかってみんな使ってるとおもうんだが・・・
- 69 名前:デフォルトの名無しさん mailto:sage [2014/01/30(木) 17:20:55.49 .net]
- シェルでループの速度を測る意味が分からない
- 70 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 12:59:46.48 .net]
- サーバや、他人のPCでちょいと作業をするときにこそ役立つ。
自分の開発PCだったら、他にもっといいツールがあるし。 そんなわけで、早く Ver3以上 が標準の世の中になってほしい。
- 71 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 17:43:09.23 .net]
- 俺は別にV2(=Win7標準環境)でもいいと思ってる
V1でもそこまで困らんけど、プリインスト機がまずないし
- 72 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 19:36:05.65 .net]
- ちゅうか、なんだかんだでPowerShellって言語の更新サイクル早いね
Windows依存の功罪というかなんというか
- 73 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 00:00:47.83 .net]
- GUIアプリが作れるようになるといいんだけど
- 74 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 00:25:42.02 .net]
- 現状でも別に作れないことはないっしょ。Windows Form 使えるんだし。
- 75 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 13:34:41.80 .net]
- WPFでもかけるというかむしろそっちのが相性いいからちょっとした社内ツールなら楽に作れる
- 76 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 13:56:46.58 .net]
- もっとも普通は VS Express あたり落としてきて
GUI エディタでぽんぽんぽーんって作ったほうが早い気もするが
- 77 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 07:36:08.61 .net]
- ぽぽぽぽーん♪
を思い出した。
- 78 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 17:47:23.21 .net]
- gci "C:\hoge.txt" | select-string "abc"
でテキストファイルの内容検索すると結果が「ファイル名:行番号:内容」という形式で表示されますが 行番号と内容だけ表示することって出来ないのでしょうか?
- 79 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:21:13.40 .net]
- オブジェクトをパイプでつなげてselect linenumberみたいに欲しいプロパティを指定する
オブジェクトにどんなプロパティがあるかはget-propertyで調べられるよ
- 80 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:23:17.58 .net]
- ごめんget-memberだった
- 81 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 20:32:40.64 .net]
- >>76
PowerShell Studio使えばPowerShellでWinformのポトペタはできるよ 他Admin Script Editorにもあったと思うけど、使ったことないから知らん >>78 デフォルトでMatchInfo型をそういう表示にしたいなら、 ↓こんな感じの*.format.ps1xmlを作成して Update-FormatData -PrependPath .\hoge.format.ps1xml とか。 <?xml version="1.0" encoding="utf-8" ?> <Configuration> <ViewDefinitions> <View> <Name>MatchInfo</Name> <ViewSelectedBy> <TypeName>Microsoft.PowerShell.Commands.MatchInfo</TypeName> </ViewSelectedBy> <CustomControl> <CustomEntries> <CustomEntry> <CustomItem> <ExpressionBinding> <ScriptBlock>"{0}:{1}" -f $_.FileName, $_.Line</ScriptBlock> </ExpressionBinding> </CustomItem> </CustomEntry> </CustomEntries> </CustomControl> </View> </ViewDefinitions> </Configuration>
- 82 名前:78 mailto:sage [2014/02/08(土) 23:48:58.04 .net]
- >>79
gci "C:\hoge.txt" | select-string "abc" | select linenumber,line でいけました。ありがとう! >>81 PSビギナーの自分にはハードル高すぎました。すみません…
- 83 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 10:36:45.41 .net]
- >>81
ttp://store.sapien.com/p-207-powershell-studio-2012.aspx PowerShell Studio 2012 Price: $349.00 高すぎ ttp://www.itninja.com/community/admin-script-editor Admin Script Editor (ASE) 無料の最終バージョン 3089 downloads .net 2.0 が必要だた・・・ あ、3.5を入れればいいのか。 「Windowsの機能の有効化または無効化」でチェック入れるだけでダウンロード出来るんだなあ。 ・・・反応遅い。 ・・・でけた!! 追加アプリがいらないのはネイティブだけかな? ・Native Windows Form ・PowerShell KiXforms(.NET) ・PowerShell KiXforms(COM)
- 84 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 14:19:38.26 .net]
- >>82
コピぺして拡張子をformat.ps1xmlで保存してコマンド実行すればいいはずだが・・・ あ、$_.FileNameは$_.LineNumberの間違い まあここまでやる必要もないとは思うけど >>83 あらほんと。 昔は別の名前で無料で公開されてたんだけどな、って検索したらこっちっぽい 会員登録は必要らしいけど無料だそうな PrimalFormsCE ttp://www.sapien.com/software/communitytools#PrimalFormsCE
- 85 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 16:33:16.97 .net]
- PowerShellの Out-File と Set-Content あるいは Out-File -Append と Add-Content の違い
ttp://tech.guitarrapc.com/entry/2014/02/11/061627 PowerShellはやっぱり糞でしたww
- 86 名前:デフォルトの名無しさん [2014/02/21(金) 23:25:51.56 .net]
- >>83
俺の場合は、VS Expressで画面作って そのXAMLファイルを[string]get-contentで読み込む関数つくってる (頭のclass文だけは削除するようにしてる)。 だから、ぺたぺた貼って、PowerShellでメニュー画面作り。 その仕組みは20分くらいで作っちゃったよ。
- 87 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 00:01:57.77 .net]
- 普通に VS Express で完結しちゃったほうが早くね?
- 88 名前:デフォルトの名無しさん [2014/02/22(土) 11:35:52.82 .net]
- >>87
いちいちコピペするの面倒じゃん。 VS ExoressでPowerShell作成環境ないから完結しないし。
- 89 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 11:40:54.69 .net]
- いや powershell 使わんで C# あたりで完結しちゃったほうが早くないかねと。
- 90 名前:デフォルトの名無しさん [2014/02/22(土) 11:43:51.49 .net]
- そりゃものにより。
- 91 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 12:11:48.57 .net]
- Roslyn完成したらISEにC#環境とGUIデザイナ組込みーみたいなのはそのうち出るだろう
- 92 名前:デフォルトの名無しさん [2014/02/22(土) 12:31:05.56 .net]
- Roslynでてくると
その次は、それを利用したもっと新たなステップの スクリプトが出てきそう。 ヘルスバーグはいつも楽しませてくれる。 とはいえ、まだ先の先だけど
- 93 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 18:34:10.77 .net]
- ここ↓に載ってるLINQでの問い合わせのコードってPowerShellでもそのまま使えるの?
www.atmarkit.co.jp/ait/articles/0803/25/news150_2.html テーブルから取ってきた値を1個表示とか簡単なのでいいんで書き方教えて欲しいです…
- 94 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 18:52:54.65 .net]
- そもそも拡張メソッドに対応してないんだから、クエリ式なんて使えるわけないじゃないですかー
Roslynが完成すれば、Invoke-C#みたいなの作って、 部分的にC#コードでLINQクエリ実行する、みたいなことはできるかもね
- 95 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 20:55:45.48 .net]
- 会社で他の人が書いたPowerShellのソースを見てて
「If($? -eq $false)」っていう記述があったんだけど、この「$?」って何なのでしょうか?
- 96 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 20:57:48.38 .net]
- >>95
help automatic_variables > $? > 最後の演算の実行状態を格納します。最後の演算が成功した場合は TRUE、失敗した場合は > FALSE を格納します。 UNIX のシェル由来だね。と言いたい所なんだけど $$ とか全然違うしなあ。
- 97 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 02:21:37.54 .net]
- unixとかawkとか、既存のツールから由来してる機能は多いよ
beginやendのブロックとか
- 98 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 17:48:58.25 .net]
- PowerBoots: PowerShell で WPF が使えるツールキット
blogs.technet.com/b/stanabe/archive/2009/05/01/powerboots-wpf-powershell.aspx Windows PowerShell で WPF アプリケーションを構築する秘訣 msdn.microsoft.com/ja-jp/magazine/hh288074.aspx
- 99 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 12:12:09.21 .net]
- パイプライン指向だか何だか知らんが、
functionにおけるreturnの扱いにくさだけは何とかしてくれんかな。 外部コマンド(Cmdletではない)実行する度に、それらの出力をnullやら他に逃さないと、 returnが汚れるのが激しくめんどくさい。
- 100 名前:デフォルトの名無しさん [2014/03/01(土) 13:20:31.29 .net]
- >>99
ん? 具体的なところがよくわからないんだけど どんな感じのことを言っている?
- 101 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 13:48:34.89 .net]
- function Out () {
"hoge" return $true }
- 102 名前:デフォルトの名無しさん [2014/03/01(土) 13:53:41.97 .net]
- その例の場合だと、書き方としては
function Out () { "hoge" } となるんだけど。
- 103 名前:デフォルトの名無しさん [2014/03/01(土) 13:58:52.35 .net]
- 関数内で変数を使って
かえしたれば function Out () { $a="hoge" $a } または function Out () { $a="hoge" return $a } returnのところは return($a) でもいい
- 104 名前:デフォルトの名無しさん [2014/03/01(土) 14:17:36.86 .net]
- >>101
要はこの例でいえば 自分で2つ返す(hogeとtrue)コーディングをしているので 余分と思われるものがでてる。
- 105 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:23:50.15 .net]
- 例えば SetSomething みたいな値をどっかに設定するのとか
DisplaySomething みたいな値をどっかに表示するのみたいなので成功したか失敗したかを返すような、 どっちかというと所謂副作用部分がメインの関数があったとして、 それをそのまま呼び出すと戻り値要らないのに一連の戻り値に入っちゃうのがうっとおしいって話じゃね。 C なんかでいうところだと printf の戻り値なんか普通ほったらかすのにいちいち (void) でキャストしたり 適当な変数に代入して読み捨てしないと戻り値に入っちゃうみたいな感じね。 まあそういう言語なんだって言われたらそれまでの話なんだけど。
- 106 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:24:11.73 .net]
- 自分ではっきり出力してればいいけど
普段何も返さないコマンドがエラーメッセージとか返して来たら困るね。
- 107 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:26:04.46 .net]
- >>102-104
ごめん。 そもそもの言い方が悪かったけど、 functionを、他言語の”関数”と同じように、呼び出し側からはreturnだけを受け取りたいってこと。 関数内で変数を使って かえしたれば function Out () { $a="hoge" $a } でやっていることは、$aに代入することによって、パイプラインに流れるのを阻止した状態。 これを、外部コマンドに対して行う場合は、 $a = $(外部コマンド) [void]$(外部コマンド) 外部コマンド | Out-Null などなど。 >>106 その通りでございます。
- 108 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:27:35.99 .net]
- 明示してないものまで戻り値に含まれるってのは他の言語と比較すると特異ではあるわな
- 109 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 14:37:28.46 .net]
- c#のoutがあればね。
refはあるんだが。
- 110 名前:デフォルトの名無しさん [2014/03/01(土) 14:43:03.21 .net]
- >>108
あ、俺のレベルでその意味わかんない
- 111 名前:デフォルトの名無しさん [2014/03/01(土) 14:50:34.97 .net]
- >>108
return文に指定していないものまでという意味ですか。
- 112 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:32:48.27 .net]
- >>111
そういうこと 明示しない場合は最後の式の値が戻り値になる、なんてのは結構あるけど 頭から最後までの式の結果を連結して返されるってのは「関数の戻り値」って考えると見たこと無い。 戻り値じゃなく出力って考えるとパイプラインのことと相成ってスッキリするんだけどね。
- 113 名前:デフォルトの名無しさん [2014/03/01(土) 16:40:40.92 .net]
- >>112
なるほど。 出力ということですね。 returnは、関数内でステートメント終了!の意味なんだろうな。 ってことは、常にreturn値だけをとりたいときは、安心のために。 $a=Out $a.[$a.Count-1] てな感じになるのかな。
- 114 名前:デフォルトの名無しさん [2014/03/01(土) 17:42:47.70 .net]
- おっと
$a=out $a[-1] でよかった。
- 115 名前:デフォルトの名無しさん [2014/03/01(土) 18:46:25.77 .net]
- それぞれ、悩む点が異なるので
いろいろ勉強になるな〜
- 116 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 23:04:20.14 .net]
- >>101
例に突っ込んでもしょうがないかもしれんが 文字列を直接埋め込んで何もしないって状況がありえなくね echo hoge ならともかく $a = New-Object Collections.ArrayList $a.Add(100) return $a とかなら分かるけど
- 117 名前:デフォルトの名無しさん [2014/03/02(日) 17:14:32.59 .net]
- >>116
おれもよくわからないんだけど。 無いんじゃないかな。 あるいは途中でのチェックのために入れたいとか。 だとすると、他の書き方をするべきなんだけど。 ともかく 他の言語だったらエラーで、そういう記述ができないんじゃないかな。 他の言語の関数だと、明示的に出力指定すると戻り値としてでなく、 コンソール出力等に返され、戻り値には入らない。 それを言っているんだと思う。 PowerShellで他言語と同じように使用したいなら、 他言語と同じような使用方法を守れば問題ないんだと思う。 たとえば、ファイル一覧をほしくて関数としてdirを使うなら。 function Out{ $dir = dir Write-Host $dir return $ture } $kekka=Out とすれば戻り値の結果$kekkaには余分なものは入らない。 要は、PowerShellは融通が利いちゃうんで戸惑ってる ってころじゃないのかな? 他の言語でできないことができちゃうってことでしょ。
- 118 名前:デフォルトの名無しさん [2014/03/02(日) 17:16:35.00 .net]
- 捕捉だけど
>無いんじゃないかな PowerShellの場合だと、それをわざと利用することはあるが、 他言語ではそういう使い方できないだろうという意味。
- 119 名前:デフォルトの名無しさん [2014/03/02(日) 17:22:32.45 .net]
- 質問からの例でいえば( >>101 の例でいえば )
本来は function Out () { Write-Host"hoge" return $true
- 120 名前:
} と記述する必要があるということでしょ。 外部関数を中で使うなら function Out () { $a=外部関数() Write-Host $a return $true } ってな感じですね。 実際、私はそういう記述してる。 [] - [ここ壊れてます]
- 121 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:19:22.75 .net]
- なんか画面出力の話にすり替わってるけど戻り値の話でしょ? >>99 が元ネタなんだから。
上でも上げたけど、C言語でいうところの printf みたいな 副作用がメインで戻り値はおまけで大抵は捨てるような関数を powershell で同じ感覚で使おうとすると 戻り値に混ざってきてなんじゃこらってなるって話じゃないのか? いちいち [void] でキャストして捨てますよーって明示しなくちゃいけなくてめんどくさいと。 int main() { printf("hello\n"); return 0; } の戻り値が { 6, 0 } になるようなもんだ。 >>101 の例でいくと、他の言語では、例えば C でも C# でもなんでもいいけど "hoge" は定数を置いただけだからなんも起きないし戻り値にも含まれない。コンパイルする時の最適化で消されるだけ。 でも powershell の場合は function の中で書いた式の戻り値全部を連結して返す仕様になってるから ("hoge", $true ) が戻り値になる。他の言語経由してる人なら return $true って書いてあったら $true しか返ってこないって普通考えちゃうよ。
- 122 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:20:11.13 .net]
- >>119
だから、その書き方とかキャストや、あるいは戻り値を参照渡しする、とかがめんどくさいんでしょ。
- 123 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:21:03.27 .net]
- うわ、かぶったw
- 124 名前:デフォルトの名無しさん [2014/03/02(日) 19:42:56.62 .net]
- >>120
そっか勉強不足だった。 Cは使わないけど。ってことは、コーディング上では、 int main() { "hoge";printf("hello\n"); return 0; } と書いても、コンパイラーでhogeは無視してくれるのか。しらんかった。 エラーかと思ってた。 出したいときは別途記述が面倒かもしれないけど。 画面といったのは"hoge"も別途必要としたから記述したのだと理解した 関係。
- 125 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 19:57:35.48 .net]
- powershell でいうところの (関数)[-1] って呼び出しが他の言語の一般的な関数呼び出し、って言えば何の話なのかわかってもらえるんじゃね。
- 126 名前:デフォルトの名無しさん [2014/03/02(日) 20:01:18.83 .net]
- まあ、そういう仕様としかいえないよな。
俺の場合だと、XAMLを関数内で組み立てるときにPoowerShellの関数 使用は重宝してる。 普通の言語だと、逆にくっつける操作が必要になるので煩雑になっちゃう。 return文自体使わないけど。 使う場面次第だな。
- 127 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:08:16.13 .net]
- パイプラインで出力をつないでいく設計思想だからねえ。
- 128 名前:デフォルトの名無しさん [2014/03/02(日) 20:16:15.40 .net]
- 関数自体から返るものすべてがオブジェクトだと
認識しないといけないね。
- 129 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:20:34.62 .net]
- 成否を返す関数との相性は悪いよな
あと複数結果返す関数でいえば結果が一個の時と複数の時でタイプが変わるのが気持ち悪かったわ $x = ls とかやったときにファイルが複数あると $x.GetType() => Array だけど 一個しか無いと $x.GetType() => DirectoryInfo ときたもんだ @()で呼び出しゃいいんだけど
- 130 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:21:58.90 .net]
- あくまでシェルであって言語としてはかなり歪だと思う
- 131 名前:デフォルトの名無しさん [2014/03/02(日) 20:29:09.68 .net]
- >>129
そりゃ旧来のシェルのほとんどは単なる文字列操作にすぎないからね。
- 132 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 20:32:39.91 .net]
- いや、言語としてはいいと思う。
が、シェルだと考えると、 .NETやコマンドレットだけじゃなく、外のコマンド・プログラムをたくさん使うことになるわけなので、 それらの戻りを全部把握して処理しないといけないのは、結構大変なことだと思う。 嵌って、「パイプラインすげー」と思う人、「なんだこれ、使えねーw」と思う人それぞれ。
- 133 名前:デフォルトの名無しさん [2014/03/02(日) 20:33:12.58 .net]
- >>128
初めは俺も思った。 なれたらこの方が便利だけど。 returnの役割は、スコープ終了と、リターンコードを返すための利用。てな感じ なんだろな。 結果とリターンコード両方が取れるのは、俺にとっては便利。
- 134 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 22:50:50.92 .net]
- >>120
いや俺が>>116で言ったのは、文字列だけ書いたらそれが画面に表示されるってのはPowerShellくらいだから(ないことはないだろうけど) 他の言語の感覚で文字列だけ書いてたら出力に混じって嫌だって例文は違和感があるって話 printfの感覚で echo hoge って書いたら出力に混じるから困惑したってことなら分かるけどって意味 だから出力が混じって困る例なら、たとえばC#で戻り値があることを意識してないメソッドを呼ぶような例がいいんじゃないか、ってんで>>116で書いた 確かに最終版はともかくデバッグ中は文字列埋め込むこともあるかもしれないけどね
- 135 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 23:05:47.11 .net]
- なんか出力と戻り値を取り違えてる奴がいるからややこしくなったんだろな。
あと例もよくなかった。 単に戻り値を返す適当な処理を書いとけば出力がどうのって話にならなかったんだと思う。
- 136 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 23:31:47.97 .net]
- 本買って読めとまでは言わんけど、man about_Returnにすら書いてあることくらいは読もうぜってことで
- 137 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 22:10:36.75 .net]
- 【メモ】
write-output write-hostの違い。 ググって出てくるのは、色が付けられるとか、空行がどうのとか、そういうことばかり。 write-output "foo" echo "foo" "foo" は全部同じで、パイプラインに出力。 write-host "bar" | gm (エラー) つまり、write-hostは、コンソールへの直接出力(パイプライン経由ではない)。
- 138 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 22:55:59.13 .net]
- コンソールっていうかホストプログラム全般な
画面へ出力することを前提としているから色を指定できる あとSnover泣いちゃうからまずヘルプ読んであげて
- 139 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 18:15:30.08 .net]
- win8.1でヘルプが入ってなかったから、update-helpしたわけだが、英語版しか入らなかった('A`)
- 140 名前:デフォルトの名無しさん [2014/03/06(木) 23:40:23.45 .net]
- 英語を勉強するチャンス!
- 141 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 23:44:05.55 .net]
- >>138
これは実績もあるイルカに期待するしかないかw
- 142 名前:デフォルトの名無しさん mailto:sage [2014/03/07(金) 19:07:10.78 .net]
- >>138
「Windows PowerShell 実践システム管理ガイド」 2009初版、という本によると、 C:\Windows\System32\WindowsPowerShell\v1.0 に、 ja-JP というフォルダを作って、そこに en-US フォルダにあるすべてのファイルをコピーする と書いてある 漏れはWin8だけど、ja-JP フォルダの中には、 すでに数個のファイルが存在している どうすべきかな?誰か試しにやってみて ja-JP フォルダの中の default.helpには、 オンラインヘルプのアドレスが書いてある
- 143 名前:デフォルトの名無しさん mailto:sage [2014/03/08(土) 10:57:34.76 .net]
- 7だと最初から入ってたよね。
だから、2008R2でも特になにもしなくてもリファレンスは使えてた。 2012R2だと、どうなんだろ。 サーバの場合、インターネットに直接繋げないケースも多いわけで。 WSUSではたぶん面倒見てくれないから、SCCMとか使うのかね。
- 144 名前:141 [2014/03/08(土) 15:49:20.02 .net]
- 漏れはWin8だけど、
C:\Windows\System32\WindowsPowerShell\v1.0 中の、 en-US フォルダの中には、powershell.exe.mui というファイルが一つあるだけ これを、ja-JP フォルダにコピーすれば良いのか? ただし、ja-JPにもすでに、同名のファイルがある 同名のファイルだが、ファイルのサイズは違う 前者は11KBで、後者は9KB このファイルは何だろう? ヘルプファイルをダウンロードするプログラムか何か?
- 145 名前:141 mailto:sage [2014/03/08(土) 16:26:47.96 .net]
- powershell と同じフォルダにある、
デバッグ用のpowershell_ise の方が使いやすい 右のコマンド一覧から、 コマンド + オプションを選んで実行できる
- 146 名前:デフォルトの名無しさん mailto:sage [2014/03/08(土) 16:30:57.24 .net]
- 最近のISEはコマンド一覧とかついてるんか
- 147 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 20:18:38.26 ID:LfplOf8O.net]
- 真面目な話、
・Windows Server のユーザーである ・管理系のスクリプトを作りたい ・先の見えてる .bat や .vbs よりかは将来性がある しかし、これらを全て満たす状況じゃないと「憶えても無駄」な嫌な匂いがプンプンしてくる、という感想を抱く。 PowerShell 推しな記事がこぞって 4〜5年前だったりするし。記事が古いから役に立たないし。 でもこれからの Windows Server 管理(特に MS 製サーバーアプリ)には必須、みたいな匂いもプンプンしてくる。 管理者系の人間が嫌々使ってる、というイメージなんだけど、実際はどうなの?
- 148 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 22:08:56.67 ID:Fzs/8hFo.net]
- そんなところじゃないの?
開発案件だったらわざわざこれを選ぶ人はいないだろうし
- 149 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 22:54:04.60 ID:3UAaFn0/.net]
- batは低機能過ぎるし、vbsは糞言語のうえシェルじゃないし。
- 150 名前:146 mailto:sage [2014/03/27(木) 18:33:56.87 ID:w9DVguFT.net]
- >>147
だよねぇ… 泣きながら学ぶことにするよ… >>148 ええと、シェルとしての PowerShell については何も言ってないのだが…。 VBScript は言語としてはそんなに悪い言語じゃないと思ってる。 ちょっと凝ったことをやろうとすると COMオブジェクトに頼るしかなくて、おもくそ環境依存、意地になって自前実装するとウルトラ遅くなる駄目な子、というとこなら同意。 シグナルのハンドリングというところまで極めてはいないのでそこは了承願いたい。 エラーを raise できるのは知ってるが、はて SIGKIL とか SIGHUP とかを外部から受け取った時はどうだったっけ、な感じなんで。
- 151 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 22:54:36.60 ID:5oUWcvgH.net]
- ム板で言ってもしょうがないが、そもそも開発案件で候補に挙がるような言語じゃないだろう
シェルスクリプト/ツールとして使う分には普通に便利に使ってるけど
- 152 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 07:01:13.94 ID:4uJ25Yxc.net]
- これがそうでもない。
プロト的につかったり メニュー画面がらみ案件に使ったり 相当使える。
- 153 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 07:30:21.97 ID:Ym7n0+3V.net]
- そんなのVSでポトペタの方が早いじゃないですかやだー
- 154 名前:デフォルトの名無しさん [2014/03/30(日) 12:03:12.26 ID:1u4x9v7e.net]
- >>152
画面はVSでポトペタをそのまま使える PowerShellでホストする。 めちゃくちゃ簡単になる。
- 155 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 13:20:00.33 ID:RDnNVplQ.net]
- >>152
それ、VSの立場が理解できてないんだとおもうぞ
- 156 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 13:40:34.98 ID:o9ag65ui.net]
- 納品用のPCに泣きながらVSをインストールする>>152を目撃したという未確認情報が入りました
- 157 名前:デフォルトの名無しさん [2014/03/30(日) 15:51:48.19 ID:RDnNVplQ.net]
- >>152
たとえばWPFなら、VSで作る画面(XAML)をC#で使えるよね これはC#用に作っているわけじゃなく、XAMLとして作られている。 独立したものなんです。これがコードビハインドという考え方。 だから同じものをVBでも使えるよね。 同じようにPowerShellでも使えるんです。 イメージわかってくれたかな? 知っているかもしれないけど、ついでなんで、 バインドという考え有るよね。 これを組み合わせるとJavaなどと比べて何倍も高い開発効率を 生めるのが、現在の.NETの世界となってきている。 なんで、Javaやめて戻ってきた次第。
- 158 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 00:31:05.84 ID:3P7ATE0k.net]
- >>153
すいませんが、アホの俺にもわかるように教えて下さい。 Powershellでホストするって?
- 159 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 00:37:28.56 ID:3P7ATE0k.net]
- d.hatena.ne.jp/ladybug/20111204/p1
こういうことですか?
- 160 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 00:51:18.63 ID:HPrdAsyG.net]
- xamlでUI作ったらPowerShellから読み込んでShowDialog()で呼び出すってだけじゃ?
- 161 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 06:31:38.92 ID:nFhjZp0H.net]
- $arr=ls
$arr.Name $arr.fullname Nameでファイル名、fullnameでフルパスを取り出すのは便利 ただし、入力補完ではこれらの候補が出ない
- 162 名前:デフォルトの名無しさん [2014/03/31(月) 09:16:41.02 ID:ObzhI129.net]
- >>160
そもそも ls.Nameってあったけ?
|

|