【最強CUI】PowerShell -Part 1

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレなかったので立てました
2デフォルトの名無しさん:2013/09/12(木) 19:09:30.27
2GET
3デフォルトの名無しさん:2013/09/12(木) 21:50:46.13
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
4デフォルトの名無しさん:2013/09/13(金) 03:15:57.60
Part 1ではないようなきがする
5デフォルトの名無しさん:2013/09/13(金) 03:17:22.71
Windows@2ch掲示板
http://toro.2ch.net/win/
6デフォルトの名無しさん:2013/09/13(金) 03:18:32.31
7デフォルトの名無しさん:2013/09/13(金) 03:40:10.18
8デフォルトの名無しさん:2013/09/13(金) 06:50:15.28
1 デフォルトの名無しさん[] 投稿日:2012/03/22 02:42:21
柔軟で強力な機能と体系的な操作体系を両立した次世代シェルPowerShellのスレ
特徴
windowsに標準搭載
オブジェクト指向スクリプト言語を簡潔で少ない命令向けに改良したような文法
自然言語に近い文法
MSDOSやUnix系シェルの命令の代表的なものが使えて移行しやすい
windowsの挙動を簡単なコマンドで制御できる

開発元
http://blogs.msdn.com/b/powershell/
9デフォルトの名無しさん:2013/09/13(金) 06:51:13.32
8 デフォルトの名無しさん[sage] 投稿日:2012/03/23 01:10:52
Win7からPowerShell ISEが標準で搭載されるようになったけど流行らんな。
対話型で直接実行できて、PSのバッチファイル書くのにも使えて、ブレークポイント使ったデバッグもできる優れものなんだがなぁ

IT部門の管理者向けって感じだから仕方ないと言うのはあるけども
VSに入れると捗るぞ

・PowerGUI VSX
http://visualstudiogallery.msdn.microsoft.com/01516103-d487-4a7e-bb40-c15ec709afa3
・PowerConsole
http://visualstudiogallery.msdn.microsoft.com/67620d8c-93dd-4e57-aa86-c9404acbd7b3
10デフォルトの名無しさん:2013/09/13(金) 19:49:37.92
自作GUIシェル作る時に便利だね
11デフォルトの名無しさん:2013/09/14(土) 23:08:22.98
ただとにかく実行が遅い
12デフォルトの名無しさん:2013/09/15(日) 01:59:06.40
モジュールが強力だよな
特定目的に合わせて拡張できる
13デフォルトの名無しさん:2013/09/15(日) 13:12:39.19
荒れたスレにナゲット再び

 〃. ̄. ̄.ヽ
 |: : : |
 | : : :|
  ヽ._._./

http://monobook.org/wiki/NuGet
14デフォルトの名無しさん:2013/09/16(月) 21:34:37.45
なんか汎用性が無いと使う気になれない。
汎用性とはMacとLinuxでも動くということなんだけと。
15デフォルトの名無しさん:2013/09/16(月) 22:59:43.46
じゃあ使うなってこと
なんだかんだでMS漬けな顧客にとっては便利だしな
SUAで万全とは言わんなりに互換持ててるからな

まあcui自体時代遅れ。スマホ世代はコマンドプロンプトの存在知らんからな。
まあ有用なんはもう勝手に移植されるからな。勘違いクズアプリ屋もvse持っててクズアプリ量産してるようだけど、クズはクズ。

Macとか言ってたが、非互換性Winどころじゃないだろに話題に挙げられて逆に可哀想だな。SUSもやめたり初めたり、ポリシーゼロだぜ。ちったあ怒れよ消費者!
宗教じみたマカーじゃないと言われた予防線も貼っとくか。
マニア向けPCに過ぎない携帯屋持ち出す暇で、Linuxの最強シェルとかでっち上げてこね回していればいいじゃないの?
なにパワーシェル最強じゃないの?じゃあ何がいいの?まさかbas…ぷぺぺーwwww

で?ないでしょ。

ながっからしくなったけど、要はあんたただの馬鹿ってこと。
あんたの思う汎用性、来年には無に返してるかもよw
事例は山ほどあるわけで。さすがにここまでつつけば色々思い当たるやろ
16デフォルトの名無しさん:2013/09/17(火) 11:03:29.42
長い。アホか
17デフォルトの名無しさん:2013/09/17(火) 19:59:34.38
Linuxははやくパワーシェルをパクるべきだ
今時文字列をパイプするなんて笑っちゃうよな
18デフォルトの名無しさん:2013/09/18(水) 21:28:25.75
VBScriptに比べて便利?
19デフォルトの名無しさん:2013/09/18(水) 21:41:22.47
>>18
うん
20デフォルトの名無しさん:2013/09/18(水) 21:42:23.67
文法がわかりにくい。
将来性が不安だ。
コマンドレット?
ファイルオープンの仕方がわからない。
21デフォルトの名無しさん:2013/09/18(水) 23:25:58.35
同意
お勧めラッパーとかないの
python、rubyあたりでさっくり書けると嬉しいのだけど
22デフォルトの名無しさん:2013/09/21(土) 01:35:54.02
pashが頑張ってくれれば化けるかもしれない
unixを滅ぼしかねないほどに
23デフォルトの名無しさん:2013/09/21(土) 19:23:45.08
ラッパーとかなんもわかってねえじゃん・・・
perlやjavascriptみたいにCライクな勘では使えないけど
ちょっと時間とって覚えれば使えるから。
騙されたと思って勉強してみろって
24デフォルトの名無しさん:2013/09/21(土) 20:54:55.51
VisualStudio使わずに高機能なGUIをサクサク作れるのがいいね
25デフォルトの名無しさん:2013/09/22(日) 02:26:49.39
はようwindows以外でもまともに使えるようになってくれ
sedで文字列を抜き出すような泥臭い作業はもう嫌だお
26デフォルトの名無しさん:2013/09/26(木) 12:25:20.13
pashというか、unixのshellってbashとかせいぜいzshあたりが高性能とされてるけど、もっと根本的に作り替えようって動きはなかったのかな
文字列操作のしにくさとかひどいよな
27デフォルトの名無しさん:2013/09/26(木) 17:56:08.27
そのうちJavaがパクるだろ
28デフォルトの名無しさん:2013/10/05(土) 19:28:19.44
やっぱJavaがいいね
29デフォルトの名無しさん:2013/10/08(火) 01:48:23.25
それはない
でもPowerShell使ってるとMSの手のひらのうちだなーって思ったりはする
bashと比べたら全然いいのに、諸々込みで結局お仕事はbashな毎日
職場からマカー消えてくれればいいんだが
30デフォルトの名無しさん:2013/10/08(火) 06:55:40.28
ないなら作れ
Javaなら一通り揃ってるから簡単だろう
31デフォルトの名無しさん:2013/10/08(火) 21:25:14.52
Javaシェルか
あまり知らんけどJavaランタイム上で動く言語とかあるんだしありかもな
32デフォルトの名無しさん:2013/11/13(水) 21:31:48.16
Version 3で起動したスクリプトからVersion 2でスクリプトブロックを実行したいのですがどうすれば出来ますか?
33デフォルトの名無しさん:2013/12/17(火) 10:10:30.04
PowerShellの概念は強力だと思う、速度は別として最強でしょ
34デフォルトの名無しさん:2013/12/17(火) 14:40:16.62
まあ異論はない
MS以外でも使いたいとか速度こそ究極とか異論がある奴はいると思うけどね
35デフォルトの名無しさん:2013/12/17(火) 18:05:07.68
いちいちパイプラインのパースしなくていいからパフォーマンスでも有利な気がするが遅いのか?
36デフォルトの名無しさん:2013/12/20(金) 00:56:04.07
フリーソフトがcmd用のコマンドラインを幾つか提供してある場合があるが、
PowerShellは利用できるのか?

扱うファイルはcp932以外だと文字化けしてしまうのか?
対処方法はPowerShellになってからあるのだろうか?
37デフォルトの名無しさん:2013/12/20(金) 08:22:58.41
cmdで使えるコマンドはみんな使えるし
使いにくいならラッパーコマンドを書けばいい
38デフォルトの名無しさん:2013/12/20(金) 12:22:53.46
>>37
ありがとう。usb外すコマンドライン用のソフトとか
幾つかのフリーソフトを使ってたから助かる。


「文字化け」問題はnkf32が実装で対応できるっぽいね。
長いけどPowerShellによる変換コマンドもあるようだ。

cmdの方がウィンドウズ8.1でもメンテ入ってないような仕上がりだったので
PowerShell学ぶわ。ありがとう。
39デフォルトの名無しさん:2013/12/20(金) 21:18:01.86
C#やVBのコードを書いてコンパイル以外にPowerShellからクラスを追加する技術は有りますか?
40デフォルトの名無しさん:2013/12/22(日) 01:08:25.77
>>39
こういうことではなく?
Add-Type @"
public class Hoge { public int x; }
"@

$x = New-Object Hoge
41デフォルトの名無しさん:2013/12/29(日) 11:16:29.24
違います
42デフォルトの名無しさん:2014/01/03(金) 16:07:43.27
「Powershellからクラスを追加」

どこへ追加したいんだ?
43デフォルトの名無しさん:2014/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デフォルトの名無しさん:2014/01/03(金) 20:26:32.08
>>37みたいにラッパーコマンドを書けばいい
とか言ってるけどちょっとだけ追加するとかだと返って一苦労になるんだよね
例えば複雑なバッチファイルにちょっとpowershellのコマンド書きたいとか、できないしね
バッチとかの遺産はそのまま使えないと思った方がいい
45デフォルトの名無しさん:2014/01/11(土) 00:01:38.07
ISE みたいにプロンプト等へのコマンド入力や結果出力と
Read-Host とか Write-Host、[Console]::Writeline なんかを分離したければ
自力でホストを書かないと無理なんだろうか。

powershell -Command - でパイプでつないで他プログラムから使おうとしてるんだけど
Read-Host なんかの対応がすっきりしない。
46デフォルトの名無しさん:2014/01/20(月) 05:25:29.55
単純に全てがオブジェクトになってるってのがプログラマなら面白がるよね
rubyあたりから手できそうでなかったアプローチだ
5年以上経った今となっては目新しくもなんともないけどw
47デフォルトの名無しさん:2014/01/20(月) 05:26:59.35
勝手に独自のwebclientコンポーネントを
curlとかwgetとか名付けてるのはあかんわ
あかんとこもけっこうある
48デフォルトの名無しさん:2014/01/20(月) 09:12:21.99
文法がもうちょい C# (っていうか C っぽいの)を受け付けてたらプログラマ受け良かったんだろなと思う。
49デフォルトの名無しさん:2014/01/24(金) 15:18:36.81
webページにPOSTしてゴニョゴニョするスクリプトを
すぐに書けたはいいんだが.netやってる人はお馴染みの
サーバーによってプロトコル違反が発生しました.
エラーが出て困った
結局powershell.exe.configなんてのを作るはめに・・・これはダサい
50デフォルトの名無しさん:2014/01/25(土) 02:41:18.03
Out-File -FilePath "Test.txt" -InputObject "test"

かっこよすぎワロタ
51デフォルトの名無しさん:2014/01/25(土) 13:34:46.99
powershellを起動させると他のEXCELなどのアプリと同じようにタスクバーにアイコンが表示されますが
起動させたpowershellから何らかのコマンドを実行してこのアイコンを点滅させることはできますか?
つまりpowershellが他のウインドウの下に隠れている場合などでもユーザーに気づかせたいのです。
具体的にはps1ファイルを実行して処理が完了したら、ps1ファイルを実行しているpowershellの
タスクバー上のアイコンを点滅させたいのです。
52デフォルトの名無しさん:2014/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秒後にペカペカ光ったよ。

http://gallery.technet.microsoft.com/scriptcenter/Invoke-FlashWindow-df3d6762
53デフォルトの名無しさん:2014/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デフォルトの名無しさん:2014/01/25(土) 20:20:49.34
まああくまでバッチ処理レベルだしねえ。期待されてるのは。
なんでも出来る感じもするけどそれって結局 .NET がすごいからであって
55デフォルトの名無しさん:2014/01/25(土) 21:49:57.99
ゴミ
56デフォルトの名無しさん:2014/01/26(日) 09:00:16.19
>>53
>時刻を取って秒が変動するまで

よく意味がわからない…
57デフォルトの名無しさん:2014/01/26(日) 09:31:04.45
>>52
うわピカピカ光った!
どうもありがとう〜!

でもこれって引数とか沢山あるけど、もう単純に「呼ばれた瞬間に3回点滅!」みたいにして
短く出来ないかな?
いま仕事してる現場で使いたいんだけど、ネット出来ない環境だしUSBメモリとかも使用禁止だから
このスクリプト印刷して持っていって自分で打ち込むしかないんだけど
コメント部分除外してもスクリプトが長いから、打ち込むの遅い自分にはつらい…
書き換えようとトライしたけど自分には高度過ぎて無理だった…
58デフォルトの名無しさん:2014/01/26(日) 09:33:03.88
多分加算命令数/秒ってことでしょ?
ループの1処理ごとに時間取って比較してるのかねえ。

だとすると加算処理の速度比較っていうよりシステムコールの速度比較みたいなもんだな。
あと選別した言語に HSP とかなんで入ってるんだ?
Java とか ruby とか python はどこいったんだ。
59デフォルトの名無しさん:2014/01/26(日) 10:09:37.62
>>57
削れたのほぼコメントぐらいだけど書いてみたよ。
http://pastebin.com/VwEt2EG8

引数もなにもなくて、Invoke-FlashWindow すると powershell が 3回光る。
光る回数とか変更したかったら fInfo.uCount = 3 を書き換えてくれ。
6057:2014/01/26(日) 11:36:54.99
>>59
時間のかかる処理をするps1ファイルの先頭にこれ入れて、最終行を「Invoke-FlashWindow」にしたら
処理完了時にバッチリ光りました!
せっかく書いてもらったので絶対打ち込みます!(・`ω´・)
ありがとうございました!
61デフォルトの名無しさん:2014/01/26(日) 12:31:24.93
PowerShellもそこそこ補完できるようになって来たけど、C#のコードはさすがに無理だからなー
Roslynが完成すればTabExpansionからIntelliSense呼び出すとかできるかもしれんが
62デフォルトの名無しさん:2014/01/26(日) 17:48:22.43
>>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デフォルトの名無しさん:2014/01/26(日) 18:43:15.03
>>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デフォルトの名無しさん:2014/01/26(日) 19:06:04.20
どうせやるなら100万回ループするのに何msec掛かるかを図った方が変なロスはないと思うよ
折角Measure-Commandで時間測れるんだし
65デフォルトの名無しさん:2014/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# とか呼び出してるんだろうか。
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
何が言いたいのかよくわからんなあ
それでpowershellはダメだと言いたいわけ?
67デフォルトの名無しさん:2014/01/27(月) 19:42:07.25
普通にプログラミング言語っぽいしプログラム板にスレ立ってるけど
速度は遅いから重い処理を記述するのには向かないということを
自殺ベンチ
もとい、自死ベンチ
あれ?
自作ベンチ結果を披露しているわけだが
それでは不満か。

そう言えばバッチファイルのスレもこの板だったか。
記号だらけでWebだと検索しにくいんでお世話になってる。

自分で遅いというのは確認したけど
C#のコードで高速化もできるし自分の用途の範囲で問題ないと思っているんで
今ちょっと PowerShell を勉強中だから
全然ダメじゃない帝人。

長々と書いたのを「そんなこと言ってない」の一言に置換しようかと思ったけど気にせず投稿
68デフォルトの名無しさん:2014/01/27(月) 20:57:22.58
いや、はじめからそういう環境だってわかってみんな使ってるとおもうんだが・・・
69デフォルトの名無しさん:2014/01/30(木) 17:20:55.49
シェルでループの速度を測る意味が分からない
70デフォルトの名無しさん:2014/02/02(日) 12:59:46.48
サーバや、他人のPCでちょいと作業をするときにこそ役立つ。
自分の開発PCだったら、他にもっといいツールがあるし。

そんなわけで、早く Ver3以上 が標準の世の中になってほしい。
71デフォルトの名無しさん:2014/02/02(日) 17:43:09.23
俺は別にV2(=Win7標準環境)でもいいと思ってる
V1でもそこまで困らんけど、プリインスト機がまずないし
72デフォルトの名無しさん:2014/02/02(日) 19:36:05.65
ちゅうか、なんだかんだでPowerShellって言語の更新サイクル早いね
Windows依存の功罪というかなんというか
73デフォルトの名無しさん:2014/02/03(月) 00:00:47.83
GUIアプリが作れるようになるといいんだけど
74デフォルトの名無しさん:2014/02/03(月) 00:25:42.02
現状でも別に作れないことはないっしょ。Windows Form 使えるんだし。
75デフォルトの名無しさん:2014/02/05(水) 13:34:41.80
WPFでもかけるというかむしろそっちのが相性いいからちょっとした社内ツールなら楽に作れる
76デフォルトの名無しさん:2014/02/05(水) 13:56:46.58
もっとも普通は VS Express あたり落としてきて
GUI エディタでぽんぽんぽーんって作ったほうが早い気もするが
77デフォルトの名無しさん:2014/02/06(木) 07:36:08.61
ぽぽぽぽーん♪



を思い出した。
78デフォルトの名無しさん:2014/02/08(土) 17:47:23.21
gci "C:\hoge.txt" | select-string "abc"

でテキストファイルの内容検索すると結果が「ファイル名:行番号:内容」という形式で表示されますが
行番号と内容だけ表示することって出来ないのでしょうか?
79デフォルトの名無しさん:2014/02/08(土) 20:21:13.40
オブジェクトをパイプでつなげてselect linenumberみたいに欲しいプロパティを指定する
オブジェクトにどんなプロパティがあるかはget-propertyで調べられるよ
80デフォルトの名無しさん:2014/02/08(土) 20:23:17.58
ごめんget-memberだった
81デフォルトの名無しさん:2014/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>
8278:2014/02/08(土) 23:48:58.04
>>79
gci "C:\hoge.txt" | select-string "abc" | select linenumber,line

でいけました。ありがとう!


>>81
PSビギナーの自分にはハードル高すぎました。すみません…
83デフォルトの名無しさん:2014/02/09(日) 10:36:45.41
>>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デフォルトの名無しさん:2014/02/09(日) 14:19:38.26
>>82
コピぺして拡張子をformat.ps1xmlで保存してコマンド実行すればいいはずだが・・・
あ、$_.FileNameは$_.LineNumberの間違い
まあここまでやる必要もないとは思うけど

>>83
あらほんと。
昔は別の名前で無料で公開されてたんだけどな、って検索したらこっちっぽい
会員登録は必要らしいけど無料だそうな

PrimalFormsCE
ttp://www.sapien.com/software/communitytools#PrimalFormsCE
85デフォルトの名無しさん:2014/02/18(火) 16:33:16.97
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
>>83
俺の場合は、VS Expressで画面作って
そのXAMLファイルを[string]get-contentで読み込む関数つくってる
(頭のclass文だけは削除するようにしてる)。
だから、ぺたぺた貼って、PowerShellでメニュー画面作り。
その仕組みは20分くらいで作っちゃったよ。
87デフォルトの名無しさん:2014/02/22(土) 00:01:57.77
普通に VS Express で完結しちゃったほうが早くね?
88デフォルトの名無しさん:2014/02/22(土) 11:35:52.82
>>87
いちいちコピペするの面倒じゃん。
VS ExoressでPowerShell作成環境ないから完結しないし。
89デフォルトの名無しさん:2014/02/22(土) 11:40:54.69
いや powershell 使わんで C# あたりで完結しちゃったほうが早くないかねと。
90デフォルトの名無しさん:2014/02/22(土) 11:43:51.49
そりゃものにより。
91デフォルトの名無しさん:2014/02/22(土) 12:11:48.57
Roslyn完成したらISEにC#環境とGUIデザイナ組込みーみたいなのはそのうち出るだろう
92デフォルトの名無しさん:2014/02/22(土) 12:31:05.56
Roslynでてくると
その次は、それを利用したもっと新たなステップの
スクリプトが出てきそう。
ヘルスバーグはいつも楽しませてくれる。
とはいえ、まだ先の先だけど
93デフォルトの名無しさん:2014/02/23(日) 18:34:10.77
ここ↓に載ってるLINQでの問い合わせのコードってPowerShellでもそのまま使えるの?
http://www.atmarkit.co.jp/ait/articles/0803/25/news150_2.html

テーブルから取ってきた値を1個表示とか簡単なのでいいんで書き方教えて欲しいです…
94デフォルトの名無しさん:2014/02/23(日) 18:52:54.65
そもそも拡張メソッドに対応してないんだから、クエリ式なんて使えるわけないじゃないですかー
Roslynが完成すれば、Invoke-C#みたいなの作って、
部分的にC#コードでLINQクエリ実行する、みたいなことはできるかもね
95デフォルトの名無しさん:2014/02/26(水) 20:55:45.48
会社で他の人が書いたPowerShellのソースを見てて
「If($? -eq $false)」っていう記述があったんだけど、この「$?」って何なのでしょうか?
96デフォルトの名無しさん:2014/02/26(水) 20:57:48.38
>>95
help automatic_variables
> $?
> 最後の演算の実行状態を格納します。最後の演算が成功した場合は TRUE、失敗した場合は
> FALSE を格納します。

UNIX のシェル由来だね。と言いたい所なんだけど $$ とか全然違うしなあ。
97デフォルトの名無しさん:2014/02/27(木) 02:21:37.54
unixとかawkとか、既存のツールから由来してる機能は多いよ
beginやendのブロックとか
98デフォルトの名無しさん:2014/02/27(木) 17:48:58.25
PowerBoots: PowerShell で WPF が使えるツールキット
http://blogs.technet.com/b/stanabe/archive/2009/05/01/powerboots-wpf-powershell.aspx
Windows PowerShell で WPF アプリケーションを構築する秘訣
http://msdn.microsoft.com/ja-jp/magazine/hh288074.aspx
99デフォルトの名無しさん:2014/03/01(土) 12:12:09.21
パイプライン指向だか何だか知らんが、
functionにおけるreturnの扱いにくさだけは何とかしてくれんかな。
外部コマンド(Cmdletではない)実行する度に、それらの出力をnullやら他に逃さないと、
returnが汚れるのが激しくめんどくさい。
100デフォルトの名無しさん:2014/03/01(土) 13:20:31.29
>>99
ん?
具体的なところがよくわからないんだけど
どんな感じのことを言っている?
101デフォルトの名無しさん:2014/03/01(土) 13:48:34.89
function Out () {
"hoge"
return $true
}
102デフォルトの名無しさん:2014/03/01(土) 13:53:41.97
その例の場合だと、書き方としては
function Out () {
"hoge"
}
となるんだけど。
103デフォルトの名無しさん:2014/03/01(土) 13:58:52.35
関数内で変数を使って
かえしたれば
function Out () {
$a="hoge"
$a
}
または
function Out () {
$a="hoge"
return $a
}

returnのところは
return($a) でもいい
104デフォルトの名無しさん:2014/03/01(土) 14:17:36.86
>>101
要はこの例でいえば
自分で2つ返す(hogeとtrue)コーディングをしているので
余分と思われるものがでてる。
105デフォルトの名無しさん:2014/03/01(土) 14:23:50.15
例えば SetSomething みたいな値をどっかに設定するのとか
DisplaySomething みたいな値をどっかに表示するのみたいなので成功したか失敗したかを返すような、
どっちかというと所謂副作用部分がメインの関数があったとして、
それをそのまま呼び出すと戻り値要らないのに一連の戻り値に入っちゃうのがうっとおしいって話じゃね。

C なんかでいうところだと printf の戻り値なんか普通ほったらかすのにいちいち (void) でキャストしたり
適当な変数に代入して読み捨てしないと戻り値に入っちゃうみたいな感じね。

まあそういう言語なんだって言われたらそれまでの話なんだけど。
106デフォルトの名無しさん:2014/03/01(土) 14:24:11.73
自分ではっきり出力してればいいけど
普段何も返さないコマンドがエラーメッセージとか返して来たら困るね。
107デフォルトの名無しさん:2014/03/01(土) 14:26:04.46
>>102-104
ごめん。
そもそもの言い方が悪かったけど、
functionを、他言語の”関数”と同じように、呼び出し側からはreturnだけを受け取りたいってこと。

関数内で変数を使って
かえしたれば
function Out () {
$a="hoge"
$a
}

でやっていることは、$aに代入することによって、パイプラインに流れるのを阻止した状態。
これを、外部コマンドに対して行う場合は、

$a = $(外部コマンド)
[void]$(外部コマンド)
外部コマンド | Out-Null

などなど。

>>106
その通りでございます。
108デフォルトの名無しさん:2014/03/01(土) 14:27:35.99
明示してないものまで戻り値に含まれるってのは他の言語と比較すると特異ではあるわな
109デフォルトの名無しさん:2014/03/01(土) 14:37:28.46
c#のoutがあればね。
refはあるんだが。
110デフォルトの名無しさん:2014/03/01(土) 14:43:03.21
>>108
あ、俺のレベルでその意味わかんない
111デフォルトの名無しさん:2014/03/01(土) 14:50:34.97
>>108
return文に指定していないものまでという意味ですか。
112デフォルトの名無しさん:2014/03/01(土) 15:32:48.27
>>111
そういうこと

明示しない場合は最後の式の値が戻り値になる、なんてのは結構あるけど
頭から最後までの式の結果を連結して返されるってのは「関数の戻り値」って考えると見たこと無い。

戻り値じゃなく出力って考えるとパイプラインのことと相成ってスッキリするんだけどね。
113デフォルトの名無しさん:2014/03/01(土) 16:40:40.92
>>112
なるほど。
出力ということですね。
returnは、関数内でステートメント終了!の意味なんだろうな。
ってことは、常にreturn値だけをとりたいときは、安心のために。
$a=Out
$a.[$a.Count-1]
てな感じになるのかな。
114デフォルトの名無しさん:2014/03/01(土) 17:42:47.70
おっと
$a=out
$a[-1]
でよかった。
115デフォルトの名無しさん:2014/03/01(土) 18:46:25.77
それぞれ、悩む点が異なるので
いろいろ勉強になるな〜
116デフォルトの名無しさん:2014/03/01(土) 23:04:20.14
>>101
例に突っ込んでもしょうがないかもしれんが
文字列を直接埋め込んで何もしないって状況がありえなくね
echo hoge ならともかく

$a = New-Object Collections.ArrayList
$a.Add(100)
return $a

とかなら分かるけど
117デフォルトの名無しさん:2014/03/02(日) 17:14:32.59
>>116
おれもよくわからないんだけど。
無いんじゃないかな。
あるいは途中でのチェックのために入れたいとか。
だとすると、他の書き方をするべきなんだけど。

ともかく
他の言語だったらエラーで、そういう記述ができないんじゃないかな。
他の言語の関数だと、明示的に出力指定すると戻り値としてでなく、
コンソール出力等に返され、戻り値には入らない。
それを言っているんだと思う。


PowerShellで他言語と同じように使用したいなら、
他言語と同じような使用方法を守れば問題ないんだと思う。
たとえば、ファイル一覧をほしくて関数としてdirを使うなら。

function Out{
$dir = dir
Write-Host $dir
return $ture
}

$kekka=Out

とすれば戻り値の結果$kekkaには余分なものは入らない。
要は、PowerShellは融通が利いちゃうんで戸惑ってる
ってころじゃないのかな?
他の言語でできないことができちゃうってことでしょ。
118デフォルトの名無しさん:2014/03/02(日) 17:16:35.00
捕捉だけど

>無いんじゃないかな

PowerShellの場合だと、それをわざと利用することはあるが、
他言語ではそういう使い方できないだろうという意味。
119デフォルトの名無しさん:2014/03/02(日) 17:22:32.45
質問からの例でいえば( >>101 の例でいえば )
本来は

function Out () {
Write-Host"hoge"
return $true
}

と記述する必要があるということでしょ。
外部関数を中で使うなら

function Out () {
$a=外部関数()
Write-Host $a
return $true
}

ってな感じですね。
実際、私はそういう記述してる。
120デフォルトの名無しさん:2014/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デフォルトの名無しさん:2014/03/02(日) 19:20:11.13
>>119
だから、その書き方とかキャストや、あるいは戻り値を参照渡しする、とかがめんどくさいんでしょ。
122デフォルトの名無しさん:2014/03/02(日) 19:21:03.27
うわ、かぶったw
123デフォルトの名無しさん:2014/03/02(日) 19:42:56.62
>>120
そっか勉強不足だった。
Cは使わないけど。ってことは、コーディング上では、
int main() { "hoge";printf("hello\n"); return 0; }
と書いても、コンパイラーでhogeは無視してくれるのか。しらんかった。
エラーかと思ってた。
出したいときは別途記述が面倒かもしれないけど。

画面といったのは"hoge"も別途必要としたから記述したのだと理解した
関係。
124デフォルトの名無しさん:2014/03/02(日) 19:57:35.48
powershell でいうところの (関数)[-1] って呼び出しが他の言語の一般的な関数呼び出し、って言えば何の話なのかわかってもらえるんじゃね。
125デフォルトの名無しさん:2014/03/02(日) 20:01:18.83
まあ、そういう仕様としかいえないよな。
俺の場合だと、XAMLを関数内で組み立てるときにPoowerShellの関数
使用は重宝してる。
普通の言語だと、逆にくっつける操作が必要になるので煩雑になっちゃう。
return文自体使わないけど。
使う場面次第だな。
126デフォルトの名無しさん:2014/03/02(日) 20:08:16.13
パイプラインで出力をつないでいく設計思想だからねえ。
127デフォルトの名無しさん:2014/03/02(日) 20:16:15.40
関数自体から返るものすべてがオブジェクトだと
認識しないといけないね。
128デフォルトの名無しさん:2014/03/02(日) 20:20:34.62
成否を返す関数との相性は悪いよな
あと複数結果返す関数でいえば結果が一個の時と複数の時でタイプが変わるのが気持ち悪かったわ
$x = ls とかやったときにファイルが複数あると $x.GetType() => Array だけど
一個しか無いと $x.GetType() => DirectoryInfo ときたもんだ

@()で呼び出しゃいいんだけど
129デフォルトの名無しさん:2014/03/02(日) 20:21:58.90
あくまでシェルであって言語としてはかなり歪だと思う
130デフォルトの名無しさん:2014/03/02(日) 20:29:09.68
>>129
そりゃ旧来のシェルのほとんどは単なる文字列操作にすぎないからね。
131デフォルトの名無しさん:2014/03/02(日) 20:32:39.91
いや、言語としてはいいと思う。
が、シェルだと考えると、
.NETやコマンドレットだけじゃなく、外のコマンド・プログラムをたくさん使うことになるわけなので、
それらの戻りを全部把握して処理しないといけないのは、結構大変なことだと思う。

嵌って、「パイプラインすげー」と思う人、「なんだこれ、使えねーw」と思う人それぞれ。
132デフォルトの名無しさん:2014/03/02(日) 20:33:12.58
>>128
初めは俺も思った。
なれたらこの方が便利だけど。
returnの役割は、スコープ終了と、リターンコードを返すための利用。てな感じ
なんだろな。
結果とリターンコード両方が取れるのは、俺にとっては便利。
133デフォルトの名無しさん:2014/03/02(日) 22:50:50.92
>>120
いや俺が>>116で言ったのは、文字列だけ書いたらそれが画面に表示されるってのはPowerShellくらいだから(ないことはないだろうけど)
他の言語の感覚で文字列だけ書いてたら出力に混じって嫌だって例文は違和感があるって話

printfの感覚で echo hoge って書いたら出力に混じるから困惑したってことなら分かるけどって意味

だから出力が混じって困る例なら、たとえばC#で戻り値があることを意識してないメソッドを呼ぶような例がいいんじゃないか、ってんで>>116で書いた
確かに最終版はともかくデバッグ中は文字列埋め込むこともあるかもしれないけどね
134デフォルトの名無しさん:2014/03/02(日) 23:05:47.11
なんか出力と戻り値を取り違えてる奴がいるからややこしくなったんだろな。
あと例もよくなかった。
単に戻り値を返す適当な処理を書いとけば出力がどうのって話にならなかったんだと思う。
135デフォルトの名無しさん:2014/03/02(日) 23:31:47.97
本買って読めとまでは言わんけど、man about_Returnにすら書いてあることくらいは読もうぜってことで
136デフォルトの名無しさん:2014/03/03(月) 22:10:36.75
【メモ】
write-output write-hostの違い。
ググって出てくるのは、色が付けられるとか、空行がどうのとか、そういうことばかり。

write-output "foo"
echo "foo"
"foo"
は全部同じで、パイプラインに出力。

write-host "bar" | gm
(エラー)
つまり、write-hostは、コンソールへの直接出力(パイプライン経由ではない)。
137デフォルトの名無しさん:2014/03/03(月) 22:55:59.13
コンソールっていうかホストプログラム全般な
画面へ出力することを前提としているから色を指定できる
あとSnover泣いちゃうからまずヘルプ読んであげて
138デフォルトの名無しさん:2014/03/06(木) 18:15:30.08
win8.1でヘルプが入ってなかったから、update-helpしたわけだが、英語版しか入らなかった('A`)
139デフォルトの名無しさん:2014/03/06(木) 23:40:23.45
英語を勉強するチャンス!
140デフォルトの名無しさん:2014/03/06(木) 23:44:05.55
>>138
これは実績もあるイルカに期待するしかないかw
141デフォルトの名無しさん:2014/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デフォルトの名無しさん:2014/03/08(土) 10:57:34.76
7だと最初から入ってたよね。
だから、2008R2でも特になにもしなくてもリファレンスは使えてた。
2012R2だと、どうなんだろ。
サーバの場合、インターネットに直接繋げないケースも多いわけで。
WSUSではたぶん面倒見てくれないから、SCCMとか使うのかね。
143141:2014/03/08(土) 15:49:20.02
漏れはWin8だけど、
C:\Windows\System32\WindowsPowerShell\v1.0 中の、
en-US フォルダの中には、powershell.exe.mui
というファイルが一つあるだけ

これを、ja-JP フォルダにコピーすれば良いのか?
ただし、ja-JPにもすでに、同名のファイルがある

同名のファイルだが、ファイルのサイズは違う
前者は11KBで、後者は9KB

このファイルは何だろう?
ヘルプファイルをダウンロードするプログラムか何か?
144141:2014/03/08(土) 16:26:47.96
powershell と同じフォルダにある、
デバッグ用のpowershell_ise の方が使いやすい

右のコマンド一覧から、
コマンド + オプションを選んで実行できる
145デフォルトの名無しさん:2014/03/08(土) 16:30:57.24
最近のISEはコマンド一覧とかついてるんか
146デフォルトの名無しさん:2014/03/26(水) 20:18:38.26 ID:LfplOf8O
真面目な話、
・Windows Server のユーザーである
・管理系のスクリプトを作りたい
・先の見えてる .bat や .vbs よりかは将来性がある
しかし、これらを全て満たす状況じゃないと「憶えても無駄」な嫌な匂いがプンプンしてくる、という感想を抱く。
PowerShell 推しな記事がこぞって 4〜5年前だったりするし。記事が古いから役に立たないし。

でもこれからの Windows Server 管理(特に MS 製サーバーアプリ)には必須、みたいな匂いもプンプンしてくる。
管理者系の人間が嫌々使ってる、というイメージなんだけど、実際はどうなの?
147デフォルトの名無しさん:2014/03/26(水) 22:08:56.67 ID:Fzs/8hFo
そんなところじゃないの?
開発案件だったらわざわざこれを選ぶ人はいないだろうし
148デフォルトの名無しさん:2014/03/26(水) 22:54:04.60 ID:3UAaFn0/
batは低機能過ぎるし、vbsは糞言語のうえシェルじゃないし。
149146:2014/03/27(木) 18:33:56.87 ID:w9DVguFT
>>147
だよねぇ…
泣きながら学ぶことにするよ…

>>148
ええと、シェルとしての PowerShell については何も言ってないのだが…。

VBScript は言語としてはそんなに悪い言語じゃないと思ってる。
ちょっと凝ったことをやろうとすると COMオブジェクトに頼るしかなくて、おもくそ環境依存、意地になって自前実装するとウルトラ遅くなる駄目な子、というとこなら同意。

シグナルのハンドリングというところまで極めてはいないのでそこは了承願いたい。
エラーを raise できるのは知ってるが、はて SIGKIL とか SIGHUP とかを外部から受け取った時はどうだったっけ、な感じなんで。
150デフォルトの名無しさん:2014/03/27(木) 22:54:36.60 ID:5oUWcvgH
ム板で言ってもしょうがないが、そもそも開発案件で候補に挙がるような言語じゃないだろう
シェルスクリプト/ツールとして使う分には普通に便利に使ってるけど
151デフォルトの名無しさん:2014/03/30(日) 07:01:13.94 ID:4uJ25Yxc
これがそうでもない。
プロト的につかったり
メニュー画面がらみ案件に使ったり
相当使える。
152デフォルトの名無しさん:2014/03/30(日) 07:30:21.97 ID:Ym7n0+3V
そんなのVSでポトペタの方が早いじゃないですかやだー
153デフォルトの名無しさん:2014/03/30(日) 12:03:12.26 ID:1u4x9v7e
>>152
画面はVSでポトペタをそのまま使える
PowerShellでホストする。
めちゃくちゃ簡単になる。
154デフォルトの名無しさん:2014/03/30(日) 13:20:00.33 ID:RDnNVplQ
>>152
それ、VSの立場が理解できてないんだとおもうぞ
155デフォルトの名無しさん:2014/03/30(日) 13:40:34.98 ID:o9ag65ui
納品用のPCに泣きながらVSをインストールする>>152を目撃したという未確認情報が入りました
156デフォルトの名無しさん:2014/03/30(日) 15:51:48.19 ID:RDnNVplQ
>>152
たとえばWPFなら、VSで作る画面(XAML)をC#で使えるよね
これはC#用に作っているわけじゃなく、XAMLとして作られている。
独立したものなんです。これがコードビハインドという考え方。

だから同じものをVBでも使えるよね。
同じようにPowerShellでも使えるんです。
イメージわかってくれたかな?

知っているかもしれないけど、ついでなんで、
バインドという考え有るよね。
これを組み合わせるとJavaなどと比べて何倍も高い開発効率を
生めるのが、現在の.NETの世界となってきている。
なんで、Javaやめて戻ってきた次第。
157デフォルトの名無しさん:2014/03/31(月) 00:31:05.84 ID:3P7ATE0k
>>153
すいませんが、アホの俺にもわかるように教えて下さい。
Powershellでホストするって?
158デフォルトの名無しさん:2014/03/31(月) 00:37:28.56 ID:3P7ATE0k
http://d.hatena.ne.jp/ladybug/20111204/p1
こういうことですか?
159デフォルトの名無しさん:2014/03/31(月) 00:51:18.63 ID:HPrdAsyG
xamlでUI作ったらPowerShellから読み込んでShowDialog()で呼び出すってだけじゃ?
160デフォルトの名無しさん:2014/03/31(月) 06:31:38.92 ID:nFhjZp0H
$arr=ls
$arr.Name
$arr.fullname

Nameでファイル名、fullnameでフルパスを取り出すのは便利
ただし、入力補完ではこれらの候補が出ない
161デフォルトの名無しさん:2014/03/31(月) 09:16:41.02 ID:ObzhI129
>>160
そもそも ls.Nameってあったけ?
162デフォルトの名無しさん:2014/03/31(月) 13:34:02.17 ID:FswzEzL9
>>160
ls -Nameの間違いかな?

$arr=ls
$arr -Name
としたいということだとすると、無理じゃないかな
new-alias arr ls
arr -Name
ならいけるけど
163デフォルトの名無しさん:2014/03/31(月) 13:42:03.34 ID:Z/deP/O+
>>156
データバインドって、Angularのやってるアレ?
スクリプトならnashornで書く方が速いんじゃないの
164デフォルトの名無しさん:2014/03/31(月) 13:56:19.72 ID:FswzEzL9
>>163
そういうのは好きなのえらべばいいんじゃないかな。
165デフォルトの名無しさん:2014/03/31(月) 14:04:39.44 ID:Z/deP/O+
いきなり他の言語を使えって言われても、コンテキストを思い出せないんだよ
Excel VBAがExcel JScriptに置き換わったら、いよいよだと思うね
166デフォルトの名無しさん:2014/03/31(月) 18:14:36.06 ID:fvBhjMHZ
powershell の意味不明な文法はどこ由来なんだろう
167デフォルトの名無しさん:2014/03/31(月) 19:19:51.23 ID:HPrdAsyG
>>161-162
Member Enumerationといって、V3からコレクションの各要素のメンバーにアクセスする機能が追加されたんだよ
ttp://blogs.msdn.com/b/powershell/archive/2012/06/14/new-v3-language-features.aspx
168デフォルトの名無しさん:2014/03/31(月) 19:45:07.51 ID:2sfUKmxl
いちいちselectしなくても良くなったってことか
それは助かる
169デフォルトの名無しさん:2014/03/31(月) 21:39:20.66 ID:FlSL2ost
>>167
それなら、書き方が違うと思うぞ
$arr=ls
$arr.Name
はできないでしょ

$arr=(ls)
$arr.Name
なら可能だけど、
それでも
入力補完はしてくれないね。
170デフォルトの名無しさん:2014/03/31(月) 23:13:53.29 ID:HPrdAsyG
>>169
いやどちらでも通るよ?
入力補完はそりゃ利かないだろうけど
171デフォルトの名無しさん:2014/04/01(火) 00:13:09.13 ID:n+62zDt+
>>170
ごめん、通った
172デフォルトの名無しさん:2014/04/01(火) 21:14:46.98 ID:XUx13Ibi
>>167
意外だ。3まではできなかったのか。
powershellの()とか$()ってオブジェクトがそのまま却ってくると理解してて、その書き方が当たり前と思ってたわ。
173160:2014/04/02(水) 02:37:09.60 ID:iqksnACc
$arr=ls
$arr.Name
$arr.DirectoryName
$arr.FullName

Nameでファイル名、DirectoryNameでフォルダまでのフルパス、
FullNameで、ファイル名付きフルパスを取り出す

入力補完は、
$arr. で配列のメンバが、
$arr[0]. で配列中のファイル情報のメンバが表示される
174デフォルトの名無しさん:2014/04/02(水) 03:15:22.54 ID:DfhRYDJb
ps初心者におすすめの書籍やサイトありませんか?
175デフォルトの名無しさん:2014/04/02(水) 10:47:02.26 ID:rXi4eJBj
powershell in actionのセカンドエディションが何故出ないんだろう・・・
英語読めんから、日本語版でてもらいたいんだけど
176デフォルトの名無しさん:2014/04/02(水) 15:40:49.84 ID:mZJZP6QO
>>174
やはりTechNetじゃないかい
177デフォルトの名無しさん:2014/04/02(水) 17:16:43.20 ID:m0GxFAWI
powershellって、本は少ないよな
というか、読んだことない
日本語の情報も少ない
powershellはバージョンアップで結構大きく変わってるから、ネットの情報も古いのはあまり役に立たない
178デフォルトの名無しさん:2014/04/02(水) 17:36:21.91 ID:wdgZMuKf
選ばれし者のみが使うものだから安っぽい一般書籍で下々の者の目に触れさせてはならぬのだ
179デフォルトの名無しさん:2014/04/02(水) 19:56:12.51 ID:Y0IuL1ul
>>177
ないことはないが
wshの本だって読んだことないだろ?
180デフォルトの名無しさん:2014/04/02(水) 20:35:42.75 ID:OMqTUtFb
歯を磨くのに歯ブラシの本なんか読まないって奴だな
181デフォルトの名無しさん:2014/04/02(水) 21:07:06.51 ID:y1aMAgcN
そういえば、Excelの本も読んだことないな
182デフォルトの名無しさん:2014/04/02(水) 21:53:15.82 ID:m0GxFAWI
bashの本は結構ある
183デフォルトの名無しさん:2014/04/03(木) 02:45:55.99 ID:Ft/oIZi2
>>174
「Windows PowerShell 実践システム管理ガイド」2009初版
この本は一通り、環境設定や文法などを説明しているが、
サーバ管理者じゃなければ、あまり読む所がない

@IT 執筆者は山田 祥寛(よしひろ)
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/1069psffolder/psffolder.html

HIRO's.NET
ttp://hiros-dot.net/PowerShell/index.htm

MS TechNet スクリプトセンター
184デフォルトの名無しさん:2014/04/03(木) 15:09:33.58 ID:Ft/oIZi2
ファイル名に入っているすべての空白を、
アンダーバーに置換して、
置換したときのみ、ファイル名を変更する

#複数か所を置換。日本語もOK
$a=$str.Replace(' ','_')

#True, False
#もし、置換されていれば
if(! $a.Equals($str)){ren}

Replaceが置換できたかどうかが分からないため、
Equalsで置換前後の文字列を比べているんですが、これでいい?

Replaceが置換した文字数でも返せば、便利なのに
185デフォルトの名無しさん:2014/04/03(木) 22:15:18.50 ID:PIEAAVmi
これが最近になってerrorになるんだが。エラーメッセージは今手元に処理系がないから晒せない。すまぬ。

$ie = new-object -com InternetExplorer.Application
186デフォルトの名無しさん:2014/04/04(金) 03:15:36.79 ID:Y0zkgPF2
$ie = new-object -com InternetExplorer.Application
Win8で、動くよ
ただし、このままでは見えないから、
$ie.Visible=$true で見える

それから、$ie.Quit() で終了して、
Remove-Variable ie で変数を完全に削除する
187デフォルトの名無しさん:2014/04/04(金) 03:25:58.26 ID:wR4zjFJC
>>186
あ、動かなかった環境はwin7
188デフォルトの名無しさん:2014/04/04(金) 03:26:28.98 ID:wR4zjFJC
>>186
ieのバージョンは8
189デフォルトの名無しさん:2014/04/04(金) 05:53:17.18 ID:KMj82CKh
>>186 ので Vista (ってかWin2008srv) と IE9だと、今ちゃんとIE起動したなあ。
190デフォルトの名無しさん:2014/05/02(金) 17:26:10.96 ID:iN4GJgNf
echoや>の出力がUTF-16LEなのはハマるな
もともとUTF-8で出力するプログラムとかなんかおかしくなるし
191デフォルトの名無しさん:2014/05/02(金) 20:40:03.81 ID:HFpQdt1h
そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
192デフォルトの名無しさん:2014/05/10(土) 13:27:52.37 ID:rkawSHax
クラシック コマンドと PowerShell の間のエンコード設定
ttp://d.hatena.ne.jp/ladybug/touch/20111203
193デフォルトの名無しさん:2014/05/17(土) 13:01:56.04 ID:zPk4Oowy
>>191
おかしくないね
194デフォルトの名無しさん:2014/05/17(土) 13:04:18.77 ID:zPk4Oowy
>>191
そもそも自分でエンコーディング指定しない状態でうまくbatは
そのまま実行できた方が便利じゃね

おかしくねってなんだよこのカス
お前のせいでこのスレ過疎ってんじゃねえかよ
俺は苦労なく適応してるスタイリッシュ糞野郎は死ねよ
195デフォルトの名無しさん:2014/05/17(土) 13:05:13.85 ID:zPk4Oowy
>>191
そもそも自分でエンコーディング指定しない状態でうまくbatも
そのまま実行できた方が便利じゃね
>>192
それがめんどいって言ってるんだけど

だからこのスレ過疎ってんだけど
196デフォルトの名無しさん:2014/05/17(土) 13:06:51.90 ID:zPk4Oowy
>>192
ドヤ顔1行レススタイリッシュでああかっこいい
これでもうまく出来ない
たとばestcmdのことだよ
やってみろごみ
197デフォルトの名無しさん:2014/05/17(土) 13:09:30.55 ID:zPk4Oowy
そもそも自分でエンコーディング指定しない状態でうまくCUIコマンドは
そのまま実行できる方が便利とおもわないほうがおかしくね
198デフォルトの名無しさん:2014/05/17(土) 13:10:47.73 ID:6QUaAdwh
そもそも自分でエンコーディング指定しない状態で動いてるCUIコマンドは
そのまま実行できた方が便利とおもわないほうがおかしくね
199デフォルトの名無しさん:2014/05/17(土) 13:21:35.98 ID:6QUaAdwh
>>192
設定してもestcmdがうまく変換できない
試してみなくても絶対できると思うこむのがおかしくね
200デフォルトの名無しさん:2014/05/17(土) 21:10:33.02 ID:blVZ2esz
こちらの質問を投稿されてから少し時間が経ちましたが、その後の状況はいかがでしょうか

とか気持ち悪いからまれ方する掲示板には絶対に書き込みしないが
ここでカスどもを叩きつぶんつ
201デフォルトの名無しさん:2014/05/17(土) 21:25:14.42 ID:blVZ2esz
単純にエンコード指定しただけではうまくいかないことがあるのは明白
試しもしないで大嘘書いてんじゃねえよクズ
202デフォルトの名無しさん:2014/05/17(土) 23:03:47.67 ID:blVZ2esz
こちらの質問を投稿されてから少し時間が経ちましたが、その後の状況はいかがでしょうか

とかいう気持ち悪いからまれ方する掲示板から出てくんな
203デフォルトの名無しさん:2014/05/21(水) 01:04:44.83 ID: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デフォルトの名無しさん:2014/05/21(水) 02:18:31.24 ID:ta57bKtc
標準出力のutf16leとsjisは自動判別されるがutf8は判別しない。
utf8での出力は問答無用でsjis出力される。$OutputEncoding は関係しないようだ。
.netのDiagnostics.ProcessStartInfoの StandardOutputEncodingをutf8に指定して
プロセスを作成すれば、化けずにutf8で表示できる。

utf8のファイルならば自動判別される。
Get-Contentで文字コードを指定しなくてもutf8のファイルを読み込めるし
> をしたら、化けずに正常にutf16leに変換される。
205デフォルトの名無しさん:2014/05/21(水) 02:27:53.59 ID:ta57bKtc
UTF8の標準出力は無視というより
単純にBOMBなしUTF8はスルーされるってだけの話なのか
BOMBなしUTF8は-encoding utf8すれば読めるが強制sjis変換される
BOMBがないutf8はちゃんと表示された
206デフォルトの名無しさん:2014/05/21(水) 02:28:38.07 ID:ta57bKtc
×BOMBがないutf8はちゃんと表示された
◯BOMBありのutf8はちゃんと表示された
207デフォルトの名無しさん:2014/05/21(水) 18:11:51.04 ID:WiuU0w7h
>>203
俺が言ったのは、エンコーディング指定なしで望みの形に自動で入出力される、なんて都合のいいもんのはずないだろってことだけだが
特にUTF-8が厄介なのはcmd.exeの頃からそうなんだから
208デフォルトの名無しさん:2014/05/22(木) 15:38:40.24 ID:/bbRYJfN
テキストはバイト列じゃなくて文字列として扱われる
PHPとかPtyhon2とかしか知らないと、間違う
209デフォルトの名無しさん:2014/05/30(金) 23:45:52.42 ID:F99LD7Fr
>テキストはバイト列じゃなくて文字列として扱われる
バイナリとして比較するということを言いたいのかな?
210デフォルトの名無しさん:2014/05/31(土) 01:17:39.96 ID:HDDKJJTo
逆だろ
211デフォルトの名無しさん:2014/05/31(土) 01:45:04.55 ID:tHdAdTRr
>Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
>ナマのutf-8を吐いてくれる。

これは勘違いで誤り。
utf-8をsjisに変換してくれる、が正しい。cmd.exeでも同じ挙動。

そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか
212デフォルトの名無しさん:2014/05/31(土) 01:48:59.81 ID:YDFuTMoW
むかしは、シフトJISのテキストをバイト列として(バイナリとして=j処理した。
(当初からJavaは、テキストを文字列として処理してきた)

いまは、Perl, Python, Rubyは、文字列としてテキストを処理できる。
スクリプトがどの文字コードでかかれてるか明記。
出力するとき、内部の文字コードから表示の文字コードに変換。
213デフォルトの名無しさん:2014/05/31(土) 02:00:38.69 ID:tHdAdTRr
ちょっとエンコーディング指定すればいいなんて手間じゃねえし
なめてんだろ
214デフォルトの名無しさん:2014/05/31(土) 12:22:25.77 ID:LqLiNHuI
>>190本人が、何もしなくてもUTF-8形式を適切に処理してくれるって考えは甘いってことを理解してりゃそれでいいよ
215デフォルトの名無しさん:2014/06/02(月) 22:17:32.05 ID:iXPDpkrB
>>214
BOM付きUTF8ならば適切に処理されるんだからややこしいのであって
考えが甘いとかそういうことじゃないんだよ

こうやって精神論にすり替えて叩いてくる
どうせわんくまのバカどもが食いついてんだろ
お前らいつも参考にならないんじゃアホ
216デフォルトの名無しさん:2014/06/02(月) 22:30:48.29 ID: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デフォルトの名無しさん:2014/06/02(月) 22:34:16.22 ID:iXPDpkrB
>>207
そもそも適切なエンコーディング指定する方法がないのだから
>そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
で軽々しく済む話ではないのは明らか
cmd.exeではこんなビット欠けは起きない
218デフォルトの名無しさん:2014/06/02(月) 22:37:17.51 ID:iXPDpkrB
>>207
コマンドの標準出力にはエンコード指定する方法なんかないので
大げさなラッパを作る必要がある
cmd.exeの頃は勝手にutf16leに変換されるなんてことなかったし
変換し直すだけでトラブルはなかった
分かったかわんくまバカ
219デフォルトの名無しさん:2014/06/02(月) 22:43:53.50 ID:iXPDpkrB
echoや>の出力がUTF-16LEなのはハマるな
もともとUTF-8で出力するプログラムとかなんかおかしくなるし
220デフォルトの名無しさん:2014/06/02(月) 22:46:54.35 ID:iXPDpkrB
じゃあ
echoや>の出力がUTF-16LE
である利点を語ってくれ
標準出力unicode化は今まで全く力を入れてこなかったことので悲願でも何でもない
それ以外で
221デフォルトの名無しさん:2014/06/02(月) 22:53:46.33 ID:iXPDpkrB
>>192
正直そこらへんのブログの落書き情報よりつっこんだ話してるからね
このスレ読めばUTF8関連のトラブルは解決するだろう

もちろん俺だけのおかげであって
わんくまやムタや魔界仮面(宇宙仮面ではない)の出番はなかった
わんくまが役に立ったことなんかないがな
222デフォルトの名無しさん:2014/06/03(火) 00:46:33.05 ID:zVTgVwHZ
利点も糞も、echo(write-output)は、生のオブジェクトを扱うことになるわけで、
つまりは、.NET仕様の根幹だから今更変えようがないでしょ。
従って、文字コード変換とかは受け取る側が全部面倒見る必要がある。

が、今どきUTF-8くらい標準(共通パラメータ?)で何とかしろよ、っていう点には同意だが。
223デフォルトの名無しさん:2014/06/03(火) 00:54:23.68 ID:Y/pEIVnr
エンコーディングを指定すればいいだろ
224デフォルトの名無しさん:2014/06/04(水) 20:44:17.78 ID: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デフォルトの名無しさん:2014/06/05(木) 00:54:18.00 ID:0UtGsb3y
>>224
値を受け付けるパラメータの数が1つだけだとこういう挙動になるのかと思ったけど
Write-Hostでも同じようにエラーにならないな
226デフォルトの名無しさん:2014/06/06(金) 20:42:25.77 ID:SJO4baaV
>>215-216
いやお前は必要な情報を提示したつもりだったのかも知れんが、
>>190のレスだけじゃ一般論として文字コード意識しないと駄目だろって話にしかならない
227デフォルトの名無しさん:2014/06/08(日) 09:45:09.57 ID:EYTmrCp1
ここで聞いて良いのか分からないけど分かる方居たら教えて下さい。
Get-WmiObject -ComputerName IP -Credential $cre 〜としてサーバの情報取って来ようとしてるんですが、UserAdministrator Passなし で認証のダイアログ等を出さずに実行するだけで取得する方法はありますか?
パスワードの設定がされていればそのまま取ってこれるんですが、パスなしの場合は無理でしょうか。ちなみにドメインには参加していません。
228デフォルトの名無しさん:2014/06/08(日) 15:47:34.27 ID:sw1PudVp
WinRMを設定して使う。
SSHみたいにリモートでコマンド実行できる様になる。
229デフォルトの名無しさん:2014/06/09(月) 00:18:43.04 ID:5ZVLqxF5
>>228
ちょっと調べてみた感じサーバ側の設定が必要なんですね
まだ入社したばかりで、大量にあるサーバを全手動でチェックしてるのでそこをなんとかしようと思って調べてました
お上にお伺い立てないといけませんが、もうちょっと調べて行けそうなら考えてみます
ありがとうございます
230デフォルトの名無しさん:2014/06/15(日) 12:59:24.56 ID: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デフォルトの名無しさん:2014/06/20(金) 15:35:56.81 ID:HoBg26Gr
バージョン2.0使ってるけどConvertfrom-Csvで変換後にある列がブランクの行をWhereで抽出して表示させようとしたんだけど
他の列は「-eq ""」でいいんだけど最終列だけは「-eq $null」にしないと抽出できないね。
列ごとに書き方変えるの面倒なのでIsNullOrEmpty使うようにしたけどバグに近いレベルの仕様だな。
上位バージョンだと改善されてるのかな?
232デフォルトの名無しさん:2014/06/20(金) 16:53:37.72 ID:wHzCGsbi
>>231
IsNullOrEmpty
使うものですよ
233デフォルトの名無しさん:2014/06/20(金) 17:49:45.80 ID:1hp3pFc2
CSV自体が欠陥規格だから、変換後のデータをよーく検証しないのが悪い。
234デフォルトの名無しさん:2014/06/21(土) 09:09:56.44 ID:OJ/lzG/j
Windows PowerShell 伊瀬
235デフォルトの名無しさん:2014/06/21(土) 10:30:10.12 ID:CuxdLLeL
伊瀬って人の名前かと思ったわ
236デフォルトの名無しさん:2014/06/21(土) 11:10:30.86 ID:5Gha9VrW
× 伊瀬

○ 伊勢
237デフォルトの名無しさん:2014/06/21(土) 14:55:17.30 ID:hhcyEr91
>>233
まあ表示させようとしたのはタブ区切りファイルなんだけどね。(「-delimiter `t」を指定)
ちなみにタブ区切りファイルの全行の末尾にタブ1個追加すると最終列も「-eq ""」で抽出出来た。
余談だけどOutGridViewの表示内容をコピーすると全行の末尾に余分なタブが付いてるのもこれ絡みに理由なんだろうか…
238デフォルトの名無しさん:2014/06/26(木) 07:18:34.55 ID:W91RvMJw
>>237
末尾のタブの有無じゃなくて
もしかして、ファイルの最後に改行が入って無いんじゃない?
239デフォルトの名無しさん:2014/08/30(土) 05:31:37.22 ID:86Qko6ZX
これはWindowsの内部情報を操る部分にだけ使い、
一般的なUI処理・データ処理はバッチファイルや
PythonやRubyなどを併用した方が良さそうだな
コマンド名が冗長でついていけない
240デフォルトの名無しさん:2014/08/31(日) 08:59:00.04 ID:Fxu9rxFN
他のLL覚えてて使用できる環境ならそれで十分だとは思うが
さすがにバッチはないわー・・・
241デフォルトの名無しさん:2014/09/02(火) 09:24:06.69 ID:uW2FT7+h
>>239
ls,cd,cpなど、UNIX系の短いコマンド名も使える
242デフォルトの名無しさん:2014/09/02(火) 12:39:30.46 ID:Ez2bfEzC
>>239
エイリアスあるだろ
243デフォルトの名無しさん:2014/09/02(火) 12:56:46.77 ID:rTXrUpAw
コマンドの命名規則が統一されてるから、細かく覚えてなくても、getcommandとタブの補完で済む
244デフォルトの名無しさん:2014/09/04(木) 21:44:10.03 ID:tOnhAyW6
Windows Server 2012 R2 でFPTサーバー機能インストール後
下記コマンドでサイト追加すると物理パスが設定されない

Import-Module WebAdministration
New-WebFtpSite -Name "●●●" -PhysicalPath "パス文字列"

administrator権限で実行してるし、GUIで設定すると問題なくできる
パス文字列をダブルクォテーション無しやシングルクォテーションで囲ったりも試したがダメだった

誰か助けてくれー
245デフォルトの名無しさん:2014/09/04(木) 21:53:03.90 ID:uNyEwEdx
>>244
MSのサポートに聞けばいいじゃん
権利持ってるんでしょ
246デフォルトの名無しさん:2014/09/05(金) 13:32:14.07 ID:TJ9WELPZ
入力したコマンドとエラーメッセージを、正確に書け

パスは相対・絶対?ドライブ名は?
カレントディレクトリはどこにある?
247デフォルトの名無しさん:2014/09/05(金) 19:56:46.63 ID:AtOrYG8X
>>245

ライセンスは会社で買ってるの
マイクロソフトのサポートページからWindows Server 2012 で
カテゴリでpowershell選んでいくと「支払い方法」とか出てきてひよってしまった
もうちょい頑張ってダメなら聞いてみる

>>246

コマンドは下記

Import-Module WebAdministration
New-WebFtpSite -Name "test" -Port 21 -PhysicalPath "P:\test"

エラーメッセージは表示されず、物理パスが空欄でFTPサイトが追加されてる
パスは絶対、ドライブ名はPドライブがありtestフォルダも作成してる
存在しないパスを指定した場合はエラーになる
カレントディレクトリはC:\Users\Administratorだと思う
(AdministratorでログインしてそのままPowerShell実行 いま職場じゃないので正確じゃなくてすまん)

Windows7でも試してみたが同じ状態になる
248デフォルトの名無しさん:2014/09/05(金) 23:18:10.66 ID:TJ9WELPZ
PowerShellと同じフォルダにある、powershell_ise で、
-WhatIf オプションを付けて実行してみたら?

このオプションは、実際には実行されず、
何が起こるか表示するだけ
249デフォルトの名無しさん:2014/09/06(土) 00:33:52.22 ID:lo5BUZzT
この程度でプレミア使ってたら他で使えなくなるだろw
250デフォルトの名無しさん:2014/09/25(木) 18:53:25.00 ID:3nQex4gX
power shellは、ファイルの入・出力の真似事のようなことはできても、
まともにプログラムを作るのは無理だな。
251デフォルトの名無しさん:2014/09/25(木) 23:29:14.42 ID:lRwJZ1gU
そりゃ言語部分は、インタプリタの
スクリプトだから、目的が違うよ。
組み合わせれば、いいものもできるが
それだけじゃできても、遅くて無理。
252デフォルトの名無しさん:2014/09/26(金) 11:58:07.40 ID:TbsD84QQ
DSCとかいうの話題出てないようだけどあれは何なの
253デフォルトの名無しさん:2014/09/27(土) 14:32:34.67 ID:W5v3g7cK
254デフォルトの名無しさん:2014/09/29(月) 14:54:02.15 ID:/M46FFaB
バッチはこんなのまでバッチでやるなんて・・とネタで盛り上がりやすかったんだよな
wshになるとCOM化オブジェクト化+本格スクリプト使用でできて当然、はしゃぐことはなくなっていった
PowerShellはさらに進化し玄人受けがすごく良いが登場時以降は小康状態へ
もっと新規に触れてほしいね
255デフォルトの名無しさん:2014/09/29(月) 14:59:20.82 ID:/M46FFaB
PowerShellなら、様々なファイルの属性を取り出せる

Nameでファイル名
DirectoryNameで、フォルダまでのフルパス
FullNameで、ファイル名付きフルパスを取り出す
(FullName = DirectoryName + Name)

ファイル名について、
Extensionで、.txt などの拡張子の部分
BaseNameで、Extensionを除いた部分
(Name = BaseName + Extension)

.NETのクラスの説明を参照
256デフォルトの名無しさん:2014/09/29(月) 20:56:14.73 ID:hnxt5DQK
>>253
アホだろお前
で使ってんのか?
257デフォルトの名無しさん:2014/10/03(金) 00:23:14.30 ID:pHiC8ZbM
何怒ってんの
258デフォルトの名無しさん:2014/10/03(金) 23:08:21.66 ID:HQ6EBXmx
ほんとだね。何か言いたいことがあるのかな?
259デフォルトの名無しさん:2014/10/04(土) 23:13:26.07 ID:zSlTHuRa
powershellから外部コマンドを実行する場合の方法で相談にのってください。
任意個数の引数を指定して外部コマンドを実行するにはどうすればよいでしょうか?

外部プログラム user.exe があるとして、それらに対する引数が任意数あるとします。
$command_line = "user"
として
ループをまわして内部で各種条件判定を行い条件に合致した場合は
$command_line += "-commnad-hoge"
のように対応したコマンドを配列に追加します。

最終的には以下のように設定した状態と同様になります。
$command_line = "user","-command-hoge","-command-fuga","-command-moge"

これをコマンドとして実行したいのですが
$command_line.split()
& $command_line
これだとうまくいきませんでした。
invoke-command -scriptblock { $command_line }
もダメでした。
引数個数が決まっているなら、 -ArgumentListで対応できるのですが・・・。

こういった場合どうすれば良いでしょうか?
260259:2014/10/04(土) 23:15:01.58 ID:zSlTHuRa
訂正
$command_line.split()
↑の行は必要ないです。
261デフォルトの名無しさん:2014/10/05(日) 10:33:19.45 ID:mngpVki9
$program = "user"

$arguments = @()
$arguments += "-command-hoge"
$arguments += "-command-fuga"
$arguments += "-command-moge"

& $program $arguments
262デフォルトの名無しさん:2014/10/05(日) 16:24:58.31 ID:+/TDLXSL
>>261
ありがとうございます。
いけました。
263デフォルトの名無しさん:2014/10/05(日) 19:01:10.47 ID:+/TDLXSL
もう一つ質問です。
あるディレクトリが存在していたらそれを削除して新たに生成するという処理を書いているのですが


if ( Test-Path $new_dir )
{
Remove-Item -path $new_dir -recurse -force
}
New-Item -name $new_dir -type directory

と記述したところ、既存の$new_dirが存在していてかつ、中身が少数のファイル数だった場合は問題なく動作しました。
しかし、小さいサイズのファイルが大量にあり削除に時間がかかるような$new_dirの場合
New-Itemが実行される際にエラーになります。

New-Itemが実行される時点でまだ、$new_dirが残っているらしく、すでにディレクトリあるからエラー、といわれてしまいます。
実際にディレクトリをみにいくとすでに消えています。
動作としては、 Remove-Itemの実行完了を待たずにNew-Itemが実行されているような印象でした。
Remove-Itemのオプションで-waitとかもないですし、
これを解消にするにはどうしたら良いでしょうか?
264デフォルトの名無しさん:2014/10/05(日) 19:42:07.63 ID:oF4PxXkb
それはPowerShell固有の問題ではなく.NETの問題ぽいんだよね

http://social.msdn.microsoft.com/Forums/vstudio/en-US/c7c4557b-a940-40dc-9fdf-1d8e8b64c46c/dont-create-directory-after-delete?forum=netfxbcl
http://stackoverflow.com/questions/4216396/system-io-directorynotfoundexception-after-deleting-an-empty-folder-and-recreati

昔これに遭遇したときどうしたかなと調べてみたらフォルダそのものは削除せずにその配下を削除するというコードでお茶を濁してあった
265デフォルトの名無しさん:2014/10/05(日) 19:54:27.47 ID:+/TDLXSL
>>264
> それはPowerShell固有の問題ではなく.NETの問題ぽいんだよね
うーん、いろいろ深刻なんですね。
割とよくある処理だとおもうのですがw

> 昔これに遭遇したときどうしたかなと調べてみたらフォルダそのものは削除せずにその配下を削除するというコードでお茶を濁してあった
とりあえず、URLを参考にお茶を濁してみます。
ありがとうございました。
266デフォルトの名無しさん:2014/10/05(日) 20:52:20.32 ID:x1UpicBb
削除に先立ってそのフォルダをリネームしてしまうのはどうかね
267デフォルトの名無しさん:2014/10/05(日) 23:59:21.00 ID:+/TDLXSL
>>266
> 削除に先立ってそのフォルダをリネームしてしまうのはどうかね
リネーム先の名前がかぶってるかとかチェックするのがだるそうなので
簡略化してかくと↓みたいにして対処しました。
とりあえずこれで問題なくいけてます。
こういうポーリング処理は見苦しくてあまりすきじゃないんですがしょーがないです。
同期オブジェクトでももらえるなら、もらって終わったら起こしてもらうほうが好きですね。
remove-item $path
while ( test-path $path )
{
start-sleep -m 500
}
new-item $path
268デフォルトの名無しさん:2014/10/06(月) 02:50:23.88 ID:q0WbIU2v
複数のやり方から自分で選択したのにしょーがないもないもんだ
269デフォルトの名無しさん:2014/10/07(火) 00:03:39.16 ID:j618B6Sr
$a = remove-item $path とか remove-item $path > $null とかかね
いや試してないけど
270デフォルトの名無しさん:2014/10/07(火) 01:41:24.38 ID:WYpWzpgi
>>264
Windows本体の問題じゃないの?
271デフォルトの名無しさん:2014/10/15(水) 02:54:21.15 ID:+H/2h/ar
> $7zip="C:\Program Files\7-Zip\7z.exe"
> dir *.zip | % {&$7zip x $_ -y "-o""$($_.Directoryname)"""}

やっていること
7z.exeでそのディレクトリにあるすべてのzipファイルを、
新たにディレクトリを作らず、その場にすべてのファイルを解凍
同名ファイルは上書き。7z.exeのパスは通していない

ポイント
・文字列のパスの先頭に&をつけると実行。変数でも可
・プロセスに渡す"は""。`でエスケープかな?と思うのは間違い
・dir=gci。gciはファイル名ではなくてファイルオブジェクトが渡るので重いっちゃ重い
がそのおかげでファイルオブジェクトのメソッドが使えて便利
・$_はパイプの現在の値。。for /fだと%iとか指定してたあれ。ここではファイルオブジェクト
・メソッドは$()でかこむと値を取り込める。""の中は展開される
272デフォルトの名無しさん:2014/10/18(土) 11:24:48.22 ID:UrxAWZhY
Outlookのフォルダ構成を出力するのってどんなコマンドレットですか?
273デフォルトの名無しさん:2014/10/25(土) 12:09:13.69 ID:CSyeBZR0
企業の部門エンドユーザーだが、内製での業務効率化に使えるかなあと思って勉強している
古臭いUNIXシェルに、.netオブジェクトと現代的なスクリプト言語の機能を無理矢理
詰め込んだような感じ。記号やオブション指定が多く、かなり取っつきにくい印象あり
これの想定ユーザーはエンドユーザーではなく開発技術者なのかな?
274デフォルトの名無しさん:2014/10/25(土) 21:48:14.17 ID:oo9NyNnA
UNIXシェルを遥かに超えてるが故に?普及してないな。
デフォでセキュアなのも原因か。
275デフォルトの名無しさん:2014/10/25(土) 21:56:37.49 ID:wMFwKrRB
UNIXみたいにアプリがコマンド連携できないから
276デフォルトの名無しさん:2014/10/25(土) 22:47:35.24 ID:CSyeBZR0
コマンドの公式エイリアスが多すぎるのも頭の痛いところ
get-childitem・gci・dir・lsなどと複数あり、大文字・小文字も自由となれば
人により表記のブレが大きくなり、コードの共有に難が出てくる
それならバッチファイルで済ませたくなるのが人情
277デフォルトの名無しさん:2014/10/30(木) 08:43:46.53 ID:h9RzQ4Cj
>>276
エイリアスは、
他の環境での利用者を考えた結果だろうから
バッチファイルで済ますという考えがあるなら
エイリアスはdos表記利用だけ、あるいはエイリアス禁止に
してしまう手があるともいえる。
278デフォルトの名無しさん:2014/10/30(木) 08:48:36.56 ID:h9RzQ4Cj
>>273
もともとがサーバー管理者向けにできたもので、
その利用範囲が拡大してきたということでしょ。
エンドユーザーの想定は、少なくとも当初は無いと思うけど。
>>275
その意味が分かんない。PowerShellの方が連携しやすいと
いう認識あるんだけど、思っている意味が違うのかな?
279デフォルトの名無しさん:2014/10/30(木) 09:14:10.61 ID:eeECNXMU
>>278
UNIXみたいなCUIアプリはパイプと標準入出力で連携できるけど
windowsは基本GUIアプリばかりなので連携できない
もしかして何かあるのなら無知な私に教えてくださいませ
280デフォルトの名無しさん:2014/10/30(木) 11:12:43.92 ID:P7z1oqc0
Powershell は Powershell で閉じてるよねえ
grep したり find したりとか自前でやるあたりやっぱりシェルっていうより言語環境に近い
281デフォルトの名無しさん:2014/10/30(木) 13:23:12.07 ID:ApVpmuLz
>>279
>基本GUIアプリばかりなので
自身で主に使っているのがそういう環境だ
ということじゃないかな
282デフォルトの名無しさん:2014/10/30(木) 15:13:41.75 ID:n5jf4ckH
旧来のシェルは単にテキスト吐き出すだけだからね、
それ以上でも以下でもない。
283デフォルトの名無しさん:2014/10/30(木) 22:03:57.70 ID:7iNuGGQG
zshやbashは組み込みコマンドだけじゃ何も出来ないからな
awkとかperlのワンライナーとか使い出したら、それはもうシェルスクリプトって次元じゃないだろう
284デフォルトの名無しさん:2014/10/30(木) 22:22:21.39 ID:tllqb13A
>>279
本業のWindows Server系ではまずPowerShellコマンドレットで機能実装してGUIの皮を被せ
GUI操作内容を後でスクリプトとして吐き出したりできるようにしているよ
285デフォルトの名無しさん:2014/10/30(木) 22:24:49.66 ID:k8NiVNHr
とはいえperlつかっても結局テキスト吐き出すだけだし
アプリプログラムとしたら、めちゃくちゃ遅いので
その面ではメリットのある利用はシェル替わりにしかならなから
弱ったもんだ。
286デフォルトの名無しさん:2014/10/30(木) 22:32:50.58 ID:k8NiVNHr
>>279
そもそも、Serverでの管理用に出てきたのに、基本GUIなんて
こと有り得ないでしょう。ちょっと勘違いしてるかな。
287デフォルトの名無しさん:2014/10/30(木) 22:42:32.77 ID:aZFM4Dkl
>>279
GUIしかないアプリ間で連携させたいというなら
そもそもバッチファイルだろうがUNIXだろうが無理な話で

Windowsだってサーバー管理はコマンドラインツールでどうにかしてきたし、
コマンドラインツールを勉強せずに連携とか言ってるなら、そもそも思想がおかしい。

PowerShellになると既存のコマンドはほとんど置き換えられてしまうけど
色々なコマンドのオプション指定方法がある程度共通化されて、学習コストは下がってきてるし、
データの連携もやりやすくなってるから、今までの経験は置いといて覚えなおすのが良いと思う。
288デフォルトの名無しさん:2014/10/30(木) 22:45:43.43 ID:2y8PDjyu
>>284
スレ違いかもしれないけど、PowerShellのGUIって何で作るの?
289デフォルトの名無しさん:2014/10/30(木) 22:47:51.51 ID:k8NiVNHr
WPFでもWinFormでもSiverlightでも。

めちゃくちゃ簡単で自由度高いよ。
290デフォルトの名無しさん:2014/10/30(木) 22:55:20.17 ID:IM+QeQcX
読みづらいんだけど。規約とか工夫してることある?
291デフォルトの名無しさん:2014/10/30(木) 22:57:13.10 ID:k8NiVNHr
>>290 
私の場合は、省略形(エイリアス)は使わないようにしてる。
自分だけならいいんだけどね。
292デフォルトの名無しさん:2014/10/30(木) 22:58:03.04 ID:tllqb13A
>>288
アプリの機能をコマンドレットとして実装してるってだけで
別にPowerShellでGUIまで実装してるわけじゃないよ?
293デフォルトの名無しさん:2014/10/30(木) 23:05:47.26 ID:P7z1oqc0
サーバー管理系以外のアプリもコマンドレット実装してたりするもんなの?
294デフォルトの名無しさん:2014/10/30(木) 23:12:25.65 ID:2y8PDjyu
>>292
自分でつかうぶんにはコンソールから使えばいいんだけど、他のひとにつかってもらうときにはGUIがあったらいいなー何て思ってるのでつい反応してしまいましたがな。。。。
295デフォルトの名無しさん:2014/10/30(木) 23:13:10.90 ID:k8NiVNHr
まだそんなにないでしょうね。
わたしは作ってるけど。
米国ではツールとしてだいぶでてきてる。
聞いていることの回答になっているかはわからないけど。
296295:2014/10/30(木) 23:15:39.82 ID:k8NiVNHr
>>295 は >>293 への回答でした
297デフォルトの名無しさん:2014/10/31(金) 04:19:42.55 ID:6uOYsRYD
学習中だが、コードが見にくいですなあ
キャストも添字参照もオブジェクトのメンバアクセスも[]を使うので
[]だらけになってしまいがち。あと$・@・{}などの記号が多い印象
シンプルなPythonから来たのでかなりつらい
298デフォルトの名無しさん:2014/10/31(金) 06:10:03.53 ID:5RNGAkQP
旧来のシェルを知ってると馴染みぶかくていい
299デフォルトの名無しさん:2014/10/31(金) 07:03:03.31 ID:rr8q/oyJ
記号が多い言語と言えば

静かな湖畔の森の陰から
もう起きちゃいかがとカッコウがなく
カッコウ カッコウ カッコウ カッコウ カッコウ

Lispの歌でした
300デフォルトの名無しさん:2014/10/31(金) 09:19:46.12 ID:th/TRSyt
記号の種類が多いのは、何と言ってもAPL
これに種類が勝る言語はないだろう。

作った本人がわからなくなるという話は有名
301デフォルトの名無しさん:2014/11/01(土) 07:38:04.23 ID:zr+1nUxZ
型を指定できる時点で断然いい
Pythonはワンライナーが致命的に向かないので、Perlやawkがなくなる事はないだろう
302デフォルトの名無しさん:2014/11/01(土) 12:54:29.11 ID:DNMo+a9Y
>>300
そいえば、APLはワンライナーにチャレンジしたがる人の宝庫ですね。
その代り
 >作った本人がわからなくなるという話は有名
そのとおり
303デフォルトの名無しさん:2014/11/01(土) 13:02:20.00 ID:B4tit/6m
全ての変数名に$が付くのは、自分にはタイピングの負荷が高いなあ
小指が攣りそうになる
UNIXのBシェルだっけ?あれは確か変数の参照の時だけ$が付いたと記憶している
そっくり真似するのはアレだから、アレンジしてどんな時も付けるようにしたのか?
304デフォルトの名無しさん:2014/11/01(土) 13:37:11.72 ID:awheomXH
直交性の話じゃないの
全部付けるにしたほうが構文解析も楽だろうし
305デフォルトの名無しさん:2014/11/01(土) 15:14:56.05 ID:tDHeWf5U
シェルで$使わないのって知らないわ
306デフォルトの名無しさん:2014/11/02(日) 05:19:32.65 ID:KOUMXij0
由緒正しいシェルスクリプトでは$は参照用の記号だよ。
$a=aなんてやったら$aの中の変数にaが入っちゃう。
なんでもかんでも$つければいいって、バカのやることだよ。
307デフォルトの名無しさん:2014/11/02(日) 07:37:13.70 ID:3XDfxtRF
=の隣にスペース置くなとか、古いシェルは罠だらけだよな
配列とかパラメーター展開も意味不明な構文暗記させられるし
PowerShellは何もかも洗練されてる
308デフォルトの名無しさん:2014/11/02(日) 09:27:10.54 ID:L9JlfI9E
UNIXの場合は、初期のころツールがほんと少なくって、シェルに頼るしか
なかったし、使うのもシステム関係者と一部研究者が多かったので
それでも、どうにかなったという感じだったな。
私の周りはSASを使っていたのでUNIXでもシェルを使う場面はほぼなく
開発できたが、他のツール使ってる部門ではジェル必須(だらけ)だっな。
309デフォルトの名無しさん:2014/11/02(日) 10:21:33.46 ID:+FBbeC+X
ジェル必須とかスタイリッシュな職場だったんだね
310デフォルトの名無しさん:2014/11/02(日) 10:32:03.37 ID:7/ZQZRkL
まあ言い方次第だね、しかたなくシェルだったんだけどね。
開発効率メチャクチャわるくて、私たちの1/10くらいの進度だった。
シェルだけじゃすまないからね。
その時代と比べたら、今は雲泥の差だ。
311デフォルトの名無しさん:2014/11/02(日) 12:36:24.05 ID:+FBbeC+X
いや、誤字を茶化しただけだから・・
312デフォルトの名無しさん:2014/11/02(日) 12:40:11.34 ID:FPvqJpqA
自分で解説するのどんな気持ち? ねえどんな気持ち? (AA略
313デフォルトの名無しさん:2014/11/02(日) 12:59:05.99 ID:fLE2zYfa
最近つかいはじめたけど[ ]の扱いがうざすぎる
314デフォルトの名無しさん:2014/11/02(日) 13:08:02.66 ID:0KDQawZd
日本語キーボードなら ( ) より入力楽じゃん
他の言語の流儀で通そうとすると使用頻度増えるかもね
たかがコマンド実行環境、という認識で使ってればほとんど出番はない
315デフォルトの名無しさん:2014/11/02(日) 13:18:15.72 ID:8HCUuVfe
[ ] は、 あ〜確かや
316デフォルトの名無しさん:2014/11/02(日) 15:29:53.62 ID:fLE2zYfa
拡張子の違う複数のファイルがあって
[a].a
[a].b
[a].c

次のような処理を書いたんですけど
$file = "[a].a"
get-childitem $file.replace(".a","*").replace("[","````[")

なんかスマートじゃない気がしてもっと良い書き方はありますか?
-literalpathをつかうとワイルドカードは使えなくなるみたいですし
317デフォルトの名無しさん:2014/11/02(日) 16:18:05.96 ID:0KDQawZd
ああワイルドカードの話ね、-filterパラメータ使うと楽だよ、フルパス指定はできないけど
ls -filter [?].txt
318デフォルトの名無しさん:2014/11/02(日) 16:20:11.32 ID:0KDQawZd
逆だった
ls -filter [a].?
319デフォルトの名無しさん:2014/11/02(日) 16:50:32.68 ID:fLE2zYfa
>>317-318
ありがとうございます
すいませんもう一ついいですか
moveの場合だと次のようにしたらfilter関係無くカレントディレクトリの全ファイルマッチしてしまうんですがどうすればよいでしょうか

move-item -filter [a].? .\* .\dest\
320デフォルトの名無しさん:2014/11/02(日) 17:04:23.84 ID:0KDQawZd
なんだろね、Copy-Itemならちゃんと絞ってくれるけど
基本列挙は ls に任せてファイル操作系コマンドは宛先指定だけにした方がいいよ
321デフォルトの名無しさん:2014/11/03(月) 03:00:35.27 ID:TAxV/Jyl
$arr=ls

foreach($f in $arr){
コマンド
}

一旦、該当するファイルを、配列に入れて、
その配列から、1つずつ取り出しながら処理する
322デフォルトの名無しさん:2014/11/03(月) 19:49:56.02 ID:qlYoK+bJ
win7x64のデフォで入ってるpowershell(バージョン2.0?)でぐぐって出てくる
windows.form使うサンプルが軒並み動かないんだけどどうなっとんの
例えばこれ
http://technet.microsoft.com/en-us/library/ff730941.aspx

$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
の行でいきなりプロセスが消える
なんか足りてないの?
せめてエラー吐くなりして欲しいな
323デフォルトの名無しさん:2014/11/03(月) 20:02:23.21 ID:gOXM5TDK
今日ハマったこと

.replace("hoge", "hage") だと正規表現が使えないけど
-replace "hoge", "hage だと正規表現が使える
324デフォルトの名無しさん:2014/11/03(月) 20:04:01.88 ID:3+1wQ0JU
STAオプションでで起動してないからでねーの。
325デフォルトの名無しさん:2014/11/04(火) 03:25:40.87 ID:30WYsMeZ
このコマンドで、バージョンがわかる
$PSVersionTable

PSVersion 3
CLRVersion (.net) 4
BuildVersion 6.2


PowerShellと同じフォルダにある、
PowerShell_ise を使えば、デバッグしやすい

-WhatIf を付けて実行すれば、実際には実行せずに、
何が起こるか表示してくれる
326デフォルトの名無しさん:2014/11/04(火) 05:41:24.19 ID:30WYsMeZ
>>322
なぜ英語のサイトを見るの?
わかりやすい日本語のサイトは無いの?

.NETの、system.windows.forms - Form クラス
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.form(v=vs.110).aspx

Form.CancelButton プロパティ
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.cancelbutton(v=vs.110).aspx
327デフォルトの名無しさん:2014/11/04(火) 08:46:27.82 ID:eLjF+jjJ
>>322
ためしてみたけど、
おれは、そのままで動くよ。
Win7 64bit 環境
32853:2014/11/04(火) 08:47:20.12 ID:5vxSHexS
Python 3.4.2 を入れてみた
コマンドラインで実行。

ttp://peace.2ch.net/test/read.cgi/tech/1407008551/926

1秒間のカウント数/計算方法/時間取得方法

190442  i+=1  datetime.datetime.today().second
179990  inc(i)       上に同じ

968082  i+=1  int(time.perf_counter())
752263  inc(i)       上に同じ

関数呼び出しでの低下が小さく優秀だがLuaはそれ以上か。
329327:2014/11/04(火) 08:50:19.00 ID:eLjF+jjJ
あ、書き忘れ
PowerShellのバージョンは V3.0
33053:2014/11/04(火) 18:47:12.50 ID:5vxSHexS
ループに入るタイミングを間違えてたんでやり直した。
桁が一つ違ってた。
数値がそれなりだったからずれてるのに気が付かなかった。

185010  i+=1  datetime.datetime.today().second
173615  inc(i)       上に同じ

1372280  i+=1  int(time.perf_counter())
1050301  inc(i)       上に同じ
331デフォルトの名無しさん:2014/11/07(金) 23:04:07.78 ID:a8wUtjf+
>>320-321
やっとわかりました
こうやればいいんですね
get-childitem -filter [a].? | move-item -destination .\dest\

パイプの使い方がUNIXと違って理解したらすんなり解決しました
332デフォルトの名無しさん:2014/11/07(金) 23:32:54.68 ID:JlZS/IBt
ずっと悩んでたんかいw
聞いてくれてよかったんに
333デフォルトの名無しさん:2014/11/08(土) 16:13:47.29 ID:LrfZTEX2
>>332
いや一応目的は達成してたので保留にしてただけで
パイプの使い方を知ったら解決したってだけです

ちなみに今日もハマってしまったことがあるんですけど
foreachがforeach-objectのエイリアスだと思ってたら別物で
foreach-objectはbreakが使えなかった
334デフォルトの名無しさん:2014/11/10(月) 18:28:50.51 ID:y2XAPBpw
foreachの件は、以前から、ちがうよ〜って
結構いわれてますね。
335デフォルトの名無しさん:2014/11/10(月) 21:45:21.91 ID:NuItsKjt
高嶋の演技いいね
336デフォルトの名無しさん:2014/11/11(火) 04:02:01.76 ID:g7KV1ReX
>>331-334
パイプで受け取ったオブジェクトを表すには、
'$_'という自動変数を使う

Get-Variable で自動変数の一覧を表示できる

ls -Directory | ForEach-Object {$_.Name}
337デフォルトの名無しさん:2014/11/11(火) 21:03:21.52 ID:G70pNtNA
powershell2.0でモードレスダイアログ作ってるんですが
表示したばかりの状態でESCでキャンセル動作、
Enterでデフォルトボタン押下動作にするにはどうしたらいいんでしょうか
MSとかのサンプルにはそういうのが見つかりませんでした
VBとかだとこんなの当たり前だったのに情報源が乏しくて厳しいです
338326:2014/11/12(水) 08:49:13.77 ID:sOXRgmSx
>>326 を見て
.NETのFormクラスのプロパティ
AcceptButton → Enter
CancelButton → Esc

このFormクラスの一番下の方に、C#,C++,VBのサンプルがある


このコマンドで、System.Windows.Forms.dll
がロードされているか確認して
[System.AppDomain]::CurrentDomain.GetAssemblies() |
Where-Object {$_ -match "form"} | ft -Wrap

文字列が長いので、ft -Wrapで折り返して、表示する
Format-Table (ft),ft -Autosize
Format-List (fl)など色々ある

もし、ロードされていないのなら、このコマンドでロードして
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
339デフォルトの名無しさん:2014/11/12(水) 21:49:16.87 ID:ngdm2RX5
>>338
できました!
ありがとうございました
しかしこれって適当な.NET系言語と並行で覚えた方がよさそうですね…
340デフォルトの名無しさん:2014/11/26(水) 00:43:41.05 ID:g3+x1KG0
VB.netがあるじゃない
まさかあの噂でしか聞いたことがないVB6のことか〜
341デフォルトの名無しさん:2014/12/04(木) 08:25:18.27 ID:ce/wf1ga
xcopyは古そうなので、robocopyを使おうと思ったが、

Win8で、robocopyで、フォルダを丸ごと再帰的に、
すべての更新されたファイルと、
新しく作られたファイルのみをコピーしたい
(ショートカットはコピーしない)

robocopyのオプションが複雑すぎて、わからないw
どう書けばよい?
342デフォルトの名無しさん:2014/12/04(木) 09:08:49.28 ID:oJkFYkSJ
>>341
ここはPowerShellのスレなんで他で聞いてね
343デフォルトの名無しさん:2014/12/04(木) 18:42:37.00 ID:IpfKGnoS
>>341
日本語で書いてあるから読めば分かる。
読んで分からなければ動かせば分かる。
/MIR オプション無けりゃ失敗しても被害は少ないw
344デフォルトの名無しさん:2014/12/05(金) 20:46:13.92 ID:JjIVLuOx
WindowsのタスクスケジューラーでPowerShellのスクリプトを実行する際には「パス」に注意
ttp://www.atmarkit.co.jp/ait/articles/1412/03/news125.html

PowerShellに限った話じゃないけども
345デフォルトの名無しさん:2014/12/05(金) 20:59:00.79 ID:IWdjIwm1
.\のようなUnixの変な流儀まで真似しなくていいのにと思う
バッチファイルの方が気楽だなあ俺は
346デフォルトの名無しさん:2014/12/06(土) 09:30:22.09 ID:1UBNwgr7
>>345
どこで使う¥のこと?
347デフォルトの名無しさん:2014/12/06(土) 10:12:14.22 ID:7dObdE3W
>>346
.\ と言えばカレントディレクトリに決まってるだろ
348デフォルトの名無しさん:2014/12/06(土) 10:48:32.24 ID:hSVQ21qQ
.\つける方が合理的だと思うけど
349デフォルトの名無しさん:2014/12/06(土) 12:01:58.60 ID:YWCmwsqj
UNIXのCronも通常、環境変数はリセットされるからね
350デフォルトの名無しさん:2014/12/06(土) 13:10:05.65 ID:VkOLgdHH
バッチファイルと違ってセキュリティ的にクリティカルな場所での運用も期待されてるってことなんだよね。
351デフォルトの名無しさん:2014/12/07(日) 15:17:34.34 ID:qsG48RtN
単にカレントディレクトリをパスに加えるかって話だな
補完はできるからあまり苦にならんと思うよ

バッチと違って・・・とか見当違いのこと言い出すアホはもっと勉強しろ
352デフォルトの名無しさん:2014/12/07(日) 15:18:55.54 ID:qsG48RtN
バッチのほうが慣れてるからバッチのほうがいいと言い出すのは当然のこと
353デフォルトの名無しさん:2014/12/07(日) 17:17:24.28 ID:fifuCS4i
>>342
パワーシェルでもコマンドプロンプト使えるんですが
354デフォルトの名無しさん:2014/12/07(日) 17:55:35.08 ID:WRVsacF6
>>353
「コマンドプロンプト」をどういう意味で使っているのかわからないけど、Robocopyのオプションが分かりにくいのであれば、RichCopyっていうGUI版があるから、そちらを使ってみたらどうだろうか?
http://technet.microsoft.com/ja-jp/magazine/2009.04.utilityspotlight.aspx
http://www.forest.impress.co.jp/article/2009/05/15/richcopy.html
355デフォルトの名無しさん:2014/12/20(土) 17:30:13.67 ID:z0Uvrlhl
単純なディレクトリサイズ計算したら、ディスク上のサイズと違うんですが
クラスタサイズ?で自前で計算しないといけませんか?
簡単な方法があるんでしょうか?
356デフォルトの名無しさん:2014/12/31(水) 00:03:30.58 ID:jhIXu+J3
Windows 秘話: ディスク上のサイズの正体
http://technet.microsoft.com/ja-jp/magazine/hh148159.aspx
Computing the size of a directory is more than just adding file sizes
http://blogs.msdn.com/b/oldnewthing/archive/2004/12/28/336219.aspx
357デフォルトの名無しさん:2015/01/06(火) 01:58:48.79 ID:vDyOmCN+
よくわかりました。ありがとう。
35853:2015/02/17(火) 11:03:57.23 ID:Q2g81oZ1
Python は Ruby より遅いと言う話が出たので試してみました。
環境はWindows 8.1 32ビットなので他言語より5%ほど有利

1秒あたり
カウント数
230794   i+=1 Time.now.sec
223535   inc(i)   〃

なるほど Python の today().second より速い結果が出ました。
そしてすぐ書けた。

でも、CPU時間を使った方はだいぶ遅い。
どうも安定しないし逆転したりするからミスがあるかも。
ラスト  前回
686031 710067   i+=1 Process.times.utime.to_i
635549 644149   inc(i)   〃
359デフォルトの名無しさん:2015/02/20(金) 03:39:11.31 ID:Gmp7b6pB
なんでも出来そうだけど
例えばWebスクレイピングみたいなのやろうとすると
向いてないのでやる気にブレーキが掛かるんだよな
wshの方が楽だし
気づけば何ヶ月もいじっていないw

しかしせめてバッチファイルスレよりは活発にしたい
360デフォルトの名無しさん:2015/02/20(金) 10:26:41.98 ID:EGbfWoDB
凝ったことするんだとするとよっぽど慣れてるんでもない限り
VSとかで普通にC#でコード書いたほうがつぶしが聞く感はある。
そうやって作ったexeなりdllなりをpowershell側から上手に使うとかならまだわかるけど。
361デフォルトの名無しさん:2015/02/21(土) 00:50:33.03 ID:EGmkPPJP
凝ったことするツールではないと思うが、
頑張ればたいていの処理ができるってところがEmbedded系では重宝したりする。
362デフォルトの名無しさん:2015/02/21(土) 14:33:47.98 ID:yO956ias
最近のWindowsなら標準搭載ってのがまず強みだね
レジストリアクセスも楽だし便利
363デフォルトの名無しさん:2015/03/02(月) 23:00:02.02 ID:nj+DvOKd
C#で良いじゃん
権限ないとスクリプト実行すら出来ないとか不便すぎる
364デフォルトの名無しさん:2015/03/02(月) 23:27:58.04 ID:stOy1nsj
>>363
おまえはUNIXの世界を知らないのか?
365デフォルトの名無しさん:2015/03/03(火) 08:51:17.02 ID:/q0JXvMY
ん?
PowerShell使えるUNIXがあるってこと?
C#はmonoとか使えばいいけど
366デフォルトの名無しさん:2015/03/03(火) 14:27:45.42 ID:qTbNadM6
一応、そういう世界にいるんでね。 君より情報持ってるよ
367デフォルトの名無しさん:2015/03/03(火) 20:28:21.79 ID:wlOOZ45M
やったーかっこいい
368デフォルトの名無しさん:2015/03/03(火) 22:21:52.45 ID:pmKZfKU0
UNIXは知らんけど
UWSCから PowerShell のスクリプトを実行できたりするんで
「なんだ権限いじる必要ないじゃん」って書き込みを見たことはある。
369デフォルトの名無しさん:2015/03/03(火) 23:48:47.04 ID:CdhwEyDo
権限とスクリプト実行許可を混同しているな
370デフォルトの名無しさん:2015/03/04(水) 00:14:59.26 ID:AEKirzE/
確かに混同してしまったが >>363 が権限と言ってるから
371デフォルトの名無しさん:2015/03/04(水) 11:01:15.21 ID:9w9ZimTQ
レジストリいじるのにC#つかっても、どうせ権限必要だよね。
>>363
一概にスクリプト実行ができないわけじゃない。
ちなみに、C#つかえるなら、コマンドレット作成が容易にできるので
コマンドレット化すれば、実行ポリシーがRestrictedでも実行できたり
する。そういうつくり。
372デフォルトの名無しさん:2015/03/04(水) 14:47:41.63 ID:mLZy0Gsd
開発環境や外部ツールが使用可能な環境ならシステムデフォルトしか使えない環境より自由がきくわけで
そういうところはC#でもなんでも好きにやればいい
自由にできる環境だけがすべてじゃないからね
373デフォルトの名無しさん:2015/03/05(木) 01:50:54.56 ID:5Zc9dVue
組織変更に伴い、ファイルサーバとADの置換を行いたいとおもいます。
NTFSのアクセス権をSIDで検索してSIDできれば権限を置換したいのですが可能でしょうか?置換する元データはExcelで旧SIDと新SIDと権限を用意して、上から検索してEOFまで実行していきたいです。
374デフォルトの名無しさん:2015/03/05(木) 14:58:30.20 ID:iqH6ujDc
375デフォルトの名無しさん:2015/03/05(木) 14:59:14.73 ID:iqH6ujDc
376デフォルトの名無しさん:2015/03/07(土) 14:11:29.42 ID:z4BkCBiO
マルチってぜんぜん違う板だからいいと思うよ
書き込みないからっていらいらしない
377デフォルトの名無しさん:2015/03/07(土) 16:13:06.31 ID:1otiF0k1
>>376
板が違うほうが悪質ともいえる
普段からそうやって回答者の迷惑を考えずマルチで質問してる人間しかそういうことは言わないが
問題ないと思うならお前が回答してやればいい

知恵袋と2ch.netとのマルチでも質問関連のことをググった時にすぐ出てくるし嫌われる
なぜ嫌われるかわからないならググってください
それでもマルチしたいなら誰も見てないscでやってください
378デフォルトの名無しさん:2015/03/08(日) 13:17:50.33 ID:1i/muHjC
マルチがなぜ嫌われるのか理解できない奴はアスペか自閉症でしょ。
単発質問していくつか回答もらったときに結果を報告しない奴も、マルチとほぼ同罪。
嫌われる理由がわからない奴は、
知らないところで他人から陰口叩きまくられて蛇蝎のように嫌われていると覚悟したほうがいい。
379デフォルトの名無しさん:2015/03/08(日) 22:05:55.58 ID:A5EmItIf
> Google 日本語入力 インジケータ ウィンドウ

なんじゃこりゃーー
380デフォルトの名無しさん:2015/03/10(火) 23:10:57.67 ID:pMnv5Ibe
>>364
知らない
381デフォルトの名無しさん:2015/03/11(水) 16:46:59.87 ID:6tE0XEqn
印字 啓太 
宇 引導
382片山博文MZ ◆T6xkBnTXz7B0
Google Japanese input indicator window