13/09/12 18:35:04.72
スレなかったので立てました
2:デフォルトの名無しさん
13/09/12 19:09:30.27
2GET
3:デフォルトの名無しさん
13/09/12 21:50:46.13
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
4:デフォルトの名無しさん
13/09/13 03:15:57.60
Part 1ではないようなきがする
5:デフォルトの名無しさん
13/09/13 03:17:22.71
Windows@2ch掲示板
URLリンク(toro.2ch.net)
6:デフォルトの名無しさん
13/09/13 03:18:32.31
Windows PowerShell Part4
スレリンク(win板)l50
7:デフォルトの名無しさん
13/09/13 03:40:10.18
Windows PowerShell 【Microsoft】
スレリンク(tech板)
URLリンク(desktop2ch.tv)
8:デフォルトの名無しさん
13/09/13 06:50:15.28
1 デフォルトの名無しさん[] 投稿日:2012/03/22 02:42:21
柔軟で強力な機能と体系的な操作体系を両立した次世代シェルPowerShellのスレ
特徴
windowsに標準搭載
オブジェクト指向スクリプト言語を簡潔で少ない命令向けに改良したような文法
自然言語に近い文法
MSDOSやUnix系シェルの命令の代表的なものが使えて移行しやすい
windowsの挙動を簡単なコマンドで制御できる
開発元
URLリンク(blogs.msdn.com)
9:デフォルトの名無しさん
13/09/13 06:51:13.32
8 デフォルトの名無しさん[sage] 投稿日:2012/03/23 01:10:52
Win7からPowerShell ISEが標準で搭載されるようになったけど流行らんな。
対話型で直接実行できて、PSのバッチファイル書くのにも使えて、ブレークポイント使ったデバッグもできる優れものなんだがなぁ
IT部門の管理者向けって感じだから仕方ないと言うのはあるけども
VSに入れると捗るぞ
・PowerGUI VSX
URLリンク(visualstudiogallery.msdn.microsoft.com)
・PowerConsole
URLリンク(visualstudiogallery.msdn.microsoft.com)
10:デフォルトの名無しさん
13/09/13 19:49:37.92
自作GUIシェル作る時に便利だね
11:デフォルトの名無しさん
13/09/14 23:08:22.98
ただとにかく実行が遅い
12:デフォルトの名無しさん
13/09/15 01:59:06.40
モジュールが強力だよな
特定目的に合わせて拡張できる
13:デフォルトの名無しさん
13/09/15 13:12:39.19
荒れたスレにナゲット再び
〃. ̄. ̄.ヽ
|: : : |
| : : :|
ヽ._._./
URLリンク(monobook.org)
14:デフォルトの名無しさん
13/09/16 21:34:37.45
なんか汎用性が無いと使う気になれない。
汎用性とはMacとLinuxでも動くということなんだけと。
15:デフォルトの名無しさん
13/09/16 22:59:43.46
じゃあ使うなってこと
なんだかんだでMS漬けな顧客にとっては便利だしな
SUAで万全とは言わんなりに互換持ててるからな
まあcui自体時代遅れ。スマホ世代はコマンドプロンプトの存在知らんからな。
まあ有用なんはもう勝手に移植されるからな。勘違いクズアプリ屋もvse持っててクズアプリ量産してるようだけど、クズはクズ。
Macとか言ってたが、非互換性Winどころじゃないだろに話題に挙げられて逆に可哀想だな。SUSもやめたり初めたり、ポリシーゼロだぜ。ちったあ怒れよ消費者!
宗教じみたマカーじゃないと言われた予防線も貼っとくか。
マニア向けPCに過ぎない携帯屋持ち出す暇で、Linuxの最強シェルとかでっち上げてこね回していればいいじゃないの?
なにパワーシェル最強じゃないの?じゃあ何がいいの?まさかbas…ぷぺぺーwwww
で?ないでしょ。
ながっからしくなったけど、要はあんたただの馬鹿ってこと。
あんたの思う汎用性、来年には無に返してるかもよw
事例は山ほどあるわけで。さすがにここまでつつけば色々思い当たるやろ
16:デフォルトの名無しさん
13/09/17 11:03:29.42
長い。アホか
17:デフォルトの名無しさん
13/09/17 19:59:34.38
Linuxははやくパワーシェルをパクるべきだ
今時文字列をパイプするなんて笑っちゃうよな
18:デフォルトの名無しさん
13/09/18 21:28:25.75
VBScriptに比べて便利?
19:デフォルトの名無しさん
13/09/18 21:41:22.47
>>18
うん
20:デフォルトの名無しさん
13/09/18 21:42:23.67
文法がわかりにくい。
将来性が不安だ。
コマンドレット?
ファイルオープンの仕方がわからない。
21:デフォルトの名無しさん
13/09/18 23:25:58.35
同意
お勧めラッパーとかないの
python、rubyあたりでさっくり書けると嬉しいのだけど
22:デフォルトの名無しさん
13/09/21 01:35:54.02
pashが頑張ってくれれば化けるかもしれない
unixを滅ぼしかねないほどに
23:デフォルトの名無しさん
13/09/21 19:23:45.08
ラッパーとかなんもわかってねえじゃん・・・
perlやjavascriptみたいにCライクな勘では使えないけど
ちょっと時間とって覚えれば使えるから。
騙されたと思って勉強してみろって
24:デフォルトの名無しさん
13/09/21 20:54:55.51
VisualStudio使わずに高機能なGUIをサクサク作れるのがいいね
25:デフォルトの名無しさん
13/09/22 02:26:49.39
はようwindows以外でもまともに使えるようになってくれ
sedで文字列を抜き出すような泥臭い作業はもう嫌だお
26:デフォルトの名無しさん
13/09/26 12:25:20.13
pashというか、unixのshellってbashとかせいぜいzshあたりが高性能とされてるけど、もっと根本的に作り替えようって動きはなかったのかな
文字列操作のしにくさとかひどいよな
27:デフォルトの名無しさん
13/09/26 17:56:08.27
そのうちJavaがパクるだろ
28:デフォルトの名無しさん
13/10/05 19:28:19.44
やっぱJavaがいいね
29:デフォルトの名無しさん
13/10/08 01:48:23.25
それはない
でもPowerShell使ってるとMSの手のひらのうちだなーって思ったりはする
bashと比べたら全然いいのに、諸々込みで結局お仕事はbashな毎日
職場からマカー消えてくれればいいんだが
30:デフォルトの名無しさん
13/10/08 06:55:40.28
ないなら作れ
Javaなら一通り揃ってるから簡単だろう
31:デフォルトの名無しさん
13/10/08 21:25:14.52
Javaシェルか
あまり知らんけどJavaランタイム上で動く言語とかあるんだしありかもな
32:デフォルトの名無しさん
13/11/13 21:31:48.16
Version 3で起動したスクリプトからVersion 2でスクリプトブロックを実行したいのですがどうすれば出来ますか?
33:デフォルトの名無しさん
13/12/17 10:10:30.04
PowerShellの概念は強力だと思う、速度は別として最強でしょ
34:デフォルトの名無しさん
13/12/17 14:40:16.62
まあ異論はない
MS以外でも使いたいとか速度こそ究極とか異論がある奴はいると思うけどね
35:デフォルトの名無しさん
13/12/17 18:05:07.68
いちいちパイプラインのパースしなくていいからパフォーマンスでも有利な気がするが遅いのか?
36:デフォルトの名無しさん
13/12/20 00:56:04.07
フリーソフトがcmd用のコマンドラインを幾つか提供してある場合があるが、
PowerShellは利用できるのか?
扱うファイルはcp932以外だと文字化けしてしまうのか?
対処方法はPowerShellになってからあるのだろうか?
37:デフォルトの名無しさん
13/12/20 08:22:58.41
cmdで使えるコマンドはみんな使えるし
使いにくいならラッパーコマンドを書けばいい
38:デフォルトの名無しさん
13/12/20 12:22:53.46
>>37
ありがとう。usb外すコマンドライン用のソフトとか
幾つかのフリーソフトを使ってたから助かる。
「文字化け」問題はnkf32が実装で対応できるっぽいね。
長いけどPowerShellによる変換コマンドもあるようだ。
cmdの方がウィンドウズ8.1でもメンテ入ってないような仕上がりだったので
PowerShell学ぶわ。ありがとう。
39:デフォルトの名無しさん
13/12/20 21:18:01.86
C#やVBのコードを書いてコンパイル以外にPowerShellからクラスを追加する技術は有りますか?
40:デフォルトの名無しさん
13/12/22 01:08:25.77
>>39
こういうことではなく?
Add-Type @"
public class Hoge { public int x; }
"@
$x = New-Object Hoge
41:デフォルトの名無しさん
13/12/29 11:16:29.24
違います
42:デフォルトの名無しさん
14/01/03 16:07:43.27
「Powershellからクラスを追加」
どこへ追加したいんだ?
43:デフォルトの名無しさん
14/01/03 16:57:58.28
Add-Class Hoge {
$mProp = 100
function DoSomething {
param(x)
Write-Host x * $mProp }
}
$o = New-Object Hoge
$o.DoSomething(100)
44:デフォルトの名無しさん
14/01/03 20:26:32.08
>>37みたいにラッパーコマンドを書けばいい
とか言ってるけどちょっとだけ追加するとかだと返って一苦労になるんだよね
例えば複雑なバッチファイルにちょっとpowershellのコマンド書きたいとか、できないしね
バッチとかの遺産はそのまま使えないと思った方がいい
45:デフォルトの名無しさん
14/01/11 00:01:38.07
ISE みたいにプロンプト等へのコマンド入力や結果出力と
Read-Host とか Write-Host、[Console]::Writeline なんかを分離したければ
自力でホストを書かないと無理なんだろうか。
powershell -Command - でパイプでつないで他プログラムから使おうとしてるんだけど
Read-Host なんかの対応がすっきりしない。
46:デフォルトの名無しさん
14/01/20 05:25:29.55
単純に全てがオブジェクトになってるってのがプログラマなら面白がるよね
rubyあたりから手できそうでなかったアプローチだ
5年以上経った今となっては目新しくもなんともないけどw
47:デフォルトの名無しさん
14/01/20 05:26:59.35
勝手に独自のwebclientコンポーネントを
curlとかwgetとか名付けてるのはあかんわ
あかんとこもけっこうある
48:デフォルトの名無しさん
14/01/20 09:12:21.99
文法がもうちょい C# (っていうか C っぽいの)を受け付けてたらプログラマ受け良かったんだろなと思う。
49:デフォルトの名無しさん
14/01/24 15:18:36.81
webページにPOSTしてゴニョゴニョするスクリプトを
すぐに書けたはいいんだが.netやってる人はお馴染みの
サーバーによってプロトコル違反が発生しました.
エラーが出て困った
結局powershell.exe.configなんてのを作るはめに・・・これはダサい
50:デフォルトの名無しさん
14/01/25 02:41:18.03
Out-File -FilePath "Test.txt" -InputObject "test"
かっこよすぎワロタ
51:デフォルトの名無しさん
14/01/25 13:34:46.99
powershellを起動させると他のEXCELなどのアプリと同じようにタスクバーにアイコンが表示されますが
起動させたpowershellから何らかのコマンドを実行してこのアイコンを点滅させることはできますか?
つまりpowershellが他のウインドウの下に隠れている場合などでもユーザーに気づかせたいのです。
具体的にはps1ファイルを実行して処理が完了したら、ps1ファイルを実行しているpowershellの
タスクバー上のアイコンを点滅させたいのです。
52:デフォルトの名無しさん
14/01/25 14:03:45.54
Windows API の FlashWindowEx を使えば光らせることが出来るらしい。
Add-Type で適当なクラスを作って P/invoke で呼び出せばいい。
MS 公式で cmdlet 化したものを配布してるからそれつかってみたらどうかしら。
サンプルにある Start-Sleep -Seconds 5; Get-Process -Id $PID | Invoke-FlashWindow を実行してから
最小化してほっといたら5秒後にペカペカ光ったよ。
URLリンク(gallery.technet.microsoft.com)
53:デフォルトの名無しさん
14/01/25 19:35:16.09
PowerShell の言語仕様見てたら普通にプログラミング出来そうと思ったけどそのままだと遅いんだよね。
どれくらい遅いかと言うと最弱レベルだった。
測定は時刻を取って秒が変動するまでの while のループ回数を取った。
Lua(数値)だけは CPU時間なんだけど時刻を数値で取る方法が分からなくて。
速い >>>> 遅い
C# on PowerShell > Lua(数値) > HSP3.31 = JavaScript > Lua(文字) > VBScript >> AutoIt3 = AHK >> UWSC >> PowerShell >> DOSコマンド
測定環境は Core i3 物理2コア Windows 8.1
i++ inc(i)
PS4-C# 4145566 4088694
Lua CPU 1012841 836647
HSP3.31 915425 591546
JS chrom 777203 736391
JS fx 647385
VBScript 539979 340808
Lua文字 525671 473907
AHK Sec 188555 104679
AutoIt3 220890 82255
AHK Now 89020 71513
UWSC 23629 9137
PS4 4194 2108
.bat 471
54:デフォルトの名無しさん
14/01/25 20:20:49.34
まああくまでバッチ処理レベルだしねえ。期待されてるのは。
なんでも出来る感じもするけどそれって結局 .NET がすごいからであって
55:デフォルトの名無しさん
14/01/25 21:49:57.99
ゴミ
56:デフォルトの名無しさん
14/01/26 09:00:16.19
>>53
>時刻を取って秒が変動するまで
よく意味がわからない…
57:デフォルトの名無しさん
14/01/26 09:31:04.45
>>52
うわピカピカ光った!
どうもありがとう~!
でもこれって引数とか沢山あるけど、もう単純に「呼ばれた瞬間に3回点滅!」みたいにして
短く出来ないかな?
いま仕事してる現場で使いたいんだけど、ネット出来ない環境だしUSBメモリとかも使用禁止だから
このスクリプト印刷して持っていって自分で打ち込むしかないんだけど
コメント部分除外してもスクリプトが長いから、打ち込むの遅い自分にはつらい…
書き換えようとトライしたけど自分には高度過ぎて無理だった…
58:デフォルトの名無しさん
14/01/26 09:33:03.88
多分加算命令数/秒ってことでしょ?
ループの1処理ごとに時間取って比較してるのかねえ。
だとすると加算処理の速度比較っていうよりシステムコールの速度比較みたいなもんだな。
あと選別した言語に HSP とかなんで入ってるんだ?
Java とか ruby とか python はどこいったんだ。
59:デフォルトの名無しさん
14/01/26 10:09:37.62
>>57
削れたのほぼコメントぐらいだけど書いてみたよ。
URLリンク(pastebin.com)
引数もなにもなくて、Invoke-FlashWindow すると powershell が 3回光る。
光る回数とか変更したかったら fInfo.uCount = 3 を書き換えてくれ。
60:57
14/01/26 11:36:54.99
>>59
時間のかかる処理をするps1ファイルの先頭にこれ入れて、最終行を「Invoke-FlashWindow」にしたら
処理完了時にバッチリ光りました!
せっかく書いてもらったので絶対打ち込みます!(・`ω´・)
ありがとうございました!
61:デフォルトの名無しさん
14/01/26 12:31:24.93
PowerShellもそこそこ補完できるようになって来たけど、C#のコードはさすがに無理だからなー
Roslynが完成すればTabExpansionからIntelliSense呼び出すとかできるかもしれんが
62:デフォルトの名無しさん
14/01/26 17:48:22.43
>>58
> Java とか ruby とか python はどこいったんだ。
使ってないし使う予定もないからだけど、そこらへんは普通にググったら出てくるだろ。
基本的に UWSC(スクリプト)との比較目的でやり始めたから
キーボード、マウス操作できる AutoIt や AHK が入ってて
日本語でできる HSP が入ってる。
HSP は以前、使ってもないのにこき下ろしたことがあるけど実際どうだろうと思ってね。
VBScript や JavaScript はメジャースクリプト言語の代表として比較対象に選んだ。
UWSC があんまり遅いんでもっと遅いのはあるのかなってことで DOS コマンドでやってみてその後継の PowerShell もやってみたってわけ。
スレリンク(software板: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:デフォルトの名無しさん
14/01/26 18:43:15.03
>>58
URLリンク(www.infoq.com)
>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:デフォルトの名無しさん
14/01/26 19:06:04.20
どうせやるなら100万回ループするのに何msec掛かるかを図った方が変なロスはないと思うよ
折角Measure-Commandで時間測れるんだし
65:デフォルトの名無しさん
14/01/26 22:09:50.36
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# とか呼び出してるんだろうか。
URLリンク(www.infoq.com)
66:デフォルトの名無しさん
14/01/27 18:58:09.07
何が言いたいのかよくわからんなあ
それでpowershellはダメだと言いたいわけ?
67:デフォルトの名無しさん
14/01/27 19:42:07.25
普通にプログラミング言語っぽいしプログラム板にスレ立ってるけど
速度は遅いから重い処理を記述するのには向かないということを
自殺ベンチ
もとい、自死ベンチ
あれ?
自作ベンチ結果を披露しているわけだが
それでは不満か。
そう言えばバッチファイルのスレもこの板だったか。
記号だらけでWebだと検索しにくいんでお世話になってる。
自分で遅いというのは確認したけど
C#のコードで高速化もできるし自分の用途の範囲で問題ないと思っているんで
今ちょっと PowerShell を勉強中だから
全然ダメじゃない帝人。
長々と書いたのを「そんなこと言ってない」の一言に置換しようかと思ったけど気にせず投稿
68:デフォルトの名無しさん
14/01/27 20:57:22.58
いや、はじめからそういう環境だってわかってみんな使ってるとおもうんだが・・・
69:デフォルトの名無しさん
14/01/30 17:20:55.49
シェルでループの速度を測る意味が分からない
70:デフォルトの名無しさん
14/02/02 12:59:46.48
サーバや、他人のPCでちょいと作業をするときにこそ役立つ。
自分の開発PCだったら、他にもっといいツールがあるし。
そんなわけで、早く Ver3以上 が標準の世の中になってほしい。
71:デフォルトの名無しさん
14/02/02 17:43:09.23
俺は別にV2(=Win7標準環境)でもいいと思ってる
V1でもそこまで困らんけど、プリインスト機がまずないし
72:デフォルトの名無しさん
14/02/02 19:36:05.65
ちゅうか、なんだかんだでPowerShellって言語の更新サイクル早いね
Windows依存の功罪というかなんというか
73:デフォルトの名無しさん
14/02/03 00:00:47.83
GUIアプリが作れるようになるといいんだけど
74:デフォルトの名無しさん
14/02/03 00:25:42.02
現状でも別に作れないことはないっしょ。Windows Form 使えるんだし。
75:デフォルトの名無しさん
14/02/05 13:34:41.80
WPFでもかけるというかむしろそっちのが相性いいからちょっとした社内ツールなら楽に作れる
76:デフォルトの名無しさん
14/02/05 13:56:46.58
もっとも普通は VS Express あたり落としてきて
GUI エディタでぽんぽんぽーんって作ったほうが早い気もするが
77:デフォルトの名無しさん
14/02/06 07:36:08.61
ぽぽぽぽーん♪
を思い出した。
78:デフォルトの名無しさん
14/02/08 17:47:23.21
gci "C:\hoge.txt" | select-string "abc"
でテキストファイルの内容検索すると結果が「ファイル名:行番号:内容」という形式で表示されますが
行番号と内容だけ表示することって出来ないのでしょうか?
79:デフォルトの名無しさん
14/02/08 20:21:13.40
オブジェクトをパイプでつなげてselect linenumberみたいに欲しいプロパティを指定する
オブジェクトにどんなプロパティがあるかはget-propertyで調べられるよ
80:デフォルトの名無しさん
14/02/08 20:23:17.58
ごめんget-memberだった
81:デフォルトの名無しさん
14/02/08 20:32:40.64
>>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
14/02/08 23:48:58.04
>>79
gci "C:\hoge.txt" | select-string "abc" | select linenumber,line
でいけました。ありがとう!
>>81
PSビギナーの自分にはハードル高すぎました。すみません…
83:デフォルトの名無しさん
14/02/09 10:36:45.41
>>81
URLリンク(store.sapien.com)
PowerShell Studio 2012
Price: $349.00
高すぎ
URLリンク(www.itninja.com)
Admin Script Editor (ASE)
無料の最終バージョン 3089 downloads
.net 2.0 が必要だた・・・
あ、3.5を入れればいいのか。
「Windowsの機能の有効化または無効化」でチェック入れるだけでダウンロード出来るんだなあ。
・・・反応遅い。
・・・でけた!!
追加アプリがいらないのはネイティブだけかな?
・Native Windows Form
・PowerShell KiXforms(.NET)
・PowerShell KiXforms(COM)
84:デフォルトの名無しさん
14/02/09 14:19:38.26
>>82
コピぺして拡張子をformat.ps1xmlで保存してコマンド実行すればいいはずだが・・・
あ、$_.FileNameは$_.LineNumberの間違い
まあここまでやる必要もないとは思うけど
>>83
あらほんと。
昔は別の名前で無料で公開されてたんだけどな、って検索したらこっちっぽい
会員登録は必要らしいけど無料だそうな
PrimalFormsCE
URLリンク(www.sapien.com)
85:デフォルトの名無しさん
14/02/18 16:33:16.97
PowerShellの Out-File と Set-Content あるいは Out-File -Append と Add-Content の違い
URLリンク(tech.guitarrapc.com)
PowerShellはやっぱり糞でしたww
86:デフォルトの名無しさん
14/02/21 23:25:51.56
>>83
俺の場合は、VS Expressで画面作って
そのXAMLファイルを[string]get-contentで読み込む関数つくってる
(頭のclass文だけは削除するようにしてる)。
だから、ぺたぺた貼って、PowerShellでメニュー画面作り。
その仕組みは20分くらいで作っちゃったよ。
87:デフォルトの名無しさん
14/02/22 00:01:57.77
普通に VS Express で完結しちゃったほうが早くね?
88:デフォルトの名無しさん
14/02/22 11:35:52.82
>>87
いちいちコピペするの面倒じゃん。
VS ExoressでPowerShell作成環境ないから完結しないし。
89:デフォルトの名無しさん
14/02/22 11:40:54.69
いや powershell 使わんで C# あたりで完結しちゃったほうが早くないかねと。
90:デフォルトの名無しさん
14/02/22 11:43:51.49
そりゃものにより。
91:デフォルトの名無しさん
14/02/22 12:11:48.57
Roslyn完成したらISEにC#環境とGUIデザイナ組込みーみたいなのはそのうち出るだろう
92:デフォルトの名無しさん
14/02/22 12:31:05.56
Roslynでてくると
その次は、それを利用したもっと新たなステップの
スクリプトが出てきそう。
ヘルスバーグはいつも楽しませてくれる。
とはいえ、まだ先の先だけど
93:デフォルトの名無しさん
14/02/23 18:34:10.77
ここ↓に載ってるLINQでの問い合わせのコードってPowerShellでもそのまま使えるの?
URLリンク(www.atmarkit.co.jp)
テーブルから取ってきた値を1個表示とか簡単なのでいいんで書き方教えて欲しいです…
94:デフォルトの名無しさん
14/02/23 18:52:54.65
そもそも拡張メソッドに対応してないんだから、クエリ式なんて使えるわけないじゃないですかー
Roslynが完成すれば、Invoke-C#みたいなの作って、
部分的にC#コードでLINQクエリ実行する、みたいなことはできるかもね
95:デフォルトの名無しさん
14/02/26 20:55:45.48
会社で他の人が書いたPowerShellのソースを見てて
「If($? -eq $false)」っていう記述があったんだけど、この「$?」って何なのでしょうか?
96:デフォルトの名無しさん
14/02/26 20:57:48.38
>>95
help automatic_variables
> $?
> 最後の演算の実行状態を格納します。最後の演算が成功した場合は TRUE、失敗した場合は
> FALSE を格納します。
UNIX のシェル由来だね。と言いたい所なんだけど $$ とか全然違うしなあ。
97:デフォルトの名無しさん
14/02/27 02:21:37.54
unixとかawkとか、既存のツールから由来してる機能は多いよ
beginやendのブロックとか
98:デフォルトの名無しさん
14/02/27 17:48:58.25
PowerBoots: PowerShell で WPF が使えるツールキット
URLリンク(blogs.technet.com)
Windows PowerShell で WPF アプリケーションを構築する秘訣
URLリンク(msdn.microsoft.com)
99:デフォルトの名無しさん
14/03/01 12:12:09.21
パイプライン指向だか何だか知らんが、
functionにおけるreturnの扱いにくさだけは何とかしてくれんかな。
外部コマンド(Cmdletではない)実行する度に、それらの出力をnullやら他に逃さないと、
returnが汚れるのが激しくめんどくさい。
100:デフォルトの名無しさん
14/03/01 13:20:31.29
>>99
ん?
具体的なところがよくわからないんだけど
どんな感じのことを言っている?
101:デフォルトの名無しさん
14/03/01 13:48:34.89
function Out () {
"hoge"
return $true
}
102:デフォルトの名無しさん
14/03/01 13:53:41.97
その例の場合だと、書き方としては
function Out () {
"hoge"
}
となるんだけど。
103:デフォルトの名無しさん
14/03/01 13:58:52.35
関数内で変数を使って
かえしたれば
function Out () {
$a="hoge"
$a
}
または
function Out () {
$a="hoge"
return $a
}
returnのところは
return($a) でもいい
104:デフォルトの名無しさん
14/03/01 14:17:36.86
>>101
要はこの例でいえば
自分で2つ返す(hogeとtrue)コーディングをしているので
余分と思われるものがでてる。
105:デフォルトの名無しさん
14/03/01 14:23:50.15
例えば SetSomething みたいな値をどっかに設定するのとか
DisplaySomething みたいな値をどっかに表示するのみたいなので成功したか失敗したかを返すような、
どっちかというと所謂副作用部分がメインの関数があったとして、
それをそのまま呼び出すと戻り値要らないのに一連の戻り値に入っちゃうのがうっとおしいって話じゃね。
C なんかでいうところだと printf の戻り値なんか普通ほったらかすのにいちいち (void) でキャストしたり
適当な変数に代入して読み捨てしないと戻り値に入っちゃうみたいな感じね。
まあそういう言語なんだって言われたらそれまでの話なんだけど。
106:デフォルトの名無しさん
14/03/01 14:24:11.73
自分ではっきり出力してればいいけど
普段何も返さないコマンドがエラーメッセージとか返して来たら困るね。
107:デフォルトの名無しさん
14/03/01 14:26:04.46
>>102-104
ごめん。
そもそもの言い方が悪かったけど、
functionを、他言語の”関数”と同じように、呼び出し側からはreturnだけを受け取りたいってこと。
関数内で変数を使って
かえしたれば
function Out () {
$a="hoge"
$a
}
でやっていることは、$aに代入することによって、パイプラインに流れるのを阻止した状態。
これを、外部コマンドに対して行う場合は、
$a = $(外部コマンド)
[void]$(外部コマンド)
外部コマンド | Out-Null
などなど。
>>106
その通りでございます。
108:デフォルトの名無しさん
14/03/01 14:27:35.99
明示してないものまで戻り値に含まれるってのは他の言語と比較すると特異ではあるわな
109:デフォルトの名無しさん
14/03/01 14:37:28.46
c#のoutがあればね。
refはあるんだが。
110:デフォルトの名無しさん
14/03/01 14:43:03.21
>>108
あ、俺のレベルでその意味わかんない
111:デフォルトの名無しさん
14/03/01 14:50:34.97
>>108
return文に指定していないものまでという意味ですか。
112:デフォルトの名無しさん
14/03/01 15:32:48.27
>>111
そういうこと
明示しない場合は最後の式の値が戻り値になる、なんてのは結構あるけど
頭から最後までの式の結果を連結して返されるってのは「関数の戻り値」って考えると見たこと無い。
戻り値じゃなく出力って考えるとパイプラインのことと相成ってスッキリするんだけどね。
113:デフォルトの名無しさん
14/03/01 16:40:40.92
>>112
なるほど。
出力ということですね。
returnは、関数内でステートメント終了!の意味なんだろうな。
ってことは、常にreturn値だけをとりたいときは、安心のために。
$a=Out
$a.[$a.Count-1]
てな感じになるのかな。
114:デフォルトの名無しさん
14/03/01 17:42:47.70
おっと
$a=out
$a[-1]
でよかった。
115:デフォルトの名無しさん
14/03/01 18:46:25.77
それぞれ、悩む点が異なるので
いろいろ勉強になるな~
116:デフォルトの名無しさん
14/03/01 23:04:20.14
>>101
例に突っ込んでもしょうがないかもしれんが
文字列を直接埋め込んで何もしないって状況がありえなくね
echo hoge ならともかく
$a = New-Object Collections.ArrayList
$a.Add(100)
return $a
とかなら分かるけど
117:デフォルトの名無しさん
14/03/02 17:14:32.59
>>116
おれもよくわからないんだけど。
無いんじゃないかな。
あるいは途中でのチェックのために入れたいとか。
だとすると、他の書き方をするべきなんだけど。
ともかく
他の言語だったらエラーで、そういう記述ができないんじゃないかな。
他の言語の関数だと、明示的に出力指定すると戻り値としてでなく、
コンソール出力等に返され、戻り値には入らない。
それを言っているんだと思う。
PowerShellで他言語と同じように使用したいなら、
他言語と同じような使用方法を守れば問題ないんだと思う。
たとえば、ファイル一覧をほしくて関数としてdirを使うなら。
function Out{
$dir = dir
Write-Host $dir
return $ture
}
$kekka=Out
とすれば戻り値の結果$kekkaには余分なものは入らない。
要は、PowerShellは融通が利いちゃうんで戸惑ってる
ってころじゃないのかな?
他の言語でできないことができちゃうってことでしょ。
118:デフォルトの名無しさん
14/03/02 17:16:35.00
捕捉だけど
>無いんじゃないかな
PowerShellの場合だと、それをわざと利用することはあるが、
他言語ではそういう使い方できないだろうという意味。
119:デフォルトの名無しさん
14/03/02 17:22:32.45
質問からの例でいえば( >>101 の例でいえば )
本来は
function Out () {
Write-Host"hoge"
return $true
}
と記述する必要があるということでしょ。
外部関数を中で使うなら
function Out () {
$a=外部関数()
Write-Host $a
return $true
}
ってな感じですね。
実際、私はそういう記述してる。
120:デフォルトの名無しさん
14/03/02 19:19:22.75
なんか画面出力の話にすり替わってるけど戻り値の話でしょ? >>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 しか返ってこないって普通考えちゃうよ。
121:デフォルトの名無しさん
14/03/02 19:20:11.13
>>119
だから、その書き方とかキャストや、あるいは戻り値を参照渡しする、とかがめんどくさいんでしょ。
122:デフォルトの名無しさん
14/03/02 19:21:03.27
うわ、かぶったw
123:デフォルトの名無しさん
14/03/02 19:42:56.62
>>120
そっか勉強不足だった。
Cは使わないけど。ってことは、コーディング上では、
int main() { "hoge";printf("hello\n"); return 0; }
と書いても、コンパイラーでhogeは無視してくれるのか。しらんかった。
エラーかと思ってた。
出したいときは別途記述が面倒かもしれないけど。
画面といったのは"hoge"も別途必要としたから記述したのだと理解した
関係。
124:デフォルトの名無しさん
14/03/02 19:57:35.48
powershell でいうところの (関数)[-1] って呼び出しが他の言語の一般的な関数呼び出し、って言えば何の話なのかわかってもらえるんじゃね。
125:デフォルトの名無しさん
14/03/02 20:01:18.83
まあ、そういう仕様としかいえないよな。
俺の場合だと、XAMLを関数内で組み立てるときにPoowerShellの関数
使用は重宝してる。
普通の言語だと、逆にくっつける操作が必要になるので煩雑になっちゃう。
return文自体使わないけど。
使う場面次第だな。
126:デフォルトの名無しさん
14/03/02 20:08:16.13
パイプラインで出力をつないでいく設計思想だからねえ。
127:デフォルトの名無しさん
14/03/02 20:16:15.40
関数自体から返るものすべてがオブジェクトだと
認識しないといけないね。
128:デフォルトの名無しさん
14/03/02 20:20:34.62
成否を返す関数との相性は悪いよな
あと複数結果返す関数でいえば結果が一個の時と複数の時でタイプが変わるのが気持ち悪かったわ
$x = ls とかやったときにファイルが複数あると $x.GetType() => Array だけど
一個しか無いと $x.GetType() => DirectoryInfo ときたもんだ
@()で呼び出しゃいいんだけど
129:デフォルトの名無しさん
14/03/02 20:21:58.90
あくまでシェルであって言語としてはかなり歪だと思う
130:デフォルトの名無しさん
14/03/02 20:29:09.68
>>129
そりゃ旧来のシェルのほとんどは単なる文字列操作にすぎないからね。
131:デフォルトの名無しさん
14/03/02 20:32:39.91
いや、言語としてはいいと思う。
が、シェルだと考えると、
.NETやコマンドレットだけじゃなく、外のコマンド・プログラムをたくさん使うことになるわけなので、
それらの戻りを全部把握して処理しないといけないのは、結構大変なことだと思う。
嵌って、「パイプラインすげー」と思う人、「なんだこれ、使えねーw」と思う人それぞれ。
132:デフォルトの名無しさん
14/03/02 20:33:12.58
>>128
初めは俺も思った。
なれたらこの方が便利だけど。
returnの役割は、スコープ終了と、リターンコードを返すための利用。てな感じ
なんだろな。
結果とリターンコード両方が取れるのは、俺にとっては便利。
133:デフォルトの名無しさん
14/03/02 22:50:50.92
>>120
いや俺が>>116で言ったのは、文字列だけ書いたらそれが画面に表示されるってのはPowerShellくらいだから(ないことはないだろうけど)
他の言語の感覚で文字列だけ書いてたら出力に混じって嫌だって例文は違和感があるって話
printfの感覚で echo hoge って書いたら出力に混じるから困惑したってことなら分かるけどって意味
だから出力が混じって困る例なら、たとえばC#で戻り値があることを意識してないメソッドを呼ぶような例がいいんじゃないか、ってんで>>116で書いた
確かに最終版はともかくデバッグ中は文字列埋め込むこともあるかもしれないけどね
134:デフォルトの名無しさん
14/03/02 23:05:47.11
なんか出力と戻り値を取り違えてる奴がいるからややこしくなったんだろな。
あと例もよくなかった。
単に戻り値を返す適当な処理を書いとけば出力がどうのって話にならなかったんだと思う。
135:デフォルトの名無しさん
14/03/02 23:31:47.97
本買って読めとまでは言わんけど、man about_Returnにすら書いてあることくらいは読もうぜってことで
136:デフォルトの名無しさん
14/03/03 22:10:36.75
【メモ】
write-output write-hostの違い。
ググって出てくるのは、色が付けられるとか、空行がどうのとか、そういうことばかり。
write-output "foo"
echo "foo"
"foo"
は全部同じで、パイプラインに出力。
write-host "bar" | gm
(エラー)
つまり、write-hostは、コンソールへの直接出力(パイプライン経由ではない)。
137:デフォルトの名無しさん
14/03/03 22:55:59.13
コンソールっていうかホストプログラム全般な
画面へ出力することを前提としているから色を指定できる
あとSnover泣いちゃうからまずヘルプ読んであげて
138:デフォルトの名無しさん
14/03/06 18:15:30.08
win8.1でヘルプが入ってなかったから、update-helpしたわけだが、英語版しか入らなかった('A`)
139:デフォルトの名無しさん
14/03/06 23:40:23.45
英語を勉強するチャンス!
140:デフォルトの名無しさん
14/03/06 23:44:05.55
>>138
これは実績もあるイルカに期待するしかないかw
141:デフォルトの名無しさん
14/03/07 19:07:10.78
>>138
「Windows PowerShell 実践システム管理ガイド」
2009初版、という本によると、
C:\Windows\System32\WindowsPowerShell\v1.0 に、
ja-JP というフォルダを作って、そこに
en-US フォルダにあるすべてのファイルをコピーする
と書いてある
漏れはWin8だけど、ja-JP フォルダの中には、
すでに数個のファイルが存在している
どうすべきかな?誰か試しにやってみて
ja-JP フォルダの中の default.helpには、
オンラインヘルプのアドレスが書いてある
142:デフォルトの名無しさん
14/03/08 10:57:34.76
7だと最初から入ってたよね。
だから、2008R2でも特になにもしなくてもリファレンスは使えてた。
2012R2だと、どうなんだろ。
サーバの場合、インターネットに直接繋げないケースも多いわけで。
WSUSではたぶん面倒見てくれないから、SCCMとか使うのかね。
143:141
14/03/08 15:49:20.02
漏れはWin8だけど、
C:\Windows\System32\WindowsPowerShell\v1.0 中の、
en-US フォルダの中には、powershell.exe.mui
というファイルが一つあるだけ
これを、ja-JP フォルダにコピーすれば良いのか?
ただし、ja-JPにもすでに、同名のファイルがある
同名のファイルだが、ファイルのサイズは違う
前者は11KBで、後者は9KB
このファイルは何だろう?
ヘルプファイルをダウンロードするプログラムか何か?
144:141
14/03/08 16:26:47.96
powershell と同じフォルダにある、
デバッグ用のpowershell_ise の方が使いやすい
右のコマンド一覧から、
コマンド + オプションを選んで実行できる
145:デフォルトの名無しさん
14/03/08 16:30:57.24
最近のISEはコマンド一覧とかついてるんか
146:デフォルトの名無しさん
14/03/26 20:18:38.26 LfplOf8O
真面目な話、
・Windows Server のユーザーである
・管理系のスクリプトを作りたい
・先の見えてる .bat や .vbs よりかは将来性がある
しかし、これらを全て満たす状況じゃないと「憶えても無駄」な嫌な匂いがプンプンしてくる、という感想を抱く。
PowerShell 推しな記事がこぞって 4~5年前だったりするし。記事が古いから役に立たないし。
でもこれからの Windows Server 管理(特に MS 製サーバーアプリ)には必須、みたいな匂いもプンプンしてくる。
管理者系の人間が嫌々使ってる、というイメージなんだけど、実際はどうなの?
147:デフォルトの名無しさん
14/03/26 22:08:56.67 Fzs/8hFo
そんなところじゃないの?
開発案件だったらわざわざこれを選ぶ人はいないだろうし
148:デフォルトの名無しさん
14/03/26 22:54:04.60 3UAaFn0/
batは低機能過ぎるし、vbsは糞言語のうえシェルじゃないし。
149:146
14/03/27 18:33:56.87 w9DVguFT
>>147
だよねぇ…
泣きながら学ぶことにするよ…
>>148
ええと、シェルとしての PowerShell については何も言ってないのだが…。
VBScript は言語としてはそんなに悪い言語じゃないと思ってる。
ちょっと凝ったことをやろうとすると COMオブジェクトに頼るしかなくて、おもくそ環境依存、意地になって自前実装するとウルトラ遅くなる駄目な子、というとこなら同意。
シグナルのハンドリングというところまで極めてはいないのでそこは了承願いたい。
エラーを raise できるのは知ってるが、はて SIGKIL とか SIGHUP とかを外部から受け取った時はどうだったっけ、な感じなんで。
150:デフォルトの名無しさん
14/03/27 22:54:36.60 5oUWcvgH
ム板で言ってもしょうがないが、そもそも開発案件で候補に挙がるような言語じゃないだろう
シェルスクリプト/ツールとして使う分には普通に便利に使ってるけど
151:デフォルトの名無しさん
14/03/30 07:01:13.94 4uJ25Yxc
これがそうでもない。
プロト的につかったり
メニュー画面がらみ案件に使ったり
相当使える。
152:デフォルトの名無しさん
14/03/30 07:30:21.97 Ym7n0+3V
そんなのVSでポトペタの方が早いじゃないですかやだー
153:デフォルトの名無しさん
14/03/30 12:03:12.26 1u4x9v7e
>>152
画面はVSでポトペタをそのまま使える
PowerShellでホストする。
めちゃくちゃ簡単になる。
154:デフォルトの名無しさん
14/03/30 13:20:00.33 RDnNVplQ
>>152
それ、VSの立場が理解できてないんだとおもうぞ
155:デフォルトの名無しさん
14/03/30 13:40:34.98 o9ag65ui
納品用のPCに泣きながらVSをインストールする>>152を目撃したという未確認情報が入りました
156:デフォルトの名無しさん
14/03/30 15:51:48.19 RDnNVplQ
>>152
たとえばWPFなら、VSで作る画面(XAML)をC#で使えるよね
これはC#用に作っているわけじゃなく、XAMLとして作られている。
独立したものなんです。これがコードビハインドという考え方。
だから同じものをVBでも使えるよね。
同じようにPowerShellでも使えるんです。
イメージわかってくれたかな?
知っているかもしれないけど、ついでなんで、
バインドという考え有るよね。
これを組み合わせるとJavaなどと比べて何倍も高い開発効率を
生めるのが、現在の.NETの世界となってきている。
なんで、Javaやめて戻ってきた次第。
157:デフォルトの名無しさん
14/03/31 00:31:05.84 3P7ATE0k
>>153
すいませんが、アホの俺にもわかるように教えて下さい。
Powershellでホストするって?
158:デフォルトの名無しさん
14/03/31 00:37:28.56 3P7ATE0k
URLリンク(d.hatena.ne.jp)
こういうことですか?
159:デフォルトの名無しさん
14/03/31 00:51:18.63 HPrdAsyG
xamlでUI作ったらPowerShellから読み込んでShowDialog()で呼び出すってだけじゃ?
160:デフォルトの名無しさん
14/03/31 06:31:38.92 nFhjZp0H
$arr=ls
$arr.Name
$arr.fullname
Nameでファイル名、fullnameでフルパスを取り出すのは便利
ただし、入力補完ではこれらの候補が出ない
161:デフォルトの名無しさん
14/03/31 09:16:41.02 ObzhI129
>>160
そもそも ls.Nameってあったけ?
162:デフォルトの名無しさん
14/03/31 13:34:02.17 FswzEzL9
>>160
ls -Nameの間違いかな?
$arr=ls
$arr -Name
としたいということだとすると、無理じゃないかな
new-alias arr ls
arr -Name
ならいけるけど
163:デフォルトの名無しさん
14/03/31 13:42:03.34 Z/deP/O+
>>156
データバインドって、Angularのやってるアレ?
スクリプトならnashornで書く方が速いんじゃないの
164:デフォルトの名無しさん
14/03/31 13:56:19.72 FswzEzL9
>>163
そういうのは好きなのえらべばいいんじゃないかな。
165:デフォルトの名無しさん
14/03/31 14:04:39.44 Z/deP/O+
いきなり他の言語を使えって言われても、コンテキストを思い出せないんだよ
Excel VBAがExcel JScriptに置き換わったら、いよいよだと思うね
166:デフォルトの名無しさん
14/03/31 18:14:36.06 fvBhjMHZ
powershell の意味不明な文法はどこ由来なんだろう
167:デフォルトの名無しさん
14/03/31 19:19:51.23 HPrdAsyG
>>161-162
Member Enumerationといって、V3からコレクションの各要素のメンバーにアクセスする機能が追加されたんだよ
URLリンク(blogs.msdn.com)
168:デフォルトの名無しさん
14/03/31 19:45:07.51 2sfUKmxl
いちいちselectしなくても良くなったってことか
それは助かる
169:デフォルトの名無しさん
14/03/31 21:39:20.66 FlSL2ost
>>167
それなら、書き方が違うと思うぞ
$arr=ls
$arr.Name
はできないでしょ
$arr=(ls)
$arr.Name
なら可能だけど、
それでも
入力補完はしてくれないね。
170:デフォルトの名無しさん
14/03/31 23:13:53.29 HPrdAsyG
>>169
いやどちらでも通るよ?
入力補完はそりゃ利かないだろうけど
171:デフォルトの名無しさん
14/04/01 00:13:09.13 n+62zDt+
>>170
ごめん、通った
172:デフォルトの名無しさん
14/04/01 21:14:46.98 XUx13Ibi
>>167
意外だ。3まではできなかったのか。
powershellの()とか$()ってオブジェクトがそのまま却ってくると理解してて、その書き方が当たり前と思ってたわ。
173:160
14/04/02 02:37:09.60 iqksnACc
$arr=ls
$arr.Name
$arr.DirectoryName
$arr.FullName
Nameでファイル名、DirectoryNameでフォルダまでのフルパス、
FullNameで、ファイル名付きフルパスを取り出す
入力補完は、
$arr. で配列のメンバが、
$arr[0]. で配列中のファイル情報のメンバが表示される
174:デフォルトの名無しさん
14/04/02 03:15:22.54 DfhRYDJb
ps初心者におすすめの書籍やサイトありませんか?
175:デフォルトの名無しさん
14/04/02 10:47:02.26 rXi4eJBj
powershell in actionのセカンドエディションが何故出ないんだろう・・・
英語読めんから、日本語版でてもらいたいんだけど
176:デフォルトの名無しさん
14/04/02 15:40:49.84 mZJZP6QO
>>174
やはりTechNetじゃないかい
177:デフォルトの名無しさん
14/04/02 17:16:43.20 m0GxFAWI
powershellって、本は少ないよな
というか、読んだことない
日本語の情報も少ない
powershellはバージョンアップで結構大きく変わってるから、ネットの情報も古いのはあまり役に立たない
178:デフォルトの名無しさん
14/04/02 17:36:21.91 wdgZMuKf
選ばれし者のみが使うものだから安っぽい一般書籍で下々の者の目に触れさせてはならぬのだ
179:デフォルトの名無しさん
14/04/02 19:56:12.51 Y0IuL1ul
>>177
ないことはないが
wshの本だって読んだことないだろ?
180:デフォルトの名無しさん
14/04/02 20:35:42.75 OMqTUtFb
歯を磨くのに歯ブラシの本なんか読まないって奴だな
181:デフォルトの名無しさん
14/04/02 21:07:06.51 y1aMAgcN
そういえば、Excelの本も読んだことないな
182:デフォルトの名無しさん
14/04/02 21:53:15.82 m0GxFAWI
bashの本は結構ある
183:デフォルトの名無しさん
14/04/03 02:45:55.99 Ft/oIZi2
>>174
「Windows PowerShell 実践システム管理ガイド」2009初版
この本は一通り、環境設定や文法などを説明しているが、
サーバ管理者じゃなければ、あまり読む所がない
@IT 執筆者は山田 祥寛(よしひろ)
URLリンク(www.atmarkit.co.jp)
HIRO's.NET
URLリンク(hiros-dot.net)
MS TechNet スクリプトセンター
184:デフォルトの名無しさん
14/04/03 15:09:33.58 Ft/oIZi2
ファイル名に入っているすべての空白を、
アンダーバーに置換して、
置換したときのみ、ファイル名を変更する
#複数か所を置換。日本語もOK
$a=$str.Replace(' ','_')
#True, False
#もし、置換されていれば
if(! $a.Equals($str)){ren}
Replaceが置換できたかどうかが分からないため、
Equalsで置換前後の文字列を比べているんですが、これでいい?
Replaceが置換した文字数でも返せば、便利なのに
185:デフォルトの名無しさん
14/04/03 22:15:18.50 PIEAAVmi
これが最近になってerrorになるんだが。エラーメッセージは今手元に処理系がないから晒せない。すまぬ。
$ie = new-object -com InternetExplorer.Application
186:デフォルトの名無しさん
14/04/04 03:15:36.79 Y0zkgPF2
$ie = new-object -com InternetExplorer.Application
Win8で、動くよ
ただし、このままでは見えないから、
$ie.Visible=$true で見える
それから、$ie.Quit() で終了して、
Remove-Variable ie で変数を完全に削除する
187:デフォルトの名無しさん
14/04/04 03:25:58.26 wR4zjFJC
>>186
あ、動かなかった環境はwin7
188:デフォルトの名無しさん
14/04/04 03:26:28.98 wR4zjFJC
>>186
ieのバージョンは8
189:デフォルトの名無しさん
14/04/04 05:53:17.18 KMj82CKh
>>186 ので Vista (ってかWin2008srv) と IE9だと、今ちゃんとIE起動したなあ。
190:デフォルトの名無しさん
14/05/02 17:26:10.96 iN4GJgNf
echoや>の出力がUTF-16LEなのはハマるな
もともとUTF-8で出力するプログラムとかなんかおかしくなるし
191:デフォルトの名無しさん
14/05/02 20:40:03.81 HFpQdt1h
そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
192:デフォルトの名無しさん
14/05/10 13:27:52.37 rkawSHax
クラシック コマンドと PowerShell の間のエンコード設定
URLリンク(d.hatena.ne.jp)
193:デフォルトの名無しさん
14/05/17 13:01:56.04 zPk4Oowy
>>191
おかしくないね
194:デフォルトの名無しさん
14/05/17 13:04:18.77 zPk4Oowy
>>191
そもそも自分でエンコーディング指定しない状態でうまくbatは
そのまま実行できた方が便利じゃね
おかしくねってなんだよこのカス
お前のせいでこのスレ過疎ってんじゃねえかよ
俺は苦労なく適応してるスタイリッシュ糞野郎は死ねよ
195:デフォルトの名無しさん
14/05/17 13:05:13.85 zPk4Oowy
>>191
そもそも自分でエンコーディング指定しない状態でうまくbatも
そのまま実行できた方が便利じゃね
>>192
それがめんどいって言ってるんだけど
だからこのスレ過疎ってんだけど
196:デフォルトの名無しさん
14/05/17 13:06:51.90 zPk4Oowy
>>192
ドヤ顔1行レススタイリッシュでああかっこいい
これでもうまく出来ない
たとばestcmdのことだよ
やってみろごみ
197:デフォルトの名無しさん
14/05/17 13:09:30.55 zPk4Oowy
そもそも自分でエンコーディング指定しない状態でうまくCUIコマンドは
そのまま実行できる方が便利とおもわないほうがおかしくね
198:デフォルトの名無しさん
14/05/17 13:10:47.73 6QUaAdwh
そもそも自分でエンコーディング指定しない状態で動いてるCUIコマンドは
そのまま実行できた方が便利とおもわないほうがおかしくね
199:デフォルトの名無しさん
14/05/17 13:21:35.98 6QUaAdwh
>>192
設定してもestcmdがうまく変換できない
試してみなくても絶対できると思うこむのがおかしくね
200:デフォルトの名無しさん
14/05/17 21:10:33.02 blVZ2esz
こちらの質問を投稿されてから少し時間が経ちましたが、その後の状況はいかがでしょうか
とか気持ち悪いからまれ方する掲示板には絶対に書き込みしないが
ここでカスどもを叩きつぶんつ
201:デフォルトの名無しさん
14/05/17 21:25:14.42 blVZ2esz
単純にエンコード指定しただけではうまくいかないことがあるのは明白
試しもしないで大嘘書いてんじゃねえよクズ
202:デフォルトの名無しさん
14/05/17 23:03:47.67 blVZ2esz
こちらの質問を投稿されてから少し時間が経ちましたが、その後の状況はいかがでしょうか
とかいう気持ち悪いからまれ方する掲示板から出てくんな
203:デフォルトの名無しさん
14/05/21 01:04:44.83 sYItXBaD
utf8を出力するコマンドを扱うのは厄介で
普通に実行すると、utf8がsjisに文字化けした文字列が出力され、
これを > しようもんならさらにutf-16leでエンコードされて涙目になる。
> そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
なんていう話ではない>>191>>192
これ(utf8がsjisに文字化けした出力)をファイルに落として(sjisでエンコード指定(Default))
Get-Contentで読み込む(utf-8でエンコード指定)と
文字コードはあってるのにバイトが欠けたような化け方をして元のコードには戻らない。
cmd.exeのutf-8→sjisの変換(iconvとかnkf)ではそんなバイト欠けしないので
暗黙の多重エンコードのせいでバグのような挙動になってるのだろう。
get-content でutf8なファイルを-Encoding utf8指定して読み込むとすべてうまくいくので
コマンドにもutf8でエンコードで指定できればうまくいきそうではある。
でもコマンドにはエンコード指定ができないのだ。
これはcmd.exeと一緒なので普通なんだけど。
cmd.exeでutf8を扱うのはXPからの悲願だったわけで
sjisに化けた文字をどうこうするよりやはり生のutf-8を出力してもらうのが最善であろう
Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
ナマのutf-8を吐いてくれる。
つまり、Diagnostics.ProcessStartInfo の設定してとあるutf-8出力コマンドに
引数を渡すラッパをpowershellスクリプトで書けばいい
手間といえば手間だが
cmd.exeでutf8を扱うのはXPからの悲願だったわけで
必要な手間だといえる
204:デフォルトの名無しさん
14/05/21 02:18:31.24 ta57bKtc
標準出力のutf16leとsjisは自動判別されるがutf8は判別しない。
utf8での出力は問答無用でsjis出力される。$OutputEncoding は関係しないようだ。
.netのDiagnostics.ProcessStartInfoの StandardOutputEncodingをutf8に指定して
プロセスを作成すれば、化けずにutf8で表示できる。
utf8のファイルならば自動判別される。
Get-Contentで文字コードを指定しなくてもutf8のファイルを読み込めるし
> をしたら、化けずに正常にutf16leに変換される。
205:デフォルトの名無しさん
14/05/21 02:27:53.59 ta57bKtc
UTF8の標準出力は無視というより
単純にBOMBなしUTF8はスルーされるってだけの話なのか
BOMBなしUTF8は-encoding utf8すれば読めるが強制sjis変換される
BOMBがないutf8はちゃんと表示された
206:デフォルトの名無しさん
14/05/21 02:28:38.07 ta57bKtc
×BOMBがないutf8はちゃんと表示された
◯BOMBありのutf8はちゃんと表示された
207:デフォルトの名無しさん
14/05/21 18:11:51.04 WiuU0w7h
>>203
俺が言ったのは、エンコーディング指定なしで望みの形に自動で入出力される、なんて都合のいいもんのはずないだろってことだけだが
特にUTF-8が厄介なのはcmd.exeの頃からそうなんだから
208:デフォルトの名無しさん
14/05/22 15:38:40.24 /bbRYJfN
テキストはバイト列じゃなくて文字列として扱われる
PHPとかPtyhon2とかしか知らないと、間違う
209:デフォルトの名無しさん
14/05/30 23:45:52.42 F99LD7Fr
>テキストはバイト列じゃなくて文字列として扱われる
バイナリとして比較するということを言いたいのかな?
210:デフォルトの名無しさん
14/05/31 01:17:39.96 HDDKJJTo
逆だろ
211:デフォルトの名無しさん
14/05/31 01:45:04.55 tHdAdTRr
>Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
>ナマのutf-8を吐いてくれる。
これは勘違いで誤り。
utf-8をsjisに変換してくれる、が正しい。cmd.exeでも同じ挙動。
そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか
212:デフォルトの名無しさん
14/05/31 01:48:59.81 YDFuTMoW
むかしは、シフトJISのテキストをバイト列として(〝バイナリとして〟)処理した。
(当初からJavaは、テキストを文字列として処理してきた)
いまは、Perl, Python, Rubyは、文字列としてテキストを処理できる。
スクリプトがどの文字コードでかかれてるか明記。
出力するとき、内部の文字コードから表示の文字コードに変換。
213:デフォルトの名無しさん
14/05/31 02:00:38.69 tHdAdTRr
ちょっとエンコーディング指定すればいいなんて手間じゃねえし
なめてんだろ
214:デフォルトの名無しさん
14/05/31 12:22:25.77 LqLiNHuI
>>190本人が、何もしなくてもUTF-8形式を適切に処理してくれるって考えは甘いってことを理解してりゃそれでいいよ
215:デフォルトの名無しさん
14/06/02 22:17:32.05 iXPDpkrB
>>214
BOM付きUTF8ならば適切に処理されるんだからややこしいのであって
考えが甘いとかそういうことじゃないんだよ
こうやって精神論にすり替えて叩いてくる
どうせわんくまのバカどもが食いついてんだろ
お前らいつも参考にならないんじゃアホ
216:デフォルトの名無しさん
14/06/02 22:30:48.29 iXPDpkrB
>>207
口だけのわんくまカス(あるいはそれと類する存在)よ
俺は100%間違ってないみたいな態度とってるんだがお前は間違ってんだよ
都合がどうのこうのだという話はしてない
少なくともお前の書き込みはいらなかったし死んでほしい
利用者のアラをつつくような(もちろんこちらのあらはなかった)グズは死ねよ
以下の挙動がcmd.exeなどとは違っててバグなんじゃないかと言ってるんだが?
アドバイスくれクズ
>>203
>これ(utf8がsjisに文字化けした出力)をファイルに落とし(Set-Content
-Encogin Default指定) て
>Get-Contentで読み込む(-Encoding utf8でエンコード指定)と
>文字コードはあってるのにバイトが欠けたような化け方をして元のコードには戻らない。
>cmd.exeのutf-8→sjisの変換(iconvとかnkf)ではそんなバイト欠けしないので
>バグだと思われる。
hyperestraier のようなutf8出力コマンドで再現可能
217:デフォルトの名無しさん
14/06/02 22:34:16.22 iXPDpkrB
>>207
そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか
cmd.exeではこんなビット欠けは起きない
218:デフォルトの名無しさん
14/06/02 22:37:17.51 iXPDpkrB
>>207
コマンドの標準出力にはエンコード指定する方法なんかないので
大げさなラッパを作る必要がある
cmd.exeの頃は勝手にutf16leに変換されるなんてことなかったし
変換し直すだけでトラブルはなかった
分かったかわんくまバカ
219:デフォルトの名無しさん
14/06/02 22:43:53.50 iXPDpkrB
echoや>の出力がUTF-16LEなのはハマるな
もともとUTF-8で出力するプログラムとかなんかおかしくなるし
220:デフォルトの名無しさん
14/06/02 22:46:54.35 iXPDpkrB
じゃあ
echoや>の出力がUTF-16LE
である利点を語ってくれ
標準出力unicode化は今まで全く力を入れてこなかったことので悲願でも何でもない
それ以外で
221:デフォルトの名無しさん
14/06/02 22:53:46.33 iXPDpkrB
>>192
正直そこらへんのブログの落書き情報よりつっこんだ話してるからね
このスレ読めばUTF8関連のトラブルは解決するだろう
もちろん俺だけのおかげであって
わんくまやムタや魔界仮面(宇宙仮面ではない)の出番はなかった
わんくまが役に立ったことなんかないがな
222:デフォルトの名無しさん
14/06/03 00:46:33.05 zVTgVwHZ
利点も糞も、echo(write-output)は、生のオブジェクトを扱うことになるわけで、
つまりは、.NET仕様の根幹だから今更変えようがないでしょ。
従って、文字コード変換とかは受け取る側が全部面倒見る必要がある。
が、今どきUTF-8くらい標準(共通パラメータ?)で何とかしろよ、っていう点には同意だが。
223:デフォルトの名無しさん
14/06/03 00:54:23.68 Y/pEIVnr
エンコーディングを指定すればいいだろ
224:デフォルトの名無しさん
14/06/04 20:44:17.78 L8qA/6qE
Get-Item も Write-Output もオブジェクトの配列を引数に取りますが、
> Get-Item a.txt, b.txt # a.txt, b.txt 両方表示
> Get-Item a.txt b.txt
Get-Item : 引数 'b.txt' を受け入れる位置指定パラメーターが見つかりません。
ここまでは良いのですが、
> Write-Output 1, 2, 3
1
2
3
> Write-Output 1 2 3
1
2
3
Write-Output の2つ目のコマンドがエラーにならないのはなぜでしょうか?
225:デフォルトの名無しさん
14/06/05 00:54:18.00 0UtGsb3y
>>224
値を受け付けるパラメータの数が1つだけだとこういう挙動になるのかと思ったけど
Write-Hostでも同じようにエラーにならないな
226:デフォルトの名無しさん
14/06/06 20:42:25.77 SJO4baaV
>>215-216
いやお前は必要な情報を提示したつもりだったのかも知れんが、
>>190のレスだけじゃ一般論として文字コード意識しないと駄目だろって話にしかならない
227:デフォルトの名無しさん
14/06/08 09:45:09.57 EYTmrCp1
ここで聞いて良いのか分からないけど分かる方居たら教えて下さい。
Get-WmiObject -ComputerName IP -Credential $cre ~としてサーバの情報取って来ようとしてるんですが、UserAdministrator Passなし で認証のダイアログ等を出さずに実行するだけで取得する方法はありますか?
パスワードの設定がされていればそのまま取ってこれるんですが、パスなしの場合は無理でしょうか。ちなみにドメインには参加していません。
228:デフォルトの名無しさん
14/06/08 15:47:34.27 sw1PudVp
WinRMを設定して使う。
SSHみたいにリモートでコマンド実行できる様になる。
229:デフォルトの名無しさん
14/06/09 00:18:43.04 5ZVLqxF5
>>228
ちょっと調べてみた感じサーバ側の設定が必要なんですね
まだ入社したばかりで、大量にあるサーバを全手動でチェックしてるのでそこをなんとかしようと思って調べてました
お上にお伺い立てないといけませんが、もうちょっと調べて行けそうなら考えてみます
ありがとうございます
230:デフォルトの名無しさん
14/06/15 12:59:24.56 7N5YxzDD
#file1.txt
hoge
fuga
$a = gc file1.txt
$a[0] #=> hoge
---
#file2.txt
hoge
$a = gc file2.txt
$a[0] #=> h
gc file2.txt | %{$_} #=> hoge
ログの集計で軽く嵌ったわ。
柔軟といえば柔軟なんだけど。
231:デフォルトの名無しさん
14/06/20 15:35:56.81 HoBg26Gr
バージョン2.0使ってるけどConvertfrom-Csvで変換後にある列がブランクの行をWhereで抽出して表示させようとしたんだけど
他の列は「-eq ""」でいいんだけど最終列だけは「-eq $null」にしないと抽出できないね。
列ごとに書き方変えるの面倒なのでIsNullOrEmpty使うようにしたけどバグに近いレベルの仕様だな。
上位バージョンだと改善されてるのかな?
232:デフォルトの名無しさん
14/06/20 16:53:37.72 wHzCGsbi
>>231
IsNullOrEmpty
使うものですよ
233:デフォルトの名無しさん
14/06/20 17:49:45.80 1hp3pFc2
CSV自体が欠陥規格だから、変換後のデータをよーく検証しないのが悪い。
234:デフォルトの名無しさん
14/06/21 09:09:56.44 OJ/lzG/j
Windows PowerShell 伊瀬
235:デフォルトの名無しさん
14/06/21 10:30:10.12 CuxdLLeL
伊瀬って人の名前かと思ったわ
236:デフォルトの名無しさん
14/06/21 11:10:30.86 5Gha9VrW
× 伊瀬
○ 伊勢
237:デフォルトの名無しさん
14/06/21 14:55:17.30 hhcyEr91
>>233
まあ表示させようとしたのはタブ区切りファイルなんだけどね。(「-delimiter `t」を指定)
ちなみにタブ区切りファイルの全行の末尾にタブ1個追加すると最終列も「-eq ""」で抽出出来た。
余談だけどOutGridViewの表示内容をコピーすると全行の末尾に余分なタブが付いてるのもこれ絡みに理由なんだろうか…
238:デフォルトの名無しさん
14/06/26 07:18:34.55 W91RvMJw
>>237
末尾のタブの有無じゃなくて
もしかして、ファイルの最後に改行が入って無いんじゃない?