Windows PowerShell 2.0

このエントリーをはてなブックマークに追加
1名無し~3.EXE
2名無し~3.EXE:2008/09/10(水) 21:18:12 ID:ccH1pLSE
PowerShell の起動を高速化する
ttp://flamework.net/archives/10
ttp://powershell.hiros-dot.net/post/2008/07/30/PowerShelle381aee8b5b7e58b95e38292e9809fe3818fe38199e3828b.aspx

スクリプトの実行ポリシー (Execution Policy) をグループポリシーで一元管理する
ttp://d.hatena.ne.jp/newpops/20080416

コマンドプロンプト・ UNIX系OSのシェルとのコマンド対応表
ttp://marxsoftware.blogspot.com/2008/03/comparing-unixlinux-powershell-and.html
ttp://en.wikipedia.org/wiki/Windows_PowerShell#Cmdlets_2

VBScript コマンドから Windows PowerShell コマンドへの変換
http://www.microsoft.com/japan/technet/scriptcenter/topics/winpsh/convert/default.mspx

キーバインド変更
XKeymacs
ttp://www.cam.hi-ho.ne.jp/oishi/
窓使いの憂鬱
ttp://mayu.sourceforge.net/

コマンドレットオンラインヘルプ作成 ver2
ttp://blogs.wankuma.com/mutaguchi/archive/2006/12/08/49387.aspx

Windows Server 2008 のサーバーコアに PowerShell をインストール
PowerShell on Server Core
ttp://dmitrysotnikov.wordpress.com/2008/05/15/powershell-on-server-core/
3名無し~3.EXE:2008/09/11(木) 00:56:53 ID:RJd2rL0W
■エディタとかIDEとか
PowerShell Analyzer (45日間試用可能)/ PowerShell Plus (個人使用無料)
ttp://www.powershell.com/index.html
PowerGUI
ttp://www.powergui.org/index.jspa
Admin Script Editor (45日間試用可能・ フォームデザイナ)
ttp://www.adminscripteditor.com/index.asp

■コマンドレットとかプロバイダとかその辺
・PowerShell Community Extensions
ttp://www.codeplex.com/PowerShellCX
・アクティブディレクトリー - Free PowerShell Commands for Active Directory
ttp://www.quest.com/powershell/activeroles-server.aspx
・IIS7 PowerShell Provider Tech Preview 2
ttp://blogs.msdn.com/powershell/archive/2008/07/03/iis7-powershell-provider-tech-preview-2.aspx
・グループポリシー - SDM GPMC PowerShell Cmdlets
ttp://www.sdmsoftware.com/freeware
・SSH クライアント / サーバー - NetCmdlets for Windows PowerShell
ttp://www.nsoftware.com/PowerShell/
・Officeファイル(Open XML)生成 ・操作 - Open Xml Power Tools at Staff DotNet Staff DotNet
ttp://staffdotnet.com/services/powertools.html

■その他
タブ補完機能強化ツール - PowerTab
ttp://thepowershellguy.com/blogs/posh/pages/powertab.aspx
・Visio 2007 用 Windows PowerShell スクリプト生成ツール
ttp://www.visio.jp/dl/visPowerShell/index.html
・WSH から PowerShell を利用する - ActiveX PowerShell(ActiveXPoSH)
ttp://www.primalscript.com/Free_Tools/index.asp
4名無し~3.EXE:2008/09/11(木) 20:59:26 ID:LacMpCfW
ぽしゅ
5名無し~3.EXE:2008/09/12(金) 12:42:40 ID:awoEO6eY
win板って即死判定あったっけ
6名無し~3.EXE:2008/09/13(土) 00:54:51 ID:/gSYkqLn
保守
7名無し~3.EXE:2008/09/13(土) 01:43:52 ID:Uypf/kPy
PowerShell の次世代版βとかについて語るスレかと思った。
次のバージョンの開発って進んでるのかな
8名無し~3.EXE:2008/09/13(土) 19:26:40 ID:uj8RD/Q9
CTP2が出た五月の時点で後一年±4半期くらいって言ってた
7にさえ間に合えばいいんだから今から後1年位掛けてくれてもいいけど
9名無し~3.EXE:2008/09/14(日) 01:37:47 ID:+idGER/y
SCVMM 2008はESXに対応するらしいけど、同じ要領でSQLPSも他のRDBMSに対応したりしないかしらん
10名無し~3.EXE:2008/09/15(月) 00:12:33 ID:ou2pHTgt
あげ
11名無し~3.EXE:2008/09/15(月) 04:01:27 ID:YkTsJ6z5
1年以上前にmixiで知り合った大阪の女性と(俺は東京)新宿で遊ぶ事になりました。
会う前から仲は良く、お互いに電話したり顔写真送りあったりしてました。

彼女は初めての新宿だったので色々と案内したり、西口の野村ビルにある洒落たバー で飲んだり、カラオケ行ったりしてさ。楽しかった。このまま時間が止まれば良いって思ったくらい。
でも、時間が10時過ぎた時に気がついたんです。彼女が帰れない事に。

やっぱり会ったばっかでラブホは気が引けるので漫画喫茶に行こうって話しになったんです。

マンボウに行ったんですが満席で、テンパってた俺に彼女は『シャワー浴びたいんだよね』と言い出したものだから期待してしまい、そのままの勢いでラブホに直行したんです。

コンビにで酒を買いラブホに入りました。このままヤっちゃうのだろうか?もう俺の脳内はHな事しか頭になかったです。

2,3時間ほど話したあと、彼女が『シャワー浴びるから、見ないでね恥ずかしいし』と言ったので「お、おう・・」と緊張ぎみに答えました。彼女がバスローブで出てきたので、俺は確実にHモードになってしまいました。

俺もシャワーを浴び、バスローブに着替え出ると、彼女はベッドで横になってました。
『眠いから電気消して?』「お、おう・・・」

10分後
『ねぇ、こっち来て?一緒に寝よう?』
「え、マジでいってんの?」『うん』

隣に寝て心臓がバクバクな俺、でもヤっちゃダメだと思いそっぽを向く俺 。官能と葛藤中の俺に
『ねぇ?私H好きなの。しよ?』「え!?う、うん・・」薄暗い部屋でバスローブを脱がし合いキス、愛撫をし、お互いが絶好?に達していた時
『入れていい?』と彼女。「うん・・・え???ん?」
『入れていい?』
「え?ん???」
『私チンコ付いてるの』
「・・・・・・はい??」以下は省略させて頂きますが、新手の詐欺に遭いました(ry)
12名無し~3.EXE:2008/09/15(月) 11:10:06 ID:2ntHBen4
PowerShell V2 Add-AcceleratorType function
ttp://thepowershellguy.com/blogs/posh/archive/2008/09/12/powershell-v2-add-acceleratortype-function.aspx

Function Add-AcceleratorType ($name,[string]$type,$code) {

$code = @"
public class $name
{
public static $type New() {$code}
}
"@

Add-Type $code -ReferencedAssemblies System.DirectoryServices

}

けっこー便利、[hoge]:: の時標準のTabExpansionも有効だし
13名無し~3.EXE:2008/09/17(水) 00:29:30 ID:rOacNyX+
Windows PowerShell: Windows PowerShell 2.0 のリモート管理の概要
http://technet.microsoft.com/ja-jp/magazine/cc718988.aspx
14名無し~3.EXE:2008/09/18(木) 18:15:37 ID:gtYRer6s
ttp://japan.zdnet.com/sp/feature/07microsoft/story/0,3800083079,20380552,00.htm
筆者はまた、「Graphical Console」別名「PowerShell Version 2」が、
この最新のWindows 7プレリリースビルドに含まれているようであることに気がついた。

ちゃんと2.0入れる予定らしくて何より
15名無し~3.EXE:2008/09/22(月) 22:38:27 ID:KLG87oyZ
この題名でシリーズ化するんかな

Managing Active Directory with Windows PowerShell
ttp://www.amazon.com/Managing-Active-Directory-Windows-PowerShell/dp/0977659798/
ttp://blog.sapien.com/index.php/2008/09/22/managing-active-directory-with-windows-powershell-in-print/

COMING SOON Managing VMWare with Windows PowerShell
ttp://www.sapienpress.com/vmware.asp
16名無し~3.EXE:2008/09/23(火) 01:33:14 ID:nBIfihnh
17名無し~3.EXE:2008/09/23(火) 21:01:20 ID:494pwEvc
18名無し~3.EXE:2008/09/25(木) 21:17:06 ID:D8Kf9Wgf
最新のPowerGUIインスコしたらエディタの方にプロンプト付のコンソールウインドウが付いてた
マウスとショートカットキーでコピペできるから本家より便利、Win2kでも動作確認
PowerGUI始まったな
19名無し~3.EXE:2008/09/26(金) 16:59:48 ID:4jeZDisr
しかし半端ない過疎り方だな。
cmdと比べてはるかに複雑で.NETの知識も必要だから
プログラム板とかじゃないと人来ないんじゃないかw
20名無し~3.EXE:2008/09/26(金) 19:01:26 ID:KY51cGoO
間違いなくcmdの方が難しい
21名無し~3.EXE:2008/09/26(金) 23:48:02 ID:j6pKULy6
まずは一般に普及しているOSに標準搭載されてから。話はそれからだ。
22名無し~3.EXE:2008/09/28(日) 00:57:46 ID:U42kulnW
その前にWindows2000をサポートしろと。
23名無し~3.EXE:2008/09/28(日) 02:44:21 ID:ZtNJCgIB
こんな需要あるんだねぇ
ttp://rikunabi-haken.yahoo.co.jp/h/r/HS1B075n.jsp?cmd=SEARCH&g=T&s_Code=0336214017&work_Cd=cmc055645&pre_Function=5

ていうかその本がテキスト・・・
24名無し~3.EXE:2008/09/28(日) 03:15:08 ID:ZtNJCgIB
ぐぐったら講習内容出てきた
ttp://www.nagoya-sc.co.jp/ap/seminar?m=1&key=8994

受けた人ががっかりしなけりゃいいけど
25名無し~3.EXE:2008/09/28(日) 18:42:58 ID:ejF0SV5L
PowerShell&win鯖&講師の経験があって平日バイトOKな人っているんだろか
26名無し~3.EXE:2008/09/30(火) 22:20:25 ID:sRneCn/D
Windows PowerShell Get-Enjoy コンテスト結果発表
http://www.microsoft.com/japan/windowsserver2008/countdown2008/powershell/default.mspx

こんなのあったんだね
MSはPowerShellに本気で取り組んでると思っていいのかなー?
いまだに量りかねるものがある
2K(server)は除外とか、標準サポートはWindows Server 2008のみとか
27名無し~3.EXE:2008/09/30(火) 22:38:42 ID:pa/Q1hxC
そこで紹介されてるVisioのツールは本社でも翻訳作業が進んでるみたいなこと7月にMVPが言ってたけど
それから2ヶ月ほど梨のつぶて
28名無し~3.EXE:2008/10/01(水) 09:49:04 ID:EL1sbOmN
Windows7に載る頃にはバージョン3になってそこからが本番じゃね?
29名無し~3.EXE:2008/10/01(水) 11:49:00 ID:A1R92k2q
V2が完成するのが来年なんだからそれはない
30名無し~3.EXE:2008/10/01(水) 14:24:46 ID:VEwM6m1I
最近だとVMwareの方が熱心だな、PowerShellの広報は。
31名無し~3.EXE:2008/10/02(木) 11:50:02 ID:g78qoo4J
これcmdのプロンプトから通常のスクリプト的に呼び出すことって無理なの?
pathextに.ps1登録して
foo.ps1を
>foo
って呼び出すようなかんじで
32名無し~3.EXE:2008/10/02(木) 13:05:05 ID:Vx21yPlG
>>31
関連付けがメモ帳になってるから、それをPowerShellにしてやればいい
33名無し~3.EXE:2008/10/02(木) 14:59:31 ID:O7TJFxGA
POWERSHELL ANALYZER NOW 100% FREE
http://www.shelltools.net/

だそうだぞ
34名無し~3.EXE:2008/10/02(木) 16:55:11 ID:O7TJFxGA
35名無し~3.EXE:2008/10/02(木) 20:11:02 ID:r76Nyc7D
C++クックブック
http://www.oreilly.co.jp/books/4873113032/
Flashクックブック― タイムライン派のための実用レシピ集
http://www.oreilly.co.jp/books/9784873113197/
Javaクックブック― Java開発者のためのレシピ集
http://www.oreilly.co.jp/books/4873110955/
Python クックブック 第2版
http://www.oreilly.co.jp/books/9784873112763/
Rubyクックブック― エキスパートのための応用レシピ集
http://www.oreilly.co.jp/books/9784873113241/

http://www.oreilly.co.jp/books/cookbook/
このへん読むとクックブックって中・上級者向けみたいだが
はじめて取り組もうかと思ってる人が買う本ではない?
36名無し~3.EXE:2008/10/02(木) 21:52:49 ID:tRVnRKZu
>>35
そういう人には PowerShell in Action かもしくはプログラマブルPowerShell を勧めるな、俺なら

>>33
例によって例のごとく2000でも動作確認
37名無し~3.EXE:2008/10/02(木) 22:34:17 ID:r76Nyc7D
>>36
本屋で中身の確認は必須なんだろうけどできないこともあって泣ける
あと、本の買い方にもあまり自信が無かったりする(後で後悔したり
だから助かります。ほんとにレスありがとう
38名無し~3.EXE:2008/10/02(木) 23:19:13 ID:Fl7tFPhU
>>31

powershell .\foo.ps1

とかやればいいと思うが。
39名無し~3.EXE:2008/10/03(金) 22:25:45 ID:q+w91gdI
>>36
プログラム関連の書籍はこんな感じで大別出来ると思いますが
入門書
リファレンス、辞典逆引き
仕様書
サンプル集

PowerShell in Action は仕様書、プログラマブルPowerShell は入門書になるのかな
40名無し~3.EXE:2008/10/03(金) 23:03:45 ID:q+w91gdI
まずはこの辺を揃えるのが良いでしょうか?
>>36さんのお勧めと、気になったものをピックアップしてみました
入門書   :プログラマブルPowerShell
リファレンス:Windows PowerShell ポケットリファレンス
仕様書   :PowerShell in Action
サンプル集 :Windows PowerShellクックブック

コンピュータ全般の知識はそこそこある。自力でトラブルシュートはできる。
DOSバッチが少々書ける程度で他プログラミングの経験は無い。
バッチは出来ないことが多いのでPowerShellを覚えようと思った。
用途は日常のPC操作や処理の自動化などの趣味の範囲。
長い目で見て仕事で使える腕前になれれば嬉しいです。
41名無し~3.EXE:2008/10/03(金) 23:10:36 ID:VTvDbSKG
fortuneみたいに一日一テクランダムに授けてくれるサイトが欲しい。
あんまり端からガチガチに勉強するようなもんでもないんだし。
とin actionを買っといて愚痴ってみる。
42名無し~3.EXE:2008/10/04(土) 00:19:50 ID:Sy+hvvW2
>>40
そういうことならプログラマブル〜の方がいいと思うよ
インアクションもちゃんと入門書してるけどね

>>41
ttp://blogsearch.google.co.jp/blogsearch?hl=ja&ie=UTF-8&q=PowerShell&lr=&scoring=d&as_drrb=q&as_qdr=d
43名無し~3.EXE:2008/10/04(土) 00:26:03 ID:Sy+hvvW2
こっちのがいいか
ttp://powershellcommunity.org/
44名無し~3.EXE:2008/10/04(土) 08:15:09 ID:9C7RK4Qe
>>40
>バッチは出来ないことが多いのでPowerShellを覚えようと思った

WSH覚えてもいいんじゃないの?
45名無し~3.EXE:2008/10/04(土) 08:18:25 ID:WidUG/pk
wsh、vbsはシェルスクリプトじゃないからな。
どうもあの小汚い文法には馴染めなかった。PSに感じる違和感も半端ないが。
46名無し~3.EXE:2008/10/04(土) 20:22:41 ID:Q9bsNS0S
cmdから他に移行すればどれにでも違和感覚えるのは間違いない
47名無し~3.EXE:2008/10/04(土) 20:44:43 ID:Q9bsNS0S
>>40見てて思ったけどcmdを使ってた人の為に書かれたPowerShellの本てないな
cmdでこうだった部分がこうなってるよって言うのを要所要所で解説してるはいるけど


某11の人、書いたらどうよ? 「コマンドプロンプトユーザーの為のPowerShell入門」
48名無し~3.EXE:2008/10/05(日) 02:54:14 ID:/pWgBAFs
>>40
つ Perl
マジオヌヌメ。
49名無し~3.EXE:2008/10/06(月) 04:28:27 ID:HauI1IlZ
>>48
Perl、Python、Rubyって
CMDやシェルと同じこと(似たようなこと?)ができると思っていいの?
50名無し~3.EXE:2008/10/06(月) 09:08:26 ID:gNsJKZ39
シェルスクリプトとスクリプトに厳密な区別はないよ。
雑に言えば外部コマンドを内部コマンドと区別なく'', ""なんかで囲まずに呼び出せるかどうかが違うだけ。
どっちも不慣れならまず
>Perl、Python、Ruby
を覚えた方がカバーできる領域は広い。
51名無し~3.EXE:2008/10/06(月) 11:33:01 ID:kkpMgkN4
しかしそれがめんどくさい人の為にシェルがあるんだと思うが。
52名無し~3.EXE:2008/10/06(月) 12:50:37 ID:zkStRBZG
マシンがしょぼいせいかどうもPowerShellは
小気味よく動く書き捨てシェルスクリプトって感じがしないんだよな。
今週マシン新調する予定だから、それでcmd並にお手軽に使えるようになるのかね。

もっさり起動さえ気になってなければPS一本でも十分なのかもしれないな。
53名無し~3.EXE:2008/10/06(月) 14:14:52 ID:4EEK36fM
だから真っ先に>>2で起動の高速化をテンプレに加えといたんだぜ?
54名無し~3.EXE:2008/10/06(月) 23:06:23 ID:obU/Z1aO
高速化ってどうしても怪しげな響きがしちゃうよなw
PowerShellの場合は、MSの中の人ブログでも公認の手法だったりする。
http://blogs.msdn.com/powershell/archive/2008/07/11/speeding-up-powershell-startup.aspx
「PowerShell V1には、インストール時にngenが行われない問題がある」ってことだそうで。
55名無し~3.EXE:2008/10/06(月) 23:18:25 ID:n61aG2J3
バッチがちょびっとできるくらいで
shell書いたことないインフラ屋に適したPowerShellの入門書ないですかね


ちなみに>>40の↓は難しそうでした・・・
>>入門書   :プログラマブルPowerShell
56名無し~3.EXE:2008/10/07(火) 00:13:12 ID:GxdcJuZk
>>55
こういう本読みなれてないだけなんでね
PDFでいいなら
ttp://download.microsoftvirtuallabs.com/download/8/a/7/8a71365b-4c80-4e60-8185-8f12f59bf1d4/loc/Windows_PowerShell_manual.pdf
とか入門向けの資料は検索すれば出てくる
57名無し~3.EXE:2008/10/07(火) 05:06:15 ID:A+FIJxu6
MSのくせにPDFなんて糞フォーマット使うなよ。
HTMLでオケ。
58名無し~3.EXE:2008/10/07(火) 06:54:08 ID:I3LC9M48
XPSを使わなかったことを褒めてやれよ
59名無し~3.EXE:2008/10/07(火) 08:28:51 ID:w3u8k31b
>>55
PowerShellの本自体がまだそんなに出てない。
他に入門になりそうな本っていうと
Windows PowerShell宣言!
Windows PowerShell ポケットリファレンス

PowerShell宣言!もどちらかというとレシピ集的な本だが。「プログラマブル〜」ほどプログラマ向けには振ってないと思う。
ポケットリファレンスの方は読んだことないが名前からしてリファレンスだよな…。
Webの入門記事みたいなのはそれなりにあるから、そういうのもあさってみるといいんじゃないかね。
60名無し~3.EXE:2008/10/07(火) 18:48:07 ID:xVh3+xF4
>>50
>シェルスクリプトとスクリプトに厳密な区別はないよ。
いや、そんなことはない。

シェルは、外部コマンドを利用するのが前提。
スクリプトは、基本的に他に依存せずに処理できる。
61名無し~3.EXE:2008/10/07(火) 18:51:43 ID:dJhG0Wnh
じゃあPowerShellはシェルスクリプトじゃないね。
62名無し~3.EXE:2008/10/07(火) 18:58:36 ID:xVh3+xF4
>>55
インフラ屋なのに、Perlとかも知らないの?

それはともかく、PowerShellってドトネトのオブジェクトや
ライブラリとかの知識がこっそり前提になってたり
するんで、すっぴんからはちょとしんどいんじゃね。

まー、がんばれや。
6360:2008/10/07(火) 19:04:22 ID:xVh3+xF4
>>61
あー。

いやでも、外部コマンドのかわりに、ドトネトに依存
しているという意味で、一種のシェルだとオモ。
64名無し~3.EXE:2008/10/07(火) 21:03:34 ID:7pGLRx9D
スクリプトエンジンなのに、いきなりスクリプト実行禁止に設定してあってびっくらする
マイクロソフトらしからぬ用心深さ
65名無し~3.EXE:2008/10/07(火) 21:50:59 ID:z0cCGQxX
VBScriptで好き放題された経験があるからなあ
66名無し~3.EXE:2008/10/07(火) 22:18:04 ID:u0cp70/Z
PowerShellを使えばEnglishの言語仕様や標準ライブラリを覚える苦痛から解放されますか?


67名無し~3.EXE:2008/10/07(火) 22:23:25 ID:8K1O6pfD
日本語はずれまくりんぐ
68名無し~3.EXE:2008/10/07(火) 23:33:04 ID:/LNtA1Xt
シェルは外部コマンドの利用するものなんて定義はじめて聞いた

シェルってOSの殻(UI)っていみだから、対話利用を前提に作られたもののことでしょ

sh系はシェルとしてもともと作られていたものからスクリプト機能が付け加えられたから
シェルスクリプトで、perlやrubyは対話利用も出来るけど基本はスクリプト言語

PowerShellも対話利用がベースだから普通にシェルじゃん
69名無し~3.EXE:2008/10/09(木) 09:07:40 ID:FNN8gfvG
>>68
対話利用前提って、バッチ処理じゃなきゃふつうはそうじゃね。w
70名無し~3.EXE:2008/10/09(木) 09:45:37 ID:Bcg5+VxJ
PSはMSにしては結構な野心作なんだから
古い定義による線引きなんて意味ないよ。
71名無し~3.EXE:2008/10/09(木) 12:56:51 ID:jrd2AQje
>>70
MSの野心作か。
なんか縁起が悪そうだな。w
72名無し~3.EXE:2008/10/09(木) 18:56:05 ID:R/GN8Hc9
>>40>>55は何か解決したん?おいちゃん相談乗ったげるよ?
73名無し~3.EXE:2008/10/10(金) 12:30:35 ID:pYt3nZwU
Windows PowerShell 実践システム管理ガイド
ttp://www.7andy.jp/books/detail/-/accd/R0378022
既刊書「Microsoft Windowsコマンドライン活用ガイド」のPowerShell版。
従来型のGUIベースの管理に代わる、CUIベースの管理手法を解説。

というわけでこれ↓のPowerShell版らしい
ttp://ec.nikkeibp.co.jp/item/books/587500.html
74名無し~3.EXE:2008/10/10(金) 21:06:15 ID:wMcAB9/o
>>49 cmdよりずっと多くのことができる。ただし、速度の面で難があったりもする。
75名無し~3.EXE:2008/10/14(火) 05:58:59 ID:SIaSASnh
ガーリックナンおいしいよね
76名無し~3.EXE:2008/10/14(火) 13:09:56 ID:dAH0zSjs
>>74
cmdとPerlとかを比べる文脈で、速度の話に
どんな意味が。
PerlはもちろんRubyだって、cmdのかわりに
使うぶんには遅くて困ることなんかないだろ。
77名無し~3.EXE:2008/10/15(水) 00:04:44 ID:CsWMUKfH
ttp://blogs.msdn.com/powershell/archive/2008/10/14/gogrid-snap-in-managing-cloud-services-with-powershell.aspx
> as you’ll see at the PDC and our next CTP

まさかのCTP3wwwwww
78名無し~3.EXE:2008/10/18(土) 11:50:36 ID:vkXtcIdA
DLR統合してくれたら面白いのになぁ。
でも今更無理か。
79名無し~3.EXE:2008/10/18(土) 12:12:34 ID:/X2GysLa
Dottiyo? Left? Right?
80名無し~3.EXE:2008/10/18(土) 15:12:14 ID:mp3xP09g
はっきりCTP3って言葉を使い出してきた
ttp://blogs.msdn.com/powershell/archive/2008/10/18/emit-xml.aspx
cmdletキーワードはなくなってfunctionに統合されるらしい

さーパパwktkしてきたぞー
81名無し~3.EXE:2008/10/19(日) 11:22:46 ID:VjJfMNqA
>>78
ぱっと出てこないんだけど、何か思いつくような利点あるの?
82名無し~3.EXE:2008/10/22(水) 11:47:48 ID:5d9regLQ
utf8なテキストをコマンドプロンプトで表示する
ttp://blog.mogya.com/2007/11/utf8.html

これと同じ操作をしてもPowerShellだとうまくいかない
ぼすけて、いや困ってないけど
83名無し~3.EXE:2008/10/22(水) 14:58:56 ID:oIMYoxuQ
>>82 テキストがUTF-8ではないのか、あるいは、Powershellが壊れているんだろう。
84名無し~3.EXE:2008/10/22(水) 15:50:19 ID:ffMXJ8uM
>>82
PowerShellって内部文字列はユニコードだから、画面に出すときは自動でShiftJISに変更してるんじゃ。
まぁ -encoding UTF8 で表示すればすむ話だと思うけど。
85名無し~3.EXE:2008/10/22(水) 23:15:27 ID:mk2+shZL
>>83-84
もう一度やってみたら出来たー、り、出来なかったり
テキストファイルじゃなくて出力がUTF8なネイティブコマンドの場合どうなるのか知りたかった
$OutputEncodingとか[Console]::OutputEncodingを弄ると良くないのかな
もうデフォルトがなんだったのかも分からん
86名無し~3.EXE:2008/10/23(木) 09:48:32 ID:a9J6XFjC
UTF8で書かれたファイルを表示したいだけなら、type -encoding utf8 *.txt でできる。
この場合、UTF8で書かれたファイルの内容が一度UTF16に変換され、さらにシフトJISに変換されて表示される。
最終的にシフトJISになるので、その範囲外の文字は「?」になってしまう。

シフトJISをからめたくない場合は、chcp 65001を実行した後、
その上からさらにPowerShellを起動すれば良い。
> chcp 65001
> powershell
> type *.txt
上記のようにすれば、UTF8で書かれたファイルをそのまま表示できる。
これならば、シフトJIS範囲外の文字も表示できるし、
UTF8を出力するコマンドも扱える。
87名無し~3.EXE:2008/10/23(木) 23:52:55 ID:TvP3l7zH
PowerShellクックブック買ってきた。相変わらず分厚いな。
最初から読めばある程度入門的にも読めるかも? コマンドラインくらいの知識は必須だが。
88名無し~3.EXE:2008/10/24(金) 11:01:38 ID:5jjGg1+3
Get-ContentはBOM付きテキストは自動でエンコード判別してくれるんだよな
逆にAdd/Set-Contentは必ずBOM付けちゃうけど、できれば選択制にして欲しい
89名無し~3.EXE:2008/10/26(日) 08:35:55 ID:rJRbRx9S
90名無し~3.EXE:2008/10/27(月) 09:53:48 ID:4LjV4Z33
PowerShellのPDCセッション最終日か、金曜までCTP3のスライドお預けだな
91名無し~3.EXE:2008/10/29(水) 03:45:31 ID:98YJ70Yn
PowerShell will be installed by default on Windows Server 08 R2 (WS08R2) and Windows 7 (W7)!
ttp://blogs.msdn.com/powershell/archive/2008/10/28/powershell-will-be-installed-by-default-on-windows-server-08-r2-ws08r2-and-windows-7-w7.aspx

今度はしっかりServer Coreにもインストールできるみたいね
まあでもこの発表は2年前にVistaで聞きたかった
92名無し~3.EXE:2008/10/29(水) 09:58:11 ID:9BvBRmp3
> The reason why I'm counting Troubleshooting is because it is all PowerShell based!
93名無し~3.EXE:2008/10/29(水) 10:13:35 ID:9BvBRmp3
> Now, how about giving us an easy way of putting it on all our existing XP/Vista workstations without SMS.

We understand the need but have nothing to announce. Probably won't for a few quaters.

どういうこっちゃ
94名無し~3.EXE:2008/10/30(木) 01:27:28 ID:VgQ8WwnP
こっちにもWindows 7にPowerShell 2.0が入るって書いてある。
Windows 7 Developer Guide 
http://code.msdn.microsoft.com/Win7DeveloperGuide/Release/ProjectReleases.aspx?ReleaseId=1702
95名無し~3.EXE:2008/10/30(木) 01:51:35 ID:zAvh2pfR
PowerShell全方位射撃ktkr
574 Reasons Why We Are So Proud and Optimistic About W7 and WS08R2
ttp://blogs.msdn.com/powershell/archive/2008/10/29/574-reasons-why-we-are-so-proud-and-optimistic-about-w7-and-ws08r2.aspx
96名無し~3.EXE:2008/10/31(金) 10:47:15 ID:maivrjWx
PowerShell対数増殖期突入
ttp://blogs.msdn.com/powershell/archive/2008/10/31/powershell-ise-and-visual-studio.aspx
PowerShell's Integrated Scripting Environment (ISE) actually uses an editor control
which uses the same technology that will be in the next version of Visual Studio.
97名無し~3.EXE:2008/10/31(金) 10:59:34 ID:maivrjWx
いやエディタコントロールがVSのものになるってだけか・・・
98名無し~3.EXE:2008/11/01(土) 01:01:23 ID:0dPkZRpM
99名無し~3.EXE:2008/11/01(土) 01:14:50 ID:wcsmF8OW
ISEのスクリーンショット
ttp://blog.yozora.org/2008/10/31/windows-7/
ttp://blog.yozora.org/wp-content/uploads/2008/10/win7_15.jpg

なにやら見慣れないコマンドがちらほらと
今度はネイティブコマンドとEnterだけで改行できるようになってるかなー
100名無し~3.EXE:2008/11/01(土) 14:35:05 ID:1dxhTaBt
PDCセッション
ttp://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/ES24.wmv
ttp://blogs.msdn.com/powershell/attachment/9027085.ashx


CTP3は12月・・・ゆっくりしていってね!!
101名無し~3.EXE:2008/11/03(月) 19:35:14 ID:iQAQBF7J
>>98
PowerとShellの間にスペース入れるな
なんで2004年にPowerShellが検索されてんだ?って思ったじゃないか

http://www.google.com/trends?q=PowerShell%2CWSH&ctab=0&geo=all&date=all&sort=0
102名無し~3.EXE:2008/11/04(火) 01:20:13 ID:BT1FrODa
スマソorz
103名無し~3.EXE:2008/11/04(火) 20:36:44 ID:wIu9U0O9
フリーのPowerShell用フォームデザイナ

Free PrimalForms tool for PowerShell released
ttp://blog.sapien.com/index.php/2008/11/03/free-primalforms-tool-for-powershell-released/

選べるのは標準コントロールだけで、スクリプトエディタはないけど無料というのが素晴しい
2年足らずでここまで来るんだからPowerShellはほんとサードパーティに恵まれてるわ
104名無し~3.EXE:2008/11/04(火) 21:20:43 ID:Pf8cVovr
>>103
スゲー
ここまでくると C#でいいや('A`)

メモ:
http://www.10minutemail.com/10MinuteMail/
105名無し~3.EXE:2008/11/04(火) 22:05:10 ID:ItkSYboJ
バルーンでテキスト出すのってどうやるの?
106名無し~3.EXE:2008/11/05(水) 20:57:17 ID:/DNyvaI1
>>27
ようやく完了したみたい
PowerShell for Visio
ttp://visiotoolbox.com/downloads.aspx?resourceid=2

>>105
それだけじゃ状況が全く分からない
107名無し~3.EXE:2008/11/07(金) 20:06:28 ID:dI58RV0S
次のCTP/Betaが出てから更に1年かかるらしい

PowerShell v2 Release Schedule
ttp://dmitrysotnikov.wordpress.com/2008/11/06/powershell-v2-release-schedule/
Here at TechEd EMEA Jeffrey Snover has just announced detailed release schedule for PowerShell v2 (currently available as CTP 2):

December 2008 - CTP 3 (Community Technology Preview) or Beta 1 if it meets the internal criteria and all names/features are finalized.
RTM - end of 2009/early 2010 as part of Windows 7 and Windows Server 2008 R2.
RTM for XP, 2003, Vista, and 2008 - as a downloadable package (with new WinRM bundled in there) a few months after that (that is H1 2010).

さすがJeffrey!俺達におれたちにできない事を平然とやってのけるッ
そこにシビれる!あこがれるゥ!
108名無し~3.EXE:2008/11/07(金) 21:27:59 ID:ngm3q2tM
ということは、Windows7に標準搭載はしないの?
109名無し~3.EXE:2008/11/07(金) 21:29:59 ID:vPJsp+UY
>>108
これをどう読んだらそういう結論になるの?

>RTM - end of 2009/early 2010 as part of Windows 7 and Windows Server 2008 R2.
110名無し~3.EXE:2008/11/07(金) 22:44:41 ID:ngm3q2tM
英語読めない
111名無し~3.EXE:2008/11/08(土) 11:22:10 ID:zHj+Vw5N
上でPerl Ruby Phthon覚えたほうが適用範囲が広いとか言ってる人いるけど、
環境がWinっていうことではさすがに、PowerShellの方がよっぽど便利だと思うよ。
いいわーこれ。これで、Win上の疑似的なUnix環境(cygwin)からおさらばできる。
と思ってたら。moreライクなページャは我慢ならんな。
"lv -Os"をAliasしようとするとスイッチNGって・・・orz
lvs ってfunction作りました。結局、Cygwinのお世話に・・・
思うように動かなくて、パイプで渡されるオブジェクト調べるはめになったり
.netに精通してない俺にはなれないことも多いけど、
コマンドライン環境として、これなら十分満足
SS2からプログラム環境としてBSDでやってきたけど、
winをメインにやっていこうって決心がようやくできました。
112名無し~3.EXE:2008/11/08(土) 12:12:07 ID:SZWU7ZVb
そんな君の為に>>2のテンプレにあるコマンド対応表を見るとPSCXにlessコマンドがあるんだなというのが分かるようになっているわけだ
113名無し~3.EXE:2008/11/08(土) 14:06:12 ID:zHj+Vw5N
教えてくれてありがと
ホホー、extension コミュニティなんてあるんだ。
ありがたくダウソさせてもらった
けど、ここにあるless.exe使うんなら、
Cygwinにあるlv.exeやless.exe使うのと変わらんと思うけど?
PoerShellだけでどうやってんのかすっごく興味あったけど、
他の言語で.exe作るならまぁできるわね。俺はAlias lvs lv -Osを以下でごまかした。

$OutputEncoding = [Console]::OutputEncoding
function global:lvs(){
 if( $args -ne ""){
  foreach($i in $args){
  lv -Os $i
} else {
  $lines = @($Input);
  $lines | lv -Os
 }
}

PS:
extensionインストールした後で、
PATH見ると最後にextensionディレクトリをアペンドしてるだけで明示的に指定しない限り
その前にセットしたディレクトリ中のコマンドが影響受けるんじゃないとわかってホットした。
あと、プロンプトは元に戻した
114名無し~3.EXE:2008/11/08(土) 15:02:16 ID:SZWU7ZVb
Exactly(その通りでございます).
115名無し~3.EXE:2008/11/09(日) 08:04:28 ID:/Hh5bOhU
引数がPathのコマンド import-csvとかって
相対パスが使えないのな。.\hoge.csvとかしてもダメ。
そこでpwdと繋げたろ、とか考えたんだが
ふと気付けば`pwd`みたいなコマンド展開ってないんだよな?
ないんだよな?
実はあるって言ってくれー!
116名無し~3.EXE:2008/11/09(日) 11:19:17 ID:XUQ/kyLQ
"$(pwd)\hoge.csv"
(pwd).Path + "\hoge.csv"
117名無し~3.EXE:2008/11/09(日) 14:21:09 ID:zjRmeERF
>>115

Import-Csvは相対パス使えるでしょ?
.\hoge.csvも..\hoge.csvも動いたよ。
118名無し~3.EXE:2008/11/09(日) 14:57:46 ID:6z0MbqnQ
cd C:\Windows
$x=pwd
$x

Path
----
C:\WINDOWS
119名無し~3.EXE:2008/11/09(日) 15:16:56 ID:6z0MbqnQ
まだ1月しか触ってないけどPerl+bashでできることでPowerShellにできないことってないんじゃない?
Tcl/Tkみたいなこともできるし。そんな表面的なことよりもっと奥深い印象
Rubyのようにcomplexは扱えないけど
逆にシェルスクリプトになんでcomplex実装したのかのほうが疑問?
120名無し~3.EXE:2008/11/09(日) 17:57:09 ID:uVh0/LEE
$$や$^を使いこなせる人はそういないだろうけど
$PWDくらいは使おうぜ
121名無し~3.EXE:2008/11/09(日) 19:47:54 ID:uVh0/LEE
v2.0 CTP2のTabExpansionを物凄く適当に1.0に移植してみた
ttp://cid-40405a7c2ae2b5b7.skydrive.live.com/self.aspx/TabExpansion/tab.ps1
122名無し~3.EXE:2008/11/09(日) 20:00:36 ID:KWEJQAhQ
>>119 マルチスレッドとファイルマッピングオブジェクトが使えればなぁ、と常々思う。
123115:2008/11/10(月) 06:42:40 ID:EXcprUZN
>116-
レスども。しかしどれやってもうまく行かないのは何でだろう。
こんなかんじ。

PS C:\home\orz\csv> Import-Csv (pwd).Path+"code1.csv"
Import-Csv : パラメータ名 '+code1.csv' に一致するパラメータが見つかりません。
発生場所 行:1 文字:11
+ Import-Csv <<<< (pwd).Path+"code1.csv"

ちなみにMSSQL2008のExpress Edition入れた時ついてきたPowe Shellで
バージョンは確かめられない(-vしても出ねーし「プログラムの追加と…」に入ってねーし)
けど、インスコされたフォルダ名にv1.0というのが入ってた。環境はXP、Professional
なんか変なのかな?
124名無し~3.EXE:2008/11/10(月) 10:41:04 ID:I23Naipb
>>123
(pwd)じゃなくて
$(pwd)だぞ。
125124:2008/11/10(月) 11:07:48 ID:I23Naipb
間違い。$の有無じゃなかった。
Import-Csv ((pwd).Path+"\code1.csv")
もしくは
Import-Csv "$((pwd).Path)\code.csv"
だな。

直接書いたときと引数のときで解析の仕方が変わるからこの辺ちょっとややこしい。
> Import-Csv (pwd).Path+"code1.csv"
でだめなのは、「(pwd).Path+"code1.csv"」がそのまま一つの文字列と認識されてしまうため。

詳しくは
help about_Parsing
を参照。
126名無し~3.EXE:2008/11/10(月) 13:54:43 ID:R3Q/ZpBR
>>122
マルチスレッドはNew-Delegate使えば一応出来るよ
ttp://flamework.net/archives/3
127名無し~3.EXE:2008/11/10(月) 15:02:23 ID:EcNm7BOb
>>126 なるほど〜感謝感謝。
128名無し~3.EXE:2008/11/10(月) 23:31:31 ID:SGt30ekm
>>121
多分$env:aとか$array[0].aとかで補完効くように更新
129名無し~3.EXE:2008/11/11(火) 01:50:11 ID:JS3N0Yi1
ttp://fixunix.com/linux/553555-windows-powershell-vs-bash-examples-7.html

Jefferyさん何やってんすかwwwwwwwww
130名無し~3.EXE:2008/11/11(火) 01:58:44 ID:JS3N0Yi1
まあちゃんと?ver3.0も作っていく予定みたいで期待
131名無し~3.EXE:2008/11/11(火) 02:45:55 ID:y+UaBcu9
>>125
こう書くと余計なことを考えなくても済むと思う。
Import-Csv($pwd.ToString()+"\code1.csv")

俺は新機能なんかどうでもいいから
早く Excel2007 を 2003 同様に使えるようにして欲しい。
V2だといけるんだよね?
1.0に逆移植して、さっさと使えるようにして欲しい。

ExcelPackage も良さそうだけど、俺が欲しいのとは微妙にずれてる気がするなり。
http://www.codeplex.com/ExcelPackage
132名無し~3.EXE:2008/11/11(火) 02:52:30 ID:y+UaBcu9
Import-Csv($pwd.path+"\code1.csv")
やっぱこっちの方が楽だな。
打つ出し脳。
133名無し~3.EXE:2008/11/11(火) 10:06:35 ID:W/ezy01q
この例だと、
Get-Locationのaliasとしてのpwdと、特殊変数のPWDがあるせいでさらにややこしくなってるな。
$pwdって書くと変数の方で、(pwd)って書くとGet-Locationの返り値。
まぁ結果はいっしょなんだけど。
134名無し~3.EXE:2008/11/11(火) 10:07:52 ID:W/ezy01q
返り値って書いちゃうとおかしいね。出力結果ですな。
135名無し~3.EXE:2008/11/11(火) 10:35:23 ID:JS3N0Yi1
まあぶっちゃけ、 Import-Csv $pwd\code1.csv でいいわけだけども
136名無し~3.EXE:2008/11/11(火) 22:52:44 ID:eBTYzG1Q
変数を書く位置によって解釈が変わるのか。
ちょっとめんどいな。

つーかPathInfo型はデフォルトでString型に変換されるのかね。
その辺がよくわからん。
137名無し~3.EXE:2008/11/12(水) 03:37:36 ID:0FVh+Qth
コマンドモードでその引数が $ @ ' " ( 以外の文字で始まる時と
$ @ ' " ( で始まる引数に \ / が連続している場合は式モードにおいてその両端を""で囲ったのと同義、っていうだけ

""で囲った場合に任意の型がどのように型変換されるかは
Trace-Command -Expression {"$pwd"} -Option all -Name * -FilePath traace.txt
とかやって出力結果見てみればわかる
138名無し~3.EXE:2008/11/12(水) 04:02:12 ID:LEvZ+A5z
出力結果が凄すぎてわかりません><
"$pwd"がStringになるってだけならまあわかる。

Import-Csv($pwd\code1.csv)
これがうまくいかない理由はなんだろう?
139名無し~3.EXE:2008/11/12(水) 04:40:01 ID:0FVh+Qth
コマンドモードでも引数が $ @ ' " ( で始まる場合はその引数をそのまま式として評価する(上記の通り例外有)
($pwd\code1.csv) という式は先頭の $ の直後に { や ( がないので変数名と解釈されるけれど
$pwd\code1.csv なんて変数は存在し得ない(変数名に\は使えない)のでエラーになる
140名無し~3.EXE:2008/11/12(水) 04:52:53 ID:LEvZ+A5z
Import-Csv $pwd\code1.csv
でもこれだといけるね。

例外になるかならないかの理由がわかんない。

質問ばっかでごめん。
もう寝る。
141名無し~3.EXE:2008/11/12(水) 05:34:40 ID:0FVh+Qth
コマンドが先頭にある場合の解釈モードのことをコマンドモード
コマンドモードでは内部的には各引数が自動的に""で括られる Import-Csv code1.csv → Import-Csv "code1.csv"
例外的に引数の頭文字が $ @ ' " ( である場合はその引数を""で括らない Import-Csv $pwd → そのまま
しかしさらにその例外として \ / が付いている場合はやはり自動的に""で括られる Import-Csv $pwd\code1.csv → Import-Csv "$pwd\code1.csv"
142名無し~3.EXE:2008/11/12(水) 20:08:45 ID:QXyzGFh4
なんというページの無駄遣い

【ハウツー】ゼロからはじめるWindows PowerShell - 環境構築編 (1) PowerShellの概要.1
ttp://journal.mycom.co.jp/articles/2008/11/12/powershell/index.html
143名無し~3.EXE:2008/11/12(水) 23:11:28 ID:0f3/dhkY
>>141
なんだかうるう年の定義みたいだ。
144名無し~3.EXE:2008/11/13(木) 00:49:37 ID:46jmXmha
定義を追おうとすればややこしくはなるね
コマンドを実行する時はファイル名やパスを渡すことが多いから、それに配慮した感じ

Import-Csv "code1.csv" みたいに常に""で括るより Import-Csv code1.csv の方が自然
Import-Csv $pwd を Import-Csv "$pwd" のように解釈されると意図した型を渡せない
Import-Csv "$env:windir\code1.csv" が Import-Csv $env:windir\code1.csv と書ければ楽
145名無し~3.EXE:2008/11/13(木) 01:27:53 ID:V0ox5hDG
>>139 の説明の一部がちょっとだけ違う気がする。
$pwd\code1.csv でも $pwd"\code1.csv" でも、どっちもエラーは
「式またはステートメントのトークン '\code1.csv' を使用できません。」
だから、$pwdという変数はちゃんと解釈されていると思う。
式の最初が変数のとき、その直後に文字列なんか書いても文法に合わないっていうことじゃない?
$pwd-eq"\code1.csv" だとエラーが出ずにFalseだのTrueだの出るし。

Import-Csv($pwd-eq"\code1.csv")
ってやったら、Falseって名前のファイルを開こうとしてワロタw
146名無し~3.EXE:2008/11/13(木) 02:01:37 ID:1q4VY7Go
>>142
まだ日本語記事少ないし、基礎から入門ってのもいいんじゃねと思って見てみたが
…これはひどいwww
147名無し~3.EXE:2008/11/13(木) 02:34:58 ID:V0ox5hDG
>>142
いまどきはこのくらいやった方がいいのかも。
次回はコマンドの打ち方とヘルプの使い方かな。
148名無し~3.EXE:2008/11/13(木) 14:01:59 ID:WPGUO1ML
http://sankei.jp.msn.com/photos/economy/business/081113/biz0811131333008-p1.jpg

http://sankei.jp.msn.com/affairs/trial/081113/trl0811131124005-n1.htm
女性の背後からケータイで尻撮影…これ「卑猥」? 最高裁初判断

テレビのロケなんてほとんど犯罪やな。
149名無し~3.EXE:2008/11/13(木) 15:10:04 ID:5Z1iYNbG
>>146
ゼロからはじめて、とりあえず0.01ぐらいまで行った、って感じ?
150名無し~3.EXE:2008/11/14(金) 01:14:16 ID:L7Uvn4u9
Get-Helpとわざと入力間違いする以外の方法で-Encodingや-ExecutionPolicyの定数を習得する方法ってないもんかね
151名無し~3.EXE:2008/11/14(金) 01:16:31 ID:L7Uvn4u9
取得の間違い
152名無し~3.EXE:2008/11/14(金) 01:40:27 ID:A+R7elkP
質問があるのですが
*とかのワイルドじゃなくて~みたいなのを使ってProgram Filesのフォルダにアクセスするのってどういう記述でしたっけ?
C:\Program Files\hoge.exeにアクセスしたいのですが
スペースがある為C:\Programと認識されてしまいます。
*でワイルドにするとソフトが立ち上がるのが遅くなりますので~でやりたいです。
153名無し~3.EXE:2008/11/14(金) 01:52:46 ID:6VvyQFU0
>>152
8.3形式の短い名前のこと?
154名無し~3.EXE:2008/11/14(金) 04:12:34 ID:OPAP25YA
C:\Program Filesの代わりにC:\Progra~1ってやつか
それより
'C:\Program Files\hoge\hogehoge.exe'
でいいんじゃ?

プログラムを起動するなら&で
&'C:\Program Files\hoge\hogehoge.exe'
155名無し~3.EXE:2008/11/14(金) 11:10:48 ID:A+R7elkP
>>153-154
レスありがとうございます。
~1ってやつです。助かりました。
156名無し~3.EXE:2008/11/14(金) 11:29:09 ID:7kw2Pl5v
Changes from CTP2 in PowerShell 2.0 in the Windows 7 M3 “PDC” Build
ttp://www.nivot.org/2008/11/14/ChangesFromCTP2InPowerShell20InTheWindows7M3PDCBuild.aspx

ping終了のお知らせ・・・よりもはBits関連に注目するべきか
157名無し~3.EXE:2008/11/15(土) 01:22:50 ID:Nqpfe56j
Windows PowerShell 独自コマンドレットの開発
http://codezine.jp/article/detail/3191
158名無し~3.EXE:2008/11/15(土) 02:34:09 ID:BC9En8OX
>>150
(Get-ExecutionPolicy).gettype() とか Get-ExecutionPolicy | get-member
とかやって試してたら、 (Get-ExecutionPolicy).value__ で数字が取れたし
[microsoft.powershell.executionpolicy]0 とかでオブジェクトもとれたけど。

[microsoft.powershell.executionpolicy] | get-member -static でも
プロパティに出てくるし
[microsoft.powershell.executionpolicy]::GetValues("microsoft.powershell.executionpolicy")
でも一覧が出た。GetValues を GetNames にしたら、微妙に違うな。
159名無し~3.EXE:2008/11/15(土) 11:26:25 ID:jEjWBC/Q
演算子 < が使えないのは不便じゃないですか?

> でファイルは出力できても、< ができないのでデータをソフトに戻せません。
みなさんは < を使うときは仕方なく昔のコマンドプロンプト使ってるんですか?
160名無し~3.EXE:2008/11/15(土) 11:43:48 ID:Ftxb39q4
>>159
Get-Content とかでいいのでは
161名無し~3.EXE:2008/11/15(土) 11:48:52 ID:57TVri5I
in actionで<は次バージョンでサポートするのしないのといってたような
162名無し~3.EXE:2008/11/15(土) 17:53:39 ID:bcee+mY4
くっ
163名無し~3.EXE:2008/11/15(土) 18:30:50 ID:Fp6h69TY
試さずに言ってるけど、>>126利用して標準入力にデータ流し込めばできない?
標準入力しか受け付けないコマンドを久しく使っていない俺です
164名無し~3.EXE:2008/11/15(土) 18:55:38 ID:ixKzwyOI
なんで>>126なんだ?
>>160でいいだろ?
165名無し~3.EXE:2008/11/15(土) 19:41:05 ID:Fp6h69TY
あれ、標準入力しか受け付けないプログラムって command (type data.txt) と command < data.txt で同じなんだっけ・・・
コマンド実行して入力待ちになったら別スレッドでデータ読み込んでSendkey、みたいな感じを一瞬想像した
166名無し~3.EXE:2008/11/15(土) 21:48:50 ID:ixKzwyOI
ふつうパイプを使うだろ
167名無し~3.EXE:2008/11/15(土) 23:37:27 ID:Fp6h69TY
パイプ入力を受け付けない類のネイティブコマンドで<使えないからどうしようって話なんかなと
168名無し~3.EXE:2008/11/16(日) 05:17:38 ID:L+McnuSX
cmd.exeの引数に、文字列で渡してやれば行けそうな気がする。
169名無し~3.EXE:2008/11/16(日) 11:19:52 ID:e1OwLSt3
パイプ入力も、標準入出力も同じモノだと思ってたが、これって間違いなの?
hoge.exe < hoge.txt ができるなら
type hoge.txt | hoge.exe だって出来ると思ってた。(バイナリファイルは壊れますが)
170名無し~3.EXE:2008/11/16(日) 15:28:01 ID:+MSN7HFx
基本的なことで質問します。key=商品名, value=価格 を要素に持つ連想配列を用意します。
トータル価格を算出したいのです

$global:PCshopping = @{
"CPU" = "3.5";
"Memory" = "2";
"MB" = "4";
"GC" = "3";
"HDD" = "2";
"Case" = "3";
"PS" = "2";
};

$nameorder = ($PCshopping.GetEnumerator() | sort name);

[double] $Paying = 0.0;
foreach ( $x in $nameorder){
$Paying += $x.value
}

"Total Price = $Paying";

$Paying = 0.0;
foreach ( $x in $PCshopping.values){
$Paying += $x;
}

"Total Price = $Paying";


171つづき:2008/11/16(日) 15:32:34 ID:+MSN7HFx
問題なのはトータル価格算出の2つのforeachなのですが
並び替え後の $nameorderと並び替え前のPCShoppingは上のリストのように書かないと、
正しく動作しません。つまり、

foreach($x in $nameorder.values){
$Paying += $x
}

とか

foreach($x in $PCshopping ){
$Paying += $x.value
}

では動作しないんですが、これはどういう風に考えればいいのか理解出来ずにいます。
どなたかご教示くださいmOm
お願いします
172名無し~3.EXE:2008/11/16(日) 16:12:16 ID:+MSN7HFx
>>169
出力は3タイプ

write-host 標準出力
write-output パイプ出力
write-debug デバッグ出力

尚、他言語出力がどれに相当するかはいまいちよくわからない。
標準出力とデバッグ出力の区別はわかるけど、
標準出力とパイプ出力が違うってので、いろいろ混乱してる。
思うようなパイプ出力をハンドリングできてないというか・・・撃
あれこれやってみて、うまくいったり、あきらめたり。。。。
173名無し~3.EXE:2008/11/16(日) 17:11:32 ID:HYoFoab0
>>171
$PCshoppingはHashTable
$nameorderはDictionaryEntryの配列
クラスが違うから当然メソッドも違う。
何も不思議なことはないと思うが?
174名無し~3.EXE:2008/11/16(日) 17:14:00 ID:HYoFoab0
>>172
Write-Hostは標準出力でなくコンソール出力。
175名無し~3.EXE:2008/11/16(日) 17:19:56 ID:HYoFoab0
言葉足りたかな?
標準出力はファイルやパイプへリダイレクトできるもの。
コンソール出力は画面表示専用。
だから、Write-Hostには色など指定できるオプションがついてる。

PowerShellのパイプには基本的にオブジェクトが流れるが、
標準入力としてバイトデータ(通常はテキストとみなす)を
受け取る従来のコマンドが出力に
指定された時には、オブジェクトをToString()して
さらにShiftJISにエンコードしたデータを渡す仕組みになっている。
176名無し~3.EXE:2008/11/16(日) 18:16:12 ID:e1OwLSt3
Windows 7 にはPowerShell v2が同封されてる模様
PS流行るかもしれない
177名無し~3.EXE:2008/11/16(日) 19:02:18 ID:+MSN7HFx
>>173
>$nameorderはDictionaryEntryの配列
この部分がよくわからない。
というかなんでそういう言語仕様なのか設計思想が理解出来ない。
ハッシュテーブルをソートした結果に対してなんで別クラスを用意するのか?って部分
PowerShellはオブジェクトの構造が、表面から見える部分と、内部では見えないオブジェクトが
パイプ処理されてることで、なかなか思い通りに動かなくて困ってる。ってのは俺だけかな?
178名無し~3.EXE:2008/11/16(日) 19:03:54 ID:+MSN7HFx
>>173

>クラスが違うから当然メソッドも違う。

メソッドが違うって言っても、上の例で、foreachの対象を方やクラスそのもの、方やメンバを
対象にしないと動かないってことに言語仕様としての一貫性に疑問持たない?
実際、君は、同じことやろうとして、HashTableとDictionaryEntry配列のループに関して、
躊躇せず、正しく使い分けられるわけ?
そもそも
連想配列 == HashTable == Dictionary ってのは機能として同じものでしょ。
言語として別な型として扱ったとしても。
上の例に関してなんか解説してくれてるところがあれば紹介してくださいな。

179名無し~3.EXE:2008/11/16(日) 19:20:46 ID:FIPvrwO9
なにこの人、うぜーーーー
つーか、.NET Frameworkとシェル環境を無理やりすり合わせてるんだから変なとこくらいあるだろうよ
DataTableがどっかの時点で勝手にObjectの配列になるとかもそうだし

設計思想が知りたきゃPowerSell in Action嫁
180名無し~3.EXE:2008/11/16(日) 19:33:12 ID:jbcRpPkA
>>177
>ハッシュテーブルをソートした結果に対してなんで別クラスを用意するのか?って部分

「元が列挙可能なコレクションなら、何をソートしても結果は配列になる」

と考えれば分かりやすいんじゃない?
元の型と同じことを要請しちゃうと、
「ソートされていない」という性質を持つコレクションをソートした結果は
何型になればいいんだという話になる。

実際.NETのハッシュテーブルは順序を保持できないし。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/441sortbyvalue/sortbyvalue.html

そういえばハッシュテーブルが順序を保持すべきかはLL業界でも議論があるね。
「ハッシュ 順序 Ruby」とかでググると色々でてきたはず。
181名無し~3.EXE:2008/11/16(日) 19:39:52 ID:+MSN7HFx
>>179
うざけりゃわざわざレスなんか返さずスルーしとけよ。ネットの基本な。

>DataTableがどっかの時点で勝手にObjectの配列になるとかもそうだし

そのどっかの時点を明示するのは言語仕様として当然必要だって話な。
変換されて困る場合はXXを明示してくれとかな。それがわからなけりゃ使う方としちゃ困るだろ。
PowerSell in Action の原書は持ってるが、上のようなことに言及してたかな?
182名無し~3.EXE:2008/11/16(日) 19:55:45 ID:+MSN7HFx
>>180
>元が列挙可能なコレクションなら、何をソートしても結果は配列になる

なるほど、そう考えるのか。何か指針が欲しかった。
そういうことを解説してる部分を探してみます。
183名無し~3.EXE:2008/11/16(日) 19:57:13 ID:jbcRpPkA
>>171
下のに関してはこう書くと動くよ。

foreach($x in $PCshopping.GetEnumerator() ){
$Paying += $x.Value
}
184名無し~3.EXE:2008/11/16(日) 21:00:01 ID:mtzkDeHg
>>158
GetNamesか、なるほどなー
そういうわけで
Set-ExcusionPolisy -ex <tab>
sc -Encoding B<tab>
[型名].<tab>
[型名].Assembly.a<tab>
ができるようにしといた>>121
185名無し~3.EXE:2008/11/16(日) 22:56:46 ID:NCgsRNVZ
>>177
はあ?
PowerShellの仕様じゃないだろ。ばかたり。
つーか、ソート結果を保持できる連想配列があるなら教えてくれ。
ソートできないハッシュだからこそO(1)で入出力できるんであって、
ソートしたらO(n)になってパフォーマンス激落ちちゃうだろが。
C#でソートできるか?Perlでできるか?awkでできるか?Javaでできるか?
こんな初歩の初歩からドキュメントしてたらキリがないぞ。
186名無し~3.EXE:2008/11/16(日) 23:12:13 ID:NCgsRNVZ
てか、GetEnumerator()呼び出して 自 分 で Hashtableから配列に変換してんのに、
勝手に変換されたとか切れてるってどんだけ使えねーの?
187名無し~3.EXE:2008/11/16(日) 23:54:54 ID:+MSN7HFx
↑何をおかど違いのところに吠えてんの?バカなの?
188名無し~3.EXE:2008/11/17(月) 01:20:19 ID:aerlsDzT
>>185
>C#でソートできるか?

SortedListがあるわけだが
189名無し~3.EXE:2008/11/17(月) 03:28:33 ID:OQcDVeP+
SortedListだと2分探索でO(log N)じゃないの?
190名無し~3.EXE:2008/11/17(月) 08:15:42 ID:Rw18Cca1
SortedListも知らずに一知半解の知識を振り回してんだろ。
191名無し~3.EXE:2008/11/17(月) 08:18:14 ID:XdvJmOH9
SortedListが連想配列だと思ってるバカがいるw
192名無し~3.EXE:2008/11/17(月) 09:06:48 ID:t1ZFp79q
SortedList ってハッシュ関係ないよね?
なぜいきなり SortedList が出てくるのかわからん。
193名無し~3.EXE:2008/11/17(月) 10:01:20 ID:f1W7oiWw
>>170
確かにforeach書式に統一性がないな
perlだと、ソートは単純配列なので何の違和感もない

%PCshopping = (
'CPU','3.5',
'Memory', '2',
'MB', '4',
'GC', '3',
'HDD', '2',,
'Case', '3',
'PS', '2',
);

%sortedname = sort keys(%PCshopping);
@sortedname2 = sort keys(%PCshopping);

$Sum = 0.;
foreach $val (values(%PCshopping)){
$Sum += $val;
}

print $Sum, "\n";

194名無し~3.EXE:2008/11/17(月) 10:02:24 ID:f1W7oiWw
$Sum = 0.;
foreach $val (%sortedname){
$Sum += $PCshopping{$val};
}

print $Sum, "\n";

$Sum = 0.;
foreach $val (@sortedname2){
$Sum += $PCshopping{$val};
}
print $Sum, "\n";

195名無し~3.EXE:2008/11/17(月) 10:25:16 ID:f1W7oiWw
>>171
PowerShellは、

[Hashtable] $H
foreach( $x in $H)
って書くと$xは$Hのそれぞれの要素にアクセスしてくれるんじゃなくて、
$Hそのものにしかアクセスしない。

foreach ( $y in $PCshopping){
}

$y #<---ここで $PCshopping そのものが出力される

$Paying = 0;
foreach($x in $y.values ){ # <--その$yを使って要素に順次アクセス
$Paying += $x;
}

$Paying;
196名無し~3.EXE:2008/11/17(月) 10:35:11 ID:XdvJmOH9
>>193
PowerShell(.NET)でも同じくkeysやvaluesを使った書き方をすればいいだけの話。

なぜややこしくなっているかというと、どっかのバカが
GetEnumerator()なんぞ呼び出して、HashtableをDictionaryEntryに分解してるからだ。
分解したものを配列にして一つの変数に収めてるんだから、そりゃクラス変わるだろって話。
なぜこんな簡単なことがわかんないのか、それが一番わからんw

SortList云々言ってるやつは論外ねw
197名無し~3.EXE:2008/11/17(月) 10:37:04 ID:Wj7xJqTH
どっちがどうだったか悩まずに済ませたいだけなら
$PCshopping.GetEnumerator() | % { $_.value } | Measure-Object -Sum
$nameorder.GetEnumerator() | % { $_.value } | Measure-Object -Sum

でいいんじゃない?
198名無し~3.EXE:2008/11/17(月) 10:40:35 ID:W0SWfpSb
>>185
>つーか、ソート結果を保持できる連想配列があるなら教えてくれ。
>ソートできないハッシュだからこそO(1)で入出力できるんであって、
>ソートしたらO(n)になってパフォーマンス激落ちちゃうだろが。
>C#でソートできるか?Perlでできるか?awkでできるか?Javaでできるか?

Rubyを避けてるあたりプロっぽいな。
ttp://slashdot.jp/developers/comments.pl?sid=384937&cid=1273692
199名無し~3.EXE:2008/11/17(月) 10:50:42 ID:f1W7oiWw
>>196
後のぐちゃぐちゃは読んでないが、>>171は書式の一貫性を言ってるんだろ。
in 配列は順次アクセスするのにin ハッシュと書くと順次アクセスしないのはおかしな話だ
200名無し~3.EXE:2008/11/17(月) 10:54:47 ID:f1W7oiWw
>>196
>>195にはperlだと連想配列でも配列でも、順次アクセスする一貫性について具体例を示したんだがね。
201名無し~3.EXE:2008/11/17(月) 10:58:36 ID:XdvJmOH9
>>199
何と一貫してないって?Perlと一貫させる必要は無いよな。

foreachでkeyとvalueを同列に扱って順次アクセスする必要はない。
むしろkeyとvalueをまとめたDictionaryEntryとして順次アクセスする
PowerShellの手法のほうが、統一性もわかりやすさも美しさも便利さも上だ。
202名無し~3.EXE:2008/11/17(月) 11:01:08 ID:XdvJmOH9
>>200
おいおいw
あわてずにもうちょっと考えて書けよw
203名無し~3.EXE:2008/11/17(月) 11:08:10 ID:/hcYzH78
perlと一貫って?いったいどういう読解力してんだ。もう、ちょっと考えて書けや。話にならんなお前。
実際、foreach文を使うユーザとしてどっちの動作を期待するかってことを考えれば、
XX=配列,ハッシュ関係なく in XXで要素アクセスするのが動作としては妥当だろが。
204名無し~3.EXE:2008/11/17(月) 11:10:44 ID:XdvJmOH9
まず、%sortednameがソートされてない事実に気づいてるか?w
print %sortedname;

sortかけてるのにsortされてない。どこが一貫性あるのかな?

次に、%sortednameは連想配列として宣言されているが、
その実単なる配列だ。
print $sortedname{'MB'};

どんだけ異常で醜いプログラムか理解できないの?
ほんとに?
205名無し~3.EXE:2008/11/17(月) 11:14:09 ID:XdvJmOH9
で、そんな醜いPerlと同じ仕様にする必要はないってこったよ。

PowerShellでは配列ハッシュ関係なくin XXXで要素アクセスできる。
その要素がPerlのようにkeyとvalueをかわるがわる出力するような
醜い仕様でなく、keyとvalueをまとめた構造体DictionaryEntryである。
美しいだろ?

206名無し~3.EXE:2008/11/17(月) 11:14:33 ID:/hcYzH78
>>201
keyとvalueを同列にアクセスする必要なんて、ないがな
そんなのは扱いにくいだけだろ。
keyとvalueをまとめた、ノードポインタに対してアクセスするのが当然だ。
207名無し~3.EXE:2008/11/17(月) 11:17:03 ID:XdvJmOH9
>>206
俺にアンカーつけんなよ。
Perl厨に言え。
208名無し~3.EXE:2008/11/17(月) 11:17:31 ID:/hcYzH78
>>205
>PowerShellでは配列ハッシュ関係なくin XXXで要素アクセスできる。

PowerShellでは in XXXで要素に順次アクセスなんかできない。
209名無し~3.EXE:2008/11/17(月) 11:19:14 ID:XdvJmOH9
要素が3つある連想配列がある。
foreachで回すと、PowerShellの場合は3回ループする。
Perlは6回ループする。
どこに一貫性がある?
210名無し~3.EXE:2008/11/17(月) 11:22:08 ID:/hcYzH78
>>ID:XdvJmOH9

foreach ($x in $HASH)
は $x = $HASHとしかならない。順次アクセスなんかできない。
要素アクセスしたければ
foreach ($x in $HASH.keys) もしくはforeach ($x in $HASH.values)
と書かなきゃダメだってば。
あと、くっだらんレス書いてるのにいちいちあげんなアホ
211名無し~3.EXE:2008/11/17(月) 11:24:01 ID:XdvJmOH9
>>210
ほらできるw
keysとかvaluesとか使えと書いたのが読めないのか?
文盲は書き込むなw
212名無し~3.EXE:2008/11/17(月) 11:25:24 ID:XdvJmOH9
あと、あげられて恥ずかしいなら最初から黙ってることだなw
213名無し~3.EXE:2008/11/17(月) 11:34:19 ID:/hcYzH78
>>211

ほらできるじゃねーだろ。

foreach($x in $HASH){
 $x.key;
 $x.valie;
}

で、順次アクセス可能なら、何も問題はない。
ノードにポインタ移動していくんだから。全く違和感はない。

でも、こう書けず↓しか書けないことに何も感じない神経が理解できんな。
foreach($x in $HASH.keys){
}

foreach($x in $HASH.values){
}

あと、>>206はお前に書いたレスだから、何もkeyとvalueをごっちゃにアクセスする必要なんて
あるかよ。
214名無し~3.EXE:2008/11/17(月) 11:39:10 ID:XdvJmOH9
>>213
foreach ($x in $HASH.GetEnumerator()){
$x.key;
$x.value;
}

さて、これと同じことがPerlでできるかね?w
何か問題でも?w
215名無し~3.EXE:2008/11/17(月) 11:41:28 ID:XdvJmOH9
>>214
「同じ結果」ならできるか。
じゃあ、こうしちゃおう。

foreach ($x in $HASH.GetEnumerator()) {
$x.key;
$x.value + 100;
}

さて、一貫性のあるPerlでどう書くの?w
216名無し~3.EXE:2008/11/17(月) 11:45:27 ID:XdvJmOH9
そもそも、合計値を出したいだけならソートする必要なんてないんだよね。
$PCshopping.values | Measure-Object -Sum
一行で済むことをグダグダと。
217名無し~3.EXE:2008/11/17(月) 12:03:51 ID:/hcYzH78
何を言い出すかと思えば each も知らずにお前バカやろ。

while(($key,$value) = each(%HASH)){
$key 
  $value
}

どーとでも個別に使えや。
218名無し~3.EXE:2008/11/17(月) 12:09:11 ID:XdvJmOH9
>>217
そんな書き方しかできないのを何も疑問に思わないの?w
219名無し~3.EXE:2008/11/17(月) 12:11:08 ID:/hcYzH78
>>215
>「同じ結果」ならできるか。
>じゃあ、こうしちゃおう。

あわてて気づいたけど、お気の毒。ゲラゲラ
220名無し~3.EXE:2008/11/17(月) 12:19:24 ID:/hcYzH78
>>218
同じforeachを使いながらGetEnumerator()を噛まさないとループしないことに何の違和感も感じないの?
いっとくが、俺はperl命なんて思ったこともないぜ。
221名無し~3.EXE:2008/11/17(月) 12:21:44 ID:XdvJmOH9
>>220
eachなら良いの?w
気の毒にw
もはや自分が何を言ってるのかわかんないんだろw
222名無し~3.EXE:2008/11/17(月) 12:23:15 ID:XdvJmOH9
埋もれてるからもう一度書いてやるよ。
もっと頭から湯気出しなw

まず、%sortednameがソートされてない事実に気づいてるか?w
print %sortedname;

sortかけてるのにsortされてない。どこが一貫性あるのかな?

次に、%sortednameは連想配列として宣言されているが、
その実単なる配列だ。
print $sortedname{'MB'};

どんだけ異常で醜いプログラムか理解できないの?
ほんとに?
223名無し~3.EXE:2008/11/17(月) 12:31:02 ID:/hcYzH78
sortednameにソート保持を期待してるわけではないよ。
eachも知らない2chの規約違反の不必要なアゲ行為を繰り返す >>ID:XdvJmOH9 よ。
>>193では、あくまでも連想配列と配列を同じように要素アクセスできることを示してるだけ。
sort 使った結果の出力にsortednameを適当に命名しただけだから。
>>170のリストにあったソートをそのまま持ってきてるにすぎん。
ソート云々じゃなくて>>171は配列とハッシュの順次アクセスについて言ってるだけだろ。
224名無し~3.EXE:2008/11/17(月) 12:32:51 ID:XdvJmOH9
もう一つ例題。
Perlの「一貫性のある(w)」手法で書いてみなw
「一貫性のある(w)」each使ってもいいよ。

foreach ($x in ($hash.GetEnumerator() | sort Name)) {$x.key; $x.value + 100}
225名無し~3.EXE:2008/11/17(月) 12:35:15 ID:XdvJmOH9
>>223
あれれ?
ソート保持を期待してない?
じゃあなんでsortednameなのぉ?w

おっかしーゲラゲラ
メシウマ〜〜

おいおいwwwwww
うわ、苦しい苦しい

俺、笑いすぎて苦しすぎw
お前、言い訳が苦しすぎw
226名無し~3.EXE:2008/11/17(月) 12:35:29 ID:/hcYzH78
>>221
連想配列を単純配列としてアクセススルにはeachも何もイランだろうが。
ループも何もせず、foreach( $x in $HASH) と $x = $HASHが等価なら、
なにがしかのwarningを出すのが処理としては妥当だし、必要なことだと思うね。
227名無し~3.EXE:2008/11/17(月) 12:36:16 ID:XdvJmOH9
Measure-Object知らないPerl厨よ、「教えてくれてありがとう」は言わないの?
苦しい〜〜www
228名無し~3.EXE:2008/11/17(月) 12:37:16 ID:XdvJmOH9
>>226
えー?
要素がひとつだと警告出すのぉ?
現場知らないやつはこれだからw
229名無し~3.EXE:2008/11/17(月) 12:39:23 ID:/hcYzH78
>>225
>ソート保持を期待してない?
>じゃあなんでsortednameなのぉ?w

ソート関数の出力だからsortedと適当に命名したと>>223に書いたんだが、ガキかお前は。
なにがしかのデータを配列に格納しないと、順次アクセスしてるかどうかわからないだろが。
230名無し~3.EXE:2008/11/17(月) 12:39:38 ID:XdvJmOH9
じゃあさ、じゃあさ、要素ゼロのforeachもやっぱ警告出すのぉ?
要素多すぎる時はぁ?
久々のヒットだな、こいつwww
腹いて〜w
231名無し~3.EXE:2008/11/17(月) 12:40:39 ID:XdvJmOH9
>>229
ソート関数の出力がソートされてないのに何にも疑問持たないのぉ?
うっわ苦し〜w
232名無し~3.EXE:2008/11/17(月) 12:42:41 ID:/hcYzH78
each 知らず現場って。お前まさかPwerShell使って仕事してるってか。
each 教えてくれた俺に礼はないのか?
233名無し~3.EXE:2008/11/17(月) 12:42:58 ID:1k4nyPPy
C#だとこれで行けるんだけどな。

var PCshopping = new Hashtable
{
  {"CPU", "3.5"},
  {"Memory", "2"},
  {"MB", "4"},
  {"GC", "3"},
  {"HDD", "2"},
  {"Case", "3"},
  {"PS", "2"},
};

foreach (DictionaryEntry item in PCshopping)
{
  Console.WriteLine(item.Key + ":" + item.Value);
}

foreachで使うのにGetEnumeratorを書かなきゃならんのだとしたら確かにちょっとだるい。

まあGenerics導入前のコレクションなんて今時使わないけど。
むしろObsolete属性付けても良いぐらい。
PowerShell 2.0ではその辺の空気も読んで欲しい。
ttp://blogs.msdn.com/bclteam/archive/2007/06/26/non-generic-collections-to-be-removed-from-silverlight-inbar-gazit.aspx
234名無し~3.EXE:2008/11/17(月) 12:45:42 ID:/hcYzH78
>>230

waning レベルで指定してもいいがな。warning レベルも知らないって?どんな現場だコイツ
waning 出さなくても、in $HASHは要素メンバにアクセスするのではないことを
言語仕様として明示してるんか?
235名無し~3.EXE:2008/11/17(月) 12:46:47 ID:XdvJmOH9
>>232
クスクス

一貫性ねー。
236名無し~3.EXE:2008/11/17(月) 12:49:13 ID:/hcYzH78
結局 >>ID:XdvJmOH9 こいつは
in $HASHで、順次アクセスしてくれると思い込んでたんだろな。
気づかせてくれて謝意の言葉は?
237名無し~3.EXE:2008/11/17(月) 12:51:56 ID:/hcYzH78
>>233
まともにコミュニケーションのとれない>>ID:/hcYzH78はほっといて、
forach で in のあと [hashtable]だとループしないってのは規約としてあるの?

238名無し~3.EXE:2008/11/17(月) 13:03:48 ID:Wj7xJqTH
foreach文を使用して、PowerShellで列挙可能なすべてのものを反復処理にかけることができます。
通常、これには.NETのIEnumerableインターフェイスの実装も含まれますが、PowerShellに合わせ
て少し調整されています。具体的には、IEnumerableを実装するクラスのうち、PowerShellでは列挙
可能と見なされないものがいくつかあります。これには、文字列、ディクショナリ、ハッシュテーブ
ルが含まれます。PowerShellではコレクションを自由に分解できるため、文字列が突然文字ストリー
ムに変化したり、ハッシュテーブルが一連のキーと値の組みに細分化されたりするのは避けることに
しました。特に、ハッシュテーブルの場合は、PowerShell環境において軽量(タイプレス)オブジェ
クトとしてよく使用されるため、それらのスカラー性を維持する必要があります。


以上PowerShell インアクション P180より抜粋
239名無し~3.EXE:2008/11/17(月) 13:04:36 ID:t1ZFp79q
たまに盛況かと思えば基地外二人が暴れてるだけかよ。
240名無し~3.EXE:2008/11/17(月) 13:08:17 ID:/hcYzH78
>>238
うわ。わざわざタイプしてくれたのありがと。
in actionには解説してくれてるのね。
Microsoft.Press - Windows.PowerShell.Scripting.Guide.(2008) で検索かけてみたけど未だ探せてない。
241名無し~3.EXE:2008/11/17(月) 13:13:32 ID:t1ZFp79q
>>237
なんだ。基地外二人かと思ったら一人芝居かよ。迷惑な。
242名無し~3.EXE:2008/11/17(月) 13:54:18 ID:BJiu3ucL
>>215
>foreach ($x in $HASH.GetEnumerator()) {
>$x.key;
>$x.value + 100;
}>

>さて、一貫性のあるPerlでどう書くの?w

foreach ( keys($HASH)) {
 $_;
 $PCshopping {$_} + 100;
}

で何か?
243名無し~3.EXE:2008/11/17(月) 15:21:40 ID:XdvJmOH9
>>242
keys使ってるじゃん。
244名無し~3.EXE:2008/11/17(月) 15:22:50 ID:XdvJmOH9
>>241
失礼なことを言うな。ちゃんと二人いる。
245名無し~3.EXE:2008/11/18(火) 02:07:41 ID:o/YiBCZW
えらくスレが伸びてると思ってきてみれば。

>>205
>PowerShellでは配列ハッシュ関係なくin XXXで要素アクセスできる。

イタタタター!
Perlを批判してPowerShellに入れ込んでる割に、もっとも基本的なことを知らねぇんだな
と思って >>ID:XdvJmOH9をマウスでポイントすれば、

>191 >196 >201 >202 >204 >205 >207 >209 >211 >212 >214
>215 >216 >218 >221 >222 >224 >225 >227 >228 >230 >231 >235 >243 >244

唖然!およそまともな社会人なら仕事してるはずの月曜日の8:00から15:00にこれだけ張り付いてるって?^100
こいつはニート、あるいは暇な糞文系確定だな

  オ イ 就 職 難 で 大 変 だ な 糞 学 生
246名無し~3.EXE:2008/11/18(火) 08:35:09 ID:CQSZhIim
せっかくいなくなったのに蒸し返すな
247名無し~3.EXE:2008/11/18(火) 08:42:14 ID:3ZtnfgoG
>>205
>その要素がPerlのようにkeyとvalueをかわるがわる出力するような
>醜い仕様でなく、

こいつの知識レベル酷いな。何も知らないんだな。このレベルのヤツにまともにレスしてもしゃーないんだが、、、
Perlからごっそり書式をぱくった似非PerlことPowerShellをlinuxとBSD上で起動かしてみ。話はそれからだ。
248名無し~3.EXE:2008/11/18(火) 08:42:58 ID:MzHhuegi
似非PerlといえばPHPだろ
249名無し~3.EXE:2008/11/18(火) 08:48:44 ID:3ZtnfgoG
まぁ、同じカテゴリの後発言語は先発言語をなにがしかの参考にしてるから、
後発言語=似非先発言語だけどね。全く違った書式で書かれる方が迷惑だし。
Win限定で土俵が違えば比較にならんわ。
250名無し~3.EXE:2008/11/18(火) 09:04:51 ID:MzHhuegi
てかPSって言うほどPerlに似てないとは思う
sigilがあることぐらいじゃね
251名無し~3.EXE:2008/11/18(火) 13:00:40 ID:7NG9CuNd
なんだこの低レベル同士のバカ騒ぎ
252名無し~3.EXE:2008/11/18(火) 18:57:55 ID:6q7qTKEW
PowerShellは実行ポリシーとかチョーわけわかんないシステムで〜
スクリプト?〜がチョベリお手軽に動かせないしー
従来のバッチファイルの方が便利ってかんじー

従来のバッチファイル
@echo off
echo Set-Location "%cd%" >temp.ps1
echo Get-ChildItem >> temp.ps1
powershell -command - < temp.ps1
del temp.ps1
253名無し~3.EXE:2008/11/18(火) 19:10:28 ID:AoTBJs/o
>従来のバッチファイルの方が便利ってかんじー
どこが?
254名無し~3.EXE:2008/11/18(火) 19:24:32 ID:AoTBJs/o
ふつうパイプを使うだろ
@echo off
(
echo Set-Location "%cd%"
echo Get-ChildItem
) | powershell -command -
255名無し~3.EXE:2008/11/19(水) 00:51:46 ID:rlSKMtWW
256名無し~3.EXE:2008/11/19(水) 12:22:12 ID:jSG2eWUp
すげー未読いっぱいとか思ったら、単なるバカ祭りかよ。
foreachの繰り返しが一回しかない時にwarning出せとかアホかと。
perl信者もバッチ信者もうざいからよそでやれ。
257名無し~3.EXE:2008/11/19(水) 12:34:04 ID:LvoKkwKM
↑お前が一番うざいから厚生事務次官のようにぶち殺されろや?
258名無し~3.EXE:2008/11/22(土) 14:45:08 ID:m0VD9l/r
>>121
New-Objectの-ComObjectパラメータとTrace-Commandの-Nameパラメータで補完できるようにした
New-Object -Com shel<tab>
259名無し~3.EXE:2008/11/27(木) 08:28:57 ID:ncu6Xroe
 
260121:2008/11/29(土) 16:06:50 ID:C4SR45b6
ファイル名変更したからリンク切れてたのに今頃気づいた・・・今日の日付の奴が最新
http://cid-40405a7c2ae2b5b7.skydrive.live.com/browse.aspx/TabExpansion

[ と New-Object の後で型名を補完できるようにした
[IO.D<tab>
position=1かつ定数を要求するパラメータがあるコマンドレット(の一部)でパラメータ名書かなくても補完できるようにした
Set-ExecutionPolicy <tab>

初めて読み込む時は数十秒〜数分かかるかも
261名無し~3.EXE:2008/11/29(土) 19:24:37 ID:vmpAsE3+
Windows PowerShell Virtual Machine Manager コマンドレット リファレンス
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=444c4b16-48b2-4e80-b31b-2931fdb54665&DisplayLang=ja
262名無し~3.EXE:2008/11/30(日) 13:23:47 ID:KL9TgWDC
263名無し~3.EXE:2008/11/30(日) 20:38:04 ID:UewcoPpu
なんて凛々しいお姿。
PowerShell本の表紙はこいつで決まりだな。
264名無し~3.EXE:2008/12/01(月) 00:26:47 ID:LdGgOy+Q
さて、V2CTP3/Beta1お披露目の12月ですよ
265名無し~3.EXE:2008/12/01(月) 08:07:29 ID:Cx7vHMJn
System Center Virtual Machine Manager 2007 スクリプト ガイド
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=d8c0982a-80b2-4607-83a0-49c8dab6cdaf&DisplayLang=ja

>>262
オライリー本の表紙に採用だな
266名無し~3.EXE:2008/12/01(月) 21:25:56 ID:d+wEJK5Z
VBAからPowerShellを使う方法
ttp://oshiete1.goo.ne.jp/qa4515634.html

ActiveXPosh使えそうだから紹介しようとしてたら手間取っているうちに回答が締め切ってしまった悲劇
普通に使えたけど、自分の場合この修正ファイル適用しないとCreateObjectが失敗した
ttp://support.microsoft.com/kb/908002
267名無し~3.EXE:2008/12/03(水) 21:47:04 ID:5TRpEmnR
Intelの中の人もPowerShell使ってんのね
Intel AMT, Windows Powershell, and You
ttp://communities.intel.com/openport/community/openportit/vproexpert/blog/tags/powershell

どうせならコマンドレット作っちゃって
268名無し~3.EXE:2008/12/04(木) 13:55:01 ID:gk6dsfvT
cmd.exeもそうだけどPowerShellでもxkeymacs正常動作しないな。C-spcとかC-@が動作しない。
あと、XKEYMACS_SHELLをPowerShellにしてM-!で起動するとタスクバーのXKEYMACSアイコンが
赤に変化して、キーフックが一切無効になるんだけど、何か使い方間違えてる?
269名無し~3.EXE:2008/12/04(木) 23:33:12 ID:74nh3Q1F
なんでそんなことをPowerShellスレで聞こうと思ったの?
270名無し~3.EXE:2008/12/05(金) 01:23:26 ID:LYYDE0cI
>>269
>>2 Xkeymacsにリンク張ってるだろ。
271名無し~3.EXE:2008/12/05(金) 11:17:36 ID:3+uqybbd
予定にはあるみたいだが、よく考えたら2.0はXP向けにRTWされない可能性もあることに気付いた
俺ピーンチ

配布されるとしたらMSのXP向け最後の大型無料アプリか
272名無し~3.EXE:2008/12/06(土) 10:46:54 ID:NGHVzM0D
>>270
インターネットの基礎知識だけど、リンク張るってのは「そちらを参照してくれ」って意味だよ。
273名無し~3.EXE:2008/12/07(日) 17:37:13 ID:uxiS4C4q
>>272 ?
274名無し~3.EXE:2008/12/07(日) 18:13:33 ID:29JbKwuy
"&Foo", "&Bar", "B&az"なんかを指定してコンテキストメニューなりラジオグループなりのUIを表示して
ユーザーに選ばせるコードってどう書けばいいですか?
275名無し~3.EXE:2008/12/07(日) 18:39:27 ID:uxiS4C4q
まず、System.Formsをロードします
276名無し~3.EXE:2008/12/07(日) 18:47:54 ID:VCjzTcR5
>>274
>>103を使えばすぐできる
277名無し~3.EXE:2008/12/08(月) 13:44:11 ID:k9Aeiu5f
>>272
バーカ。そういう無関係なもんを延々スレ初めのスレッドに貼るかよ。
278名無し~3.EXE:2008/12/08(月) 13:52:25 ID:HlMUqOcr
何このゴミスレ
279名無し~3.EXE:2008/12/08(月) 14:01:22 ID:/ZOtr8v9
>>272
2chのイロハだけど、テンプレに貼られたリンク先に関しては、
リンク先に書かれてる内容に準拠した話題のレスを書き込んでスレ進行しようっていうスレ主の意志表示だよ。
理解した?おバカちゃん &herats
280名無し~3.EXE:2008/12/08(月) 14:02:45 ID:/ZOtr8v9
>>272
おおっと。
281名無し~3.EXE:2008/12/08(月) 17:00:56 ID:PLE8Oh8h
ID変えながらの連続投稿がすごく悔しそうでいいぞw
282名無し~3.EXE:2008/12/08(月) 19:52:56 ID:pdkGE9Kc
>>260
Get-ServiceとかGet-Process含めてコマンドレットに渡す引数で補完できそうな文字列はほぼ全部補完できるようになった、と思う
ついでにカンマで複数の引数を渡す場合もそれぞれで補完できるようにした
gps <tab>,p<tab>,exp<tab>
283名無し~3.EXE:2008/12/12(金) 09:12:44 ID:UNrGd4Ud
Powershell Tweaks
ttp://code.msdn.microsoft.com/pstweaks

Tweaksとか言う割りに単語を翻訳するスクリプトしか置いてないとか、翻訳にGoogle利用してるとかは置いといて
ヒア文字列の終了引用符の前にスペースを入れるってのはどうかと思います
つーか検証してから公開しろよ
284名無し~3.EXE:2008/12/13(土) 21:29:35 ID:8NvvH8xx
さて、アメリカ的にはそろそろ出さなきゃホリデーに入っちゃうんじゃねーの?
285名無し~3.EXE:2008/12/18(木) 15:21:09 ID:hv+ZmFTR
ちょっと、ほんとにちょっとだけ前進
【ハウツー】ゼロからはじめるWindows PowerShell - 計算編 (1) PowerShellの起動と終了.1
ttp://journal.mycom.co.jp/articles/2008/12/18/powershell/index.html
286名無し~3.EXE:2008/12/18(木) 16:12:44 ID:Xnv2NsBI
>>285
後進して一足踏み出したようにしか見えないが?読者層が不明すぎる。

それと、最後の単位計算は本当に無駄だな
なぜそういうことが出来るのか説明されていないから、使い道もないし訳も分からない
powershellを起動してnGBを計算させるより
calcを起動して2の30乗をかけるか、1024を3かけた方が良い
287名無し~3.EXE:2008/12/18(木) 17:01:11 ID:hv+ZmFTR
>>286
まあブクマしてる人もいるしいいんじゃね・・・
間違ったことは言ってないし

今のところは。
288名無し~3.EXE:2008/12/18(木) 22:47:34 ID:TLYhK7za
>>285
前回から一ヶ月か…。
一年後にはスクリプト入門くらいにたどり着くかね。
289名無し~3.EXE:2008/12/18(木) 22:54:05 ID:4QrUNI0o
PSが非処女だと発覚して無期限休載。
290名無し~3.EXE:2008/12/18(木) 23:05:02 ID:hv+ZmFTR
今までこのスレでここまで注目された入門記事が他にあったであろうか、いやない
291名無し~3.EXE:2008/12/19(金) 00:44:04 ID:K+Hcc0ym
>>260
メソッドの引数で定数を補完できるようにした
型を指定しないとエラーになる時
$str = "day night"
$str.Split(" ", 3, "None")
型を指定しないとエラーになるときは-as演算子の後にTABキー押せば補完可能
$str.Split( " ", "None" -as<space><tab>

$_.で大体合ってるプロパティ・メソッド名に補完できるようにした
ls |group { $_.Cr<tab>.Tost<tab>"y")} | tee -var foo| ? { $_.G<tab>.c<tab> -gt 5 } | % { md $_.N<tab> ; copy $_.G<tab> $_.N<tab> }
くらいなら普通に補完可能

応用で-Propertyパラメータ持ってるコマンドレットのプロパティ名補完できるようにもした
ps |group na<tab>
292名無し~3.EXE:2008/12/20(土) 00:06:32 ID:s6Kk4FGW
293名無し~3.EXE:2008/12/23(火) 04:25:07 ID:GVvRmmWo
いつの間にかにNetCmdletsV2とPowerShell ServerがRTMになってる
ttp://www.nsoftware.com/PowerShell/
294名無し~3.EXE:2008/12/23(火) 19:20:47 ID:b+W0feyx
おいおいCTP3来てるじゃないか、ちゃんと教えてくれよ
Windows PowerShell V2 CTP3
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=c913aeab-d7b4-4bb1-a958-ee6d7fe307bc&displaylang=en
WinRM 2.0 CTP3
ttps://connect.microsoft.com/WSMAN/Downloads

WinRMまだXP/2003非対応っぽい
295名無し~3.EXE:2008/12/23(火) 20:01:53 ID:b+W0feyx
PowerShell.exeの実行パラメータに-WindowStyleでNormal/Minimized/Maximized/Hiddenが選べるようになってる、素晴しい
でも一瞬表示されちゃうのは実行ファイル自体をwscript.exe/cscript.exeみたいに分けないと無理なんだろうな
296名無し~3.EXE:2008/12/24(水) 02:39:54 ID:wPk5Ijai
CTP3、起動するごとにウインドウの位置がずれるのはなんなんだろう・・・
Sizer使ってるから別にいいけど
297名無し~3.EXE:2008/12/25(木) 21:18:55 ID:nnzx5eEh
Connectが半ばバグ報告合戦になっとるな
いいぞもっとやれ
298名無し~3.EXE:2008/12/29(月) 09:52:46 ID:xU2iCm0k
 
299名無し~3.EXE:2008/12/29(月) 16:22:02 ID:0Yf5nCx0
linuxいじり始めてからcmd.exeに不満が出てきたので、試しに入れてみたら、
起動直後、「'FileSystem' プロバイダで InitializeDefaultDrives 操作を実行しようとして失敗しました」
なるメッセージが出て焦ったのですが、このメッセージの意味はなんでしょうか?
もし管理権限で起動してたらCドライブをフォーマットされてしまうところだった、とかじゃないですよね。
300名無し~3.EXE:2008/12/30(火) 00:24:00 ID:QbZSp0v6
>>299

ファイルシステムプロバイダがデフォルトのドライブの初期化に失敗したということ。ファイルシステムプロバイダが
ドライブを正常に読めないだけで、Cがフォーマットされたりするということはない。
301名無し~3.EXE:2008/12/30(火) 01:32:20 ID:CEFdAx8w
>>300
どうも。ここでのIniitializeは初期設定とか初期読み込みとかの意味っぽいですかね。
外付けドライブを別プロセスでchkdskしてたせいもしれません。
302名無し~3.EXE:2008/12/30(火) 06:08:32 ID:C5RDAww7
mycomがこの段階でニュースにするのは珍しいなーって思った(未来のってのはひっかかるが)
いや、そんだけ・・・

未来のWindowsコマンドシェル「PowerShell V2」の最新開発版が公開
ttp://journal.mycom.co.jp/news/2008/12/29/003/


・・・じゃあなんだから小ネタ
ttp://get-powershell.com/2008/12/28/more-integrated-scripting-environment-customization/
303名無し~3.EXE:2008/12/30(火) 14:30:20 ID:dBcfzHmU
バイナリファイルの結合コピーってどう書けばいいのでしょう?
DOSの場合の

copy /B file1+file2+file3 destfile

って奴です
304名無し~3.EXE:2008/12/30(火) 16:14:57 ID:MDymtNV2
楽なのがいいなら
function bcopy { cmd /c "copy /B $([string]$args)" }
でいいと思うけど、PowerShellで完結することにロマンを感じるなら
type -enc Byte file1,file2,file3l | sc -enc Byte -Path destfile
とかじゃない?
305名無し~3.EXE:2008/12/31(水) 22:18:50 ID:zYQ2M17+
>>260
変数がハッシュテーブル型の時、変数名+ドットの直後のTab押しの補完候補にキー名が出てくるようにした
Get-Process | Get-Unique | % { $hash += @{$_.ProcessName=$_} }
$hash.pow<tab>.pro<tab>

Select-Objectの-ExpandPropertyの組み合わせが二回以上続く場合でもだいたい正しい補完候補になるようにした

変数名の配列表記が多次元だったりネストしてる場合でも補完できるようにした
$a = New-Object "Int32[,]" 2,3; $b = "PowerShell","PowerShell"; $c = [ref]$a; $d = [ref]$b,$c
$d[0].V<tab>[0][0].Get<tab>
$d[1].V<tab>[0,0].tos<tab>
306名無し~3.EXE:2009/01/01(木) 02:27:53 ID:2kNsmxfC
>>305


でも、出先で使えないと嫌だから使わないw
雲行きの怪しいPowerShellでも、IE7のように一般家庭にも普及する から使っているわけであって…
普及するよね?ね? CTP 3ってなに?  一生CTP、人柱向けじゃないよね?ね?
(未完成品を世に出さない職人魂は大好きですがw)
307名無し~3.EXE:2009/01/01(木) 11:35:35 ID:XxafqrzM
あけおめ。

>でも、出先で使えないと嫌だから
一応そういう苦労を軽減するためにただのスクリプト(テキストファイル)にしたつもり
ネットに繋げない・USBメモリ禁止ならどうしようもないし、PowerShellインストール済みが大前提だけど

Jeffreyさんが新年の抱負になんか色々ときめくこと言うてはる
My 2009 Resolutions
ttp://blogs.msdn.com/powershell/archive/2008/12/31/my-2009-resolutions.aspx
308303:2009/01/03(土) 10:00:56 ID:cksqnF5B
>>304
数GBあるsplitしたmpeg2-tsファイルを結合して一つのファイルとしたかったんですが、
Cygwinでcatを使ってmergeするととてつもなく時間がかかってしまいました。
PowerShellになにかやり方があるのか知りたかったんですが、type -enc Byteだとさらに遅いですね
309名無し~3.EXE:2009/01/03(土) 10:27:47 ID:VtAUPDR+
>>308
.net使えるから
System.IO.FileStream / StreamReader / StreamWriter / TextReader / TextWriter / TextStream / BinaryStream / BufferdStream / Compression.DefalateStream / IsolatedStreage.IsolatedStrageFileStram / MemoryStream
あたりから適当な奴を探して使えばいいんじゃね?

それが早いかどうかは別として
310名無し~3.EXE:2009/01/03(土) 10:58:49 ID:nrfEqAZl
cmd.exeのcopyコマンドって2GB制限か何かあるんだっけ?
311名無し~3.EXE:2009/01/03(土) 15:29:51 ID:TUhpTJMd
1ディスク内だとランダムアクセスになって遅い
ディスクtoディスクだとそれぞれがシーケンシャルアクセスになって速い
とか?
312名無し~3.EXE:2009/01/04(日) 00:48:18 ID:SkSQ8myC
copy a+b
でaのi/oが稼げる?
313名無し~3.EXE:2009/01/04(日) 06:21:03 ID:8DjfJarJ
>>308
 むしろ、cmd.exeで

  type file2 >> file1

ではどうか?
314名無し~3.EXE:2009/01/04(日) 19:11:49 ID:ZT9v8ROX
>>313 それで早くなるなら FireFileCopy とかがはやったりしない。
315名無し~3.EXE:2009/01/04(日) 22:22:30 ID:Bpp8ujxC
typeコマンドだと、そもそもEOFに引っ掛かるから駄目だな。

色々考えてみたけど、PowerShellを生かした良い方法が思いつかない。
MB単位で一気にR/Wしようとすると、結局New-Objectから始めるしかないような……
だったらC#でいいじゃんって話になるし。
316名無し~3.EXE:2009/01/04(日) 23:17:35 ID:fKaTsQnw
>>260
スクリプト・フィルタ・関数のパラメータ名補完、およびその引数で定数の補完
man -f<tab>
'param([System.StringSplitOptions]$foo,[System.Management.Automation.ActionPreference]$bar,[System.Management.Automation.CommandTypes]$baz) {}' > foobar.ps1
.\foobar.ps1 -<tab> -b<tab>
.\foobar.ps1 -foo rem<tab> -bar <tab><comma>c<tab><comma>sc<tab> -ea silent<tab> -wa con<tab>

代入式の左辺値が列挙体である場合右辺値を定数に補完
$ErrorActionPreference =<space><tab>
$cmdtypes = New-Object System.Management.Automation.CommandTypes[] 3
$cmdtypes =<space><tab><comma><space>func<tab><comma><space>cmd<tab> -as<space><tab>

パイプの一つ前の式が Get-Item Get-Command もしくは変数のみな時 '$_.' の補完をより正確にした
gi hkcu:\ | % { $_.subkey<tab>
gcm powershell.exe | % { $_.file<tab>
$data = Get-Process
$data[2,4,5] | % { $_.<tab>
317名無し~3.EXE:2009/01/05(月) 10:48:55 ID:dbbOloEF
>>303,308は、typeやcatはもちろんcmd.exeのcopyコマンドでも数GBのファイルを結合するのには時間かかるから代替案が欲しい、ってことでいいの?
318名無し~3.EXE:2009/01/05(月) 21:47:37 ID:zfvggaSj
シェルなんだからファイル操作とかは充実させて欲しい
分かりやすく簡潔に高速なコマンド
FastCopy-Item とか
319名無し~3.EXE:2009/01/06(火) 00:46:19 ID:d6Y3LfDv
要望があるならConnectなり本家ブログなり日本のフォーラムなりに書くよろし
某11の人も自分に言ってくれれば頑張って伝えるって言ってたよ
320名無し~3.EXE:2009/01/07(水) 13:43:41 ID:ZQWq28Yq
そのくらい自分で作れや。
321名無し~3.EXE:2009/01/07(水) 15:20:21 ID:utTBmCeS
改行を読み取ろうと思ったら、反応してくれない・・
書き込みは対応してるのに、検索はしてくれないのか?

↓改行をアンダーバーに変換しようと思ったら反応ナシ。
cat "ファイル" -replace "`n","_"

322名無し~3.EXE:2009/01/07(水) 17:32:17 ID:5LEA4kF/
>>321
基本Get-Contentの出力はObject[]
各要素に一行ずつStringとして入ってるから、改行はないよ
323名無し~3.EXE:2009/01/07(水) 18:05:30 ID:utTBmCeS
>>322
そうかー、ありがとう解決できた。
324名無し~3.EXE:2009/01/07(水) 19:25:59 ID:5LEA4kF/
なんかひたすらどうでもいい発見をしてしまった
$a=ps
$a-f0..10000
325名無し~3.EXE:2009/01/08(木) 22:13:11 ID:NXLEuAC6
>>317
いや,cmd.exeのcopyコマンドは俺にとっては十分早いです.
これに代わるやり方がPowerShellには用意されてるのか?ってことを単純に知りたかっただけです.
もうcmd.exeを忘れたい
326名無し~3.EXE:2009/01/08(木) 22:22:32 ID:NXLEuAC6
そういや xcopy とかの代替ってのもないんですかね?
PowerShellってのはcopy のようにreplaceされたり,dosの外部コマンドが実行されたりするわけですね.
といいながら,Cygwinにパス通してるのでfindなんかで困るわけですが・・・
327名無し~3.EXE:2009/01/08(木) 22:35:02 ID:ngtHFcYu
コマンドプロンプトからPowerShellになって機能ダウンしたなんてことがないといいんだが
328名無し~3.EXE:2009/01/08(木) 23:00:21 ID:dQQmXBMC
んー、PowerShellは文字通りシェルだから使えるものはなんでも使えばいいじゃん
って思考だなぁ俺は
robocopyとか普通に便利だし

というかV2は開き直ってC#/VB/etcのコードをコンパイルするコマンド用意してるよね
ttp://blogs.msdn.com/powershell/archive/2009/01/03/how-to-write-a-console-application-in-powershell-with-add-type.aspx
329名無し~3.EXE:2009/01/09(金) 12:29:37 ID:uhpsXtHe
330名無し~3.EXE:2009/01/10(土) 12:45:33 ID:VSpoWoPT
Windows7のベータにPowerShell2.0標準で入ってるな。
331名無し~3.EXE:2009/01/10(土) 18:34:55 ID:lO1sn57E
それは前から言われてるじゃん
問題はVista/XP向けに.NETやIEみたいに自動更新かSPで載せるかどうかでしょう
332名無し~3.EXE:2009/01/12(月) 00:12:31 ID:AwG1zHUd
Visual Studio のコマンドプロンプトがPowerShellに切り替わったら本物
333名無し~3.EXE:2009/01/12(月) 01:42:51 ID:9NcxK6Aq
VS2010から少しずつコアの実装も.NET化していくみたいだから、
VS2013?あたりからPowerShellに切り替わるんじゃない?
334名無し~3.EXE:2009/01/12(月) 01:44:39 ID:2xPSOda5
>>332
特にDLLを開発してるときには
そのDLLを自動でロードしてくれたりしてなw
335名無し~3.EXE:2009/01/12(月) 01:57:22 ID:A/D5IC5V
Managed Extensibility Framework(MEF)のことかい?
http://www.atmarkit.co.jp/fdotnet/dnfuture/vs10net4_01/vs10net4_01_01.html
336名無し~3.EXE:2009/01/12(月) 02:02:29 ID:weEIEhev
PowerShellの演算子やキーワードを列挙できるクラスがあったはずなんだけど、誰か知らん?
337名無し~3.EXE:2009/01/12(月) 02:40:13 ID:9NcxK6Aq
>>335
System.AddInの立場はどうなっちゃうんだろうねぇ。
338名無し~3.EXE:2009/01/12(月) 03:03:28 ID:A/D5IC5V
>>336
get-command とか get-help * じゃダメなんだよね?
わからん……
ヘルプ的なコマンド以外でそんなものをユーザーに提供するシェルってあるんだろうか。

>>337
中で使うんじゃないかと予想。
339名無し~3.EXE:2009/01/12(月) 03:13:02 ID:A/D5IC5V
>>336
http://www.nivot.org/2008/12/27/PowerShellOneLinerListingKnownLanguageKeywordsInCTP3.aspx

そんなもんはないらしい。
V2CTP3にはあるようだ。
340名無し~3.EXE:2009/01/12(月) 03:42:35 ID:weEIEhev
>>339
あーこれだ、この記事忘れて探してたのよ、ありがとう
V2でしか使えないなら埋め込むしかないな
341名無し~3.EXE:2009/01/12(月) 07:04:29 ID:R6rV0hJk
get-money
342名無し~3.EXE:2009/01/12(月) 16:49:58 ID:C0RhmAj0
Crash course on authoring Windows 7 Troubleshooting Packs
ttp://www.withinwindows.com/2009/01/12/crash-course-on-authoring-windows-7-troubleshooting-packs/

サポセンの中の人向けにトラブルシューティング用のPowerShellスクリプト作成から配布・組み込みまでを支援しようってところか
ユーザーはウィザードのはい・いいえをクリックしていくだけでスクリプト実行を意識する必要が無い、と
343名無し~3.EXE:2009/01/13(火) 00:33:41 ID:MhC7S7lz
>>260
'-' で始まる演算子を補完できるようにした
"Power","Shell" -m<tab> "Power" -r<tab> '(Pow)(er)','$1d$2'
1..9 -co<tab> 5

変数の後にパス区切り文字 ( / と \ )の組み合わせでパス補完できるようにした
$PWD\../../<tab>\<tab>
"$env:SystemDrive/pro<tab>/<tab>

皆デフォルトの補完機能で満足してるのかな
まあスクリプト書くならエディタがいろいろあるけど
344名無し~3.EXE:2009/01/13(火) 10:20:43 ID:zaA1Nb7q
>>343
それになれると、出先でPS使うときに苦労するから使わない。
345名無し~3.EXE:2009/01/13(火) 21:49:39 ID:BVx/EFEr
>>344
実行ポリシーの制限?
まずもって出先にPowerShell環境があるっていうのがうらやましいけど
346名無し~3.EXE:2009/01/14(水) 02:23:40 ID:3xT0pZws
Please Give Us Feedback
ttp://blogs.msdn.com/powershell/archive/2009/01/12/please-give-us-feedback.aspx#comments

誰か日本語でフィードバック送ってみないかい?
誰かがやるなら俺もやる
347名無し~3.EXE:2009/01/14(水) 13:31:53 ID:uXMQC6oc
-replace について

"Hello World" -replace '(.*) (.*)','($2) ($1)'
→(World) (Hello)
になるのに

"Hello World" -replace '(.*)(.*)','($2) ($1)'
→() (Hello World)() ()
こうなるのは何故ですか?
348名無し~3.EXE:2009/01/14(水) 20:33:51 ID:6PsLvT4J
これ使いこなすより普通のスクリプトで書いた方がよっぽど強力で書きやすいよね。
349名無し~3.EXE:2009/01/14(水) 20:44:50 ID:HlTBGeNv
>>347
PowerShellは関係ないなー。w

●「.」は、原則として全文字だから、空白も含まれる。
だから、1つめの()で文字列全体がキャプチャされて、
2つめの()は空となる。

●置換文字列の「()」は、特別な意味がないので、
そのまま結果文字列に入る。
350名無し~3.EXE:2009/01/14(水) 21:52:08 ID:DH90jX/9
>>349
>>347が言いたいのは() (Hello World)の部分じゃなくて、その後の() ()の部分じゃないかと推測
351名無し~3.EXE:2009/01/14(水) 22:02:54 ID:KWbs/ZYd
>>260
PowerShellのキーワードが補完候補に出るようにした
次に来る括弧( '{' か '(')が決まっている場合はスペースの後にそれも出る
b<tab>
p<tab>
w<tab>

Clear-Variable Get-Variable New-Variable Remove-Variable Set-Variable の -Name パラメータで変数名の補完
コマンドレット共通の -ErrorVariable -OutVariable パラメータおよびそのエイリアス -ev -ov と
Tee-Object の -Variable パラメータで変数名の補完
Export-Alias Get-Alias New-Alias Set-Alias の -Name パラメータでエイリアス名の補完
Format-List Format-Custom Format-Table Format-Wide の -groupBy パラメータでプロパティ名の補完

さすがにもう弄る部分が思いつかない
352名無し~3.EXE:2009/01/15(木) 16:33:12 ID:79v4liNY
いつの間にかにPowerGUIが日本語にローカライズされてた
ついでにV2CTP3にも対応したらしい
ttp://powergui.org/downloads.jspa
353名無し~3.EXE:2009/01/16(金) 22:33:43 ID:MK3cF5Ud
2.0使ってる奴いるのか
354名無し~3.EXE:2009/01/17(土) 13:34:02 ID:T4xuUcO4
βすっ飛ばしてRC
Now available for download: Release Candidate of IIS PowerShell Snap-in
ttp://blogs.iis.net/thomad/archive/2009/01/16/now-available-for-download-release-candidate-of-iis-powershell-snap-in.aspx
355名無し~3.EXE:2009/01/18(日) 08:43:31 ID:oFfz+kYk
PowerGUIってEditorの色を変更できないのかな?
真っ白の背景は目に突き刺さるような気がしてCornSilkに変更したいんだけど
356名無し~3.EXE:2009/01/18(日) 15:12:48 ID:ymFdxTEB
とりあえず現状は無理なんじゃない?
357名無し~3.EXE:2009/01/19(月) 02:26:23 ID:u1NHhSYI
>>347
何か不思議だね。
* じゃなくて + だと、たぶん期待した動きになるんじゃないかな。

"Hello World" -replace '(\w+)','$1 dayo'
→Hello dayo World dayo

'Hello World' -replace '(\w*)','$1 dayo'
→Hello dayo dayo World dayo dayo

* だと何故2回も dayo が出るのだろう。
どういう理屈なのか?
358名無し~3.EXE:2009/01/19(月) 02:46:06 ID:WulMzuee
>>357
Hello
空白
World
Worldの直後
の計4回マッチするためじゃないの?
359名無し~3.EXE:2009/01/19(月) 04:52:00 ID:u1NHhSYI
いや、空白はマッチしないだろう。\w だから。

Hello
Helloの直後
(空白はそのまま出力)
World
Worldの直後

こんな感じかな。
すると >>347

Hello World(=$1)と直後(=$2)
直後(=$1)と直後(=$2)

と2回マッチしてる感じ?
360名無し~3.EXE:2009/01/19(月) 09:41:55 ID:AHPatGWQ
>>359
\wは関係ない。.*はスペースであろうがなかろうがマッチする。

なんで二回出るのかっていうのは、こういうことだよ。
-replaceは文字列中でマッチしたものすべてを置換する。
たとえば、'Hello Hello' -replace 'Hello', 'World' は World World となる。

'Hello World' -replace '(.*)(.*)', '($2)($1)' の場合、
まず最初に$1=「Hello World」、$2=「」がマッチし、置換される。
次に行末で$1=「」、$2=「」がマッチし、置換される。
つまり、二か所でマッチしてるから二回出力されるというだけの話。
これを防ぎたければ、
'Hello World' -replace '^(.*)(.*)$', '($2)($1)' とすれば良い。
361名無し~3.EXE:2009/01/19(月) 20:40:23 ID:WulMzuee
>いや、空白はマッチしないだろう。\w だから。

orz

まったくそのとおり
空白の直前のつもりでつい・・・
362名無し~3.EXE:2009/01/20(火) 02:12:27 ID:V13GYXyR
ドンマイ
363名無し~3.EXE:2009/01/20(火) 21:43:40 ID:y7D7tzxs
>>260
補完候補用のデータファイル読み込みをちょっとだけ高速化
$PSHOME\profile.ps1を汚さないようにした
[a<tab> や New-Object ps<tab>で型アクセラレータも補完候補に来るようにした
.NET/WMI のクラス名を補完する際次の '.' や '_' までの文字列を候補に出すようにした
New-Object System.win<tab>.for<tab>.bu<tab>
364名無し~3.EXE:2009/01/20(火) 22:32:45 ID:E3VL0gjR
bashとか構文が好きになれなかったけど、
PSならがんばれそうだな
Linuxに早く移植してほしいね
365名無し~3.EXE:2009/01/21(水) 20:09:31 ID:+ZJQgPyp
ForEach-Object -InputObject 1,2,3,4,5 -Process { $_ + 1 }

上の式と出力が同じなのは次のア〜キの式のうちどれでしょう(制限時間5分・複数回答可)

ア switch (1,2,3,4,5) { default { $switch + 1 } }
イ 1..5 | & { $input + 1 }
ウ foreach ( $i in 1..5 ) { $i+1 }
エ ForEach-Object -InputObject 1..5 -Process { $_ + 1 }
オ ,1,2,3,4,5 | % { $_ +1 }
カ 1..5 | & { do { $input.current + 1; } while ( $input.MoveNext() ) }
キ ,1..5 | % { $_ + 1 }

実行せずにぴったり正解できた君はえらい
366名無し~3.EXE:2009/01/22(木) 02:14:56 ID:R+07zAFi
>>364
一応 pash ってのがあるけどな。
http://sourceforge.net/projects/pash
367名無し~3.EXE:2009/01/22(木) 12:17:17 ID:AOuVSQJy
monoshellてのもあるけど、どっちも停滞してるね
まあ期待するだけ無駄だろう
今更30年以上続くBourne Shell系から離れることは出来んよ
368名無し~3.EXE:2009/01/22(木) 22:57:36 ID:xKzGbz6L
>>366
これは頑張ってもらいたい
369名無し~3.EXE:2009/01/23(金) 17:35:15 ID:UByj+8ln
http://itpro.nikkeibp.co.jp/article/COLUMN/20081027/317832/
選択肢の一つにコマンドレットが出てきた
370名無し~3.EXE:2009/01/26(月) 00:34:50 ID:wVONMd+L
なんかぶっと釣り針が
ttp://journal.mycom.co.jp/articles/2009/01/25/wsh/index.html
.NETの知識が必要てなんだ、.NETFWのインストール方法が難しいとかそういうことか

しかし毎回思うが
> 登場して間もないことから、まだまだ情報が少ない
ていったい何の情報を必要としてるのか
371名無し~3.EXE:2009/01/26(月) 02:02:25 ID:+pxkdv5H
.NET が使えるということと必須ということは違うと思うんだけどね。

それに WSH って昔からあるけど、何かめんどくさそうだから使ったことない。
シェルがないからかな?
372名無し~3.EXE:2009/01/26(月) 11:03:14 ID:6NiaPghp
WSHはCOMの知識がないとそれこそ何もできないと思うんだがなー
373名無し~3.EXE:2009/01/26(月) 12:23:18 ID:/38QyxBG
初心者向けの解説してるサイトがあったら教えてください
ばかですみません
374名無し~3.EXE:2009/01/26(月) 14:38:19 ID:FB2mC4+A
375名無し~3.EXE:2009/01/28(水) 12:04:29 ID:sDYl5ViY
PowerShell って良いですよね。ActiveDirectoryの管理にもバッチリな感じです。
そのPowerShellを使えば、私ごときがかかえるちっぽけな問題などスッキリ解決できると信じています。
そのちょっとした問題というのは私ごときが管理するActiveDirectoryのユーザーどもの
lastLogonTimestamp を知りたいということです。
PowerShellの万能の機能と皆様の智慧が合わされば即座に解決されると信じています。

誰か教えてよ。プリーズ。
376名無し~3.EXE:2009/01/28(水) 13:19:04 ID:W2LiF6bm
Add-PSSnapin Quest.ActiveRoles.ADManagement
Get-QADUser | ft FirstName, LastName, DisplayName, lastLogonTimestamp -auto
377375:2009/01/28(水) 16:26:46 ID:sDYl5ViY
なるほど。これを使えと。
www.quest.com/japan/information/pr080121.asp
感謝の極み
378名無し~3.EXE:2009/01/29(木) 00:37:21 ID:/uRdeQRY
VMwareどんだけPowerShell好きなんだよ
ttp://blogs.vmware.com/.a/6a00d8341c328153ef010536fcc751970c-pi

本家開発チームの半分近い人数だぞ
ttp://blogs.msdn.com/blogfiles/powershell/WindowsLiveWriter/ThePowerShellTeam_DF36/teamphoto_2.jpg

ちなみに元記事はこっち
VI Toolkit (for Windows): VI Toolkit 1.5 Released!
ttp://blogs.vmware.com/vipowershell/2009/01/vi-toolkit-15-released.html

379名無し~3.EXE:2009/01/31(土) 19:42:30 ID:DQMGK07E
コマンドラインスタックの挙動ってこんな感じで合ってる?
Esc+q の代わりに ; 入力してからTAB

[Reflection.Assembly]::LoadWithPartialName( "System.Windows.Forms" )
$_stack = New-Object Collections.Stack

function tabexpansion ($line, $lastWord) {
switch -r ($lastWord) {
'(.*);' {
$global:_stack.Push($line)
[System.Windows.Forms.SendKeys]::SendWait("{ESC}")
}
}
}

iex (@'
function prompt {
if ($_stack.Count -gt 0) {
$_keys = $global:_stack.Pop().TrimEnd(';') -replace '([[\]\(\)+{}?~%])','{$1}'
[System.Windows.Forms.SendKeys]::SendWait($_keys)
}
'@ + @"
${function:prompt}
}
"@)
380名無し~3.EXE:2009/02/04(水) 12:02:51 ID:F+oKcojA
 
381名無し~3.EXE:2009/02/05(木) 20:37:14 ID:2j3950rp
>>260
function や filter キーワードの後で既存の関数名に補完するようにした
*.txt@<tab> で ファイル名のグロブパターン展開機能のような感じの何か
^ や ~ で除外パターン指定も可能
;<tab> でコマンドラインスタック機能かもしれないらしい何か
;:<tab> で手動ポップも可能
#<id><tab> や #<pattern><tab> でヒストリ補完(V2CTP3の機能)
初めて使う場合の読み込み時間の高速化
382名無し~3.EXE:2009/02/06(金) 03:28:26 ID:EE96dDGK
PowerShellで日本語入力ができない。。
日本語の表示や貼り付けはできるんだけども。
なにか設定が必要なのかなぁ。

環境は
PowerShell ver1 x64
OS: WinXPx64
383名無し~3.EXE:2009/02/06(金) 16:40:52 ID:h4C3ThcP
>>382
Alt + 半角/全角
384名無し~3.EXE:2009/02/06(金) 19:00:45 ID:RtieZEZ2
日本語の折り返しはちゃんと表示されるようになった?
385名無し~3.EXE:2009/02/07(土) 02:48:12 ID:UjIQiwRW
>>383
おおありがとー
386名無し~3.EXE:2009/02/07(土) 16:49:09 ID:fUkrmSJq
お前らはもっとこれに投票するべき

Add Get-Computer and Start-Computer cmdlets
ttps://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=389694&SiteID=99
387名無し~3.EXE:2009/02/08(日) 18:30:49 ID:c0gUfynC
exit の別名定義は作れませんか?
exit じゃなく end と打ち込めば終了できるようにしたいのです。
方法があれば教えてください
388名無し~3.EXE:2009/02/08(日) 18:49:24 ID:1SKkiKRW
関数の中で exit を実行すればいいだけだけど、 end は予約語だからお勧めしない( begin〜process〜end 句 )

他でいいなら
function fin { exit }

end っていう名前の関数を定義することは出来るけど、 & ${Function:end} 等の形でないと呼び出せない
389名無し~3.EXE:2009/02/08(日) 19:31:27 ID:1SKkiKRW
いつの間にかに PowerShell in Action 第二版が出てる件(書籍化は9月予定)
ttp://www.manning.com/payette2/

Complete coverage of Windows PowerShell version 2!

だそうな
390名無し~3.EXE:2009/02/08(日) 23:23:36 ID:c0gUfynC
>>388
なるほど、関数でいいんですね。 alias のことばかり調べてました;
fin や quit という名前にすることにします。ありがとうございました。
391名無し~3.EXE:2009/02/09(月) 16:38:19 ID:GNzdJz1P
これってどの程度規格として確定するものなのかな?
あんまりおっかけしたくないからまだVer 1使ってるけど。
C#とかJISでも確定したけど、Ver 2.0とかVer3.0になってまるで無駄規格に見えるし
392名無し~3.EXE:2009/02/09(月) 17:46:32 ID:U8QW4jMJ
規格はないよ、ある必要もないでしょ?
言語仕様は 1.0 と 2.0 で大した差はない、ほとんどコマンドレットの強化が主軸
393名無し~3.EXE:2009/02/09(月) 20:44:01 ID:5NbMDKTA
変な規格に雁字搦めにされることなく伸び伸びと育って欲しい。
394名無し~3.EXE:2009/02/09(月) 23:08:17 ID:22T/yF95
つーかCやC++だって、2回も3回も規格は更新されてるんだよ。
もちろんCOBOLやFortranもね。

ちなみに次のVC++は新規格(C++0x)だから、予習しておくように。
395名無し~3.EXE:2009/02/10(火) 02:18:02 ID:YQ/s1gC9
後方互換なんぞいらん
396名無し~3.EXE:2009/02/10(火) 20:14:42 ID:6xcbm/PW
$a = @{}; 1..1000 | % { $a.Add($_,$_) }
でも
$a = @{}; 1..1000 | % { $a += @{$_=$_} }
でも結果は同じだけど、後者はやっぱり配列に要素足していくのと同じような処理してるみたいだな
397名無し~3.EXE:2009/02/11(水) 03:41:41 ID:D3gFy15C
旧バージョンのソースが動くのなら言語仕様の破壊的変更でもなんでもござれだな
398名無し~3.EXE:2009/02/11(水) 10:47:26 ID:LkZ76dEG
PS H:\> $a = @()
PS H:\> $a += gi hoge.txt
PS H:\> $a.gettype()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array

これで、要素が1つの配列を作った。

PS H:\> $a = $a | sort lastwritetime
PS H:\> $a.gettype()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True FileInfo System.IO.FileSys...

要素が1つの配列をソートすると、配列ではないものになってしまう……仕様か?
399名無し~3.EXE:2009/02/11(水) 11:15:45 ID:LgIIDLS3
仕様だよ
()でくくろう
400名無し~3.EXE:2009/02/11(水) 18:32:25 ID:y+epizFn
あー、リスト構造が欲しいだけならわざわざジェネリクス利用せんでもArrayListで十分かねぇ
401名無し~3.EXE:2009/02/12(木) 01:54:11 ID:qYzWR2ms
Java
402名無し~3.EXE:2009/02/13(金) 20:06:57 ID:p6FVsNMn
V2CTP3のヘルプファイル、ページ遷移する毎にスクリプトエラーが出るのがうざった過ぎる
403名無し~3.EXE:2009/02/14(土) 16:43:25 ID:AriOdaRZ
date って何者?
出力は Get-Date と全く同じっぽいし、実際 Get-Date のパラメータも使える
でも Get-Alias date とか Get-Command date とかやってもそれらしいもの出て来ない
404名無し~3.EXE:2009/02/14(土) 17:23:05 ID:nmTC/Kcb
>>403
試してみると、dateに限らず、aclでもaliasでも
get-xxx
のコマンドレットは get を除いても認識するようにみえる
ただし、コマンド検索の優先順位は低いみたいだけど

自動的なコマンド検索のルールであって、明示的な別名でないから
コマンド検索ではでてこないのかな
405403:2009/02/14(土) 18:46:41 ID:+9kzfDpH
>>404
ああなるほど、そういうカラクリか
基本的に他の何かと被ってない場合はそれが実行されるっぽいね
406名無し~3.EXE:2009/02/14(土) 22:40:58 ID:i0SQATsl
407名無し~3.EXE:2009/02/15(日) 19:36:52 ID:1n3Ruf8s
パラメータとなる変数のデフォルト引数に$argsを渡せば(結果的に)位置パラメータに出来るんだな
function test ($a=$args[0], $b=$args[1]) { $a;$b; $args|write-host -b black }
test 1 2 3 4 5
2.0の[Parameter(Position=0)]$aよりいろいろと楽
408名無し~3.EXE:2009/02/17(火) 03:44:28 ID:rDmdhS+c
これに挑戦してみた
ttp://d.hatena.ne.jp/YokoKen/20090216/1234796799
> Program Files フォルダ直下の各フォルダを、サイズの大きい順に並べて、
> 上位 5 件のディレクトリ名とサイズ (単位MB) をテーブル形式で表示するための PowerShell スクリプトを書く。

$s = @{}
ls 'C:\Program Files' | ? { $_.Length -eq $null } |
sort { $n=$_.Name; ls $_.FullName -Recurse | measure Length -Sum | % { $s.Add( $n, $_.Sum ); $_.Sum } } -Descending |
select -First 5 | ft Mode,CreationTime,Name,@{l="Size";e={"" + [int]($s.($_.name)/1MB) + "MB"}}

ハッシュテーブル使うとワンライナーにはできないな、なんかいい方法あるんだろか
409名無し~3.EXE:2009/02/18(水) 08:35:00 ID:w9fwNLJX
>>408
ls $Env:ProgramFiles|?{$_.Mode -match 'd'}|%{$_|Add-Member NoteProperty s (ls $_.FullName -r|?{$_.Length -gt 0}|Measure-Object Length -Sum) -pass}|sort s -des|head 5
410名無し~3.EXE:2009/02/18(水) 08:41:55 ID:w9fwNLJX
headは標準のエイリアスじゃなかったので書き直し。
ls $Env:ProgramFiles|?{$_.Mode -match 'd'}|%{$_|Add-Member NoteProperty s (ls $_.FullName -r|?{$_.Length -gt 0}|Measure-Object Length -Sum) -pass}|sort s -des|select -first 5
411名無し~3.EXE:2009/02/18(水) 21:42:08 ID:fbaeU3PZ
>>410
ソートのところで s の代わりに { $_.s.Sum } を渡さないと正しくソートされないと思うけど、Add-Memberか、なるほどなー
412名無し~3.EXE:2009/02/19(木) 08:59:17 ID:UsRbdZW6
>>411
sort は Sort-Object のエイリアス。
プロパティ名を渡すようになってるから s で良いんだよ。
逆に { $_.s.Sum } で本当にソートできるかどうかやってみたら?
413名無し~3.EXE:2009/02/19(木) 09:29:33 ID:UsRbdZW6
いや、ごめん。意味分かった。
(ls $_.FullName -r|?{$_.Length -gt 0}|Measure-Object Length -Sum).Sum
ってことね。確かにそうしないと正しくソートできないね。
414名無し~3.EXE:2009/02/19(木) 15:25:31 ID:UsRbdZW6
三度目の正直。MB単位で表示も入れて、こんなもんでどうかな?
ls $Env:ProgramFiles|?{$_.Mode -match 'd'}|%{new object|Add-Member NoteProperty FileName $_.Name -pass|Add-Member NoteProperty MB ((ls $_.FullName -r|?{$_.Length -gt 0}|Measure-Object Length -Sum).Sum/1MB) -pass}|sort MB -des|select -first 5
415名無し~3.EXE:2009/02/19(木) 15:49:24 ID:L9Q3ZPWn
new
416名無し~3.EXE:2009/02/19(木) 22:49:01 ID:nFH6IBn4
>>414
new objectのところがアレだけど、それでいいと思う
やっぱり Get-ChildItem で Mode 指定できるようになってほしいな
417名無し~3.EXE:2009/02/20(金) 07:41:25 ID:d4zMvVAi
アレってなんだよ?
418名無し~3.EXE:2009/02/20(金) 10:56:44 ID:d4zMvVAi
なるほど、new object じゃなく New-Object object か。
エイリアス定義しまくってると他の環境で困るな。
419名無し~3.EXE:2009/02/20(金) 20:09:50 ID:r1VR7SXs
そのうちWSHと同じく普及しないまま放置されるだろうね。

bashやcshなんかはオブジェクト指向なんぞ無視で、
仕様もシンプルで、使い捨てのスクリプトを書くのに適している。
非職業プログラマにも使いやすい。
しかし、Windows PowerShellはそうでもない。

仕様を複雑にしたり、たかがシェル言語にオブジェクト指向を導入したりして
WSHで失敗してるのに、同じ失敗を何度でも繰り返すんだから、MSも救いようがないね。
420名無し~3.EXE:2009/02/20(金) 20:13:54 ID:YHqqLGaq
使いやすいものを使ってもいいんだぜ。
421名無し~3.EXE:2009/02/20(金) 21:19:18 ID:oPqggfFo
>>418
エイリアスを変換して出力するスクリプトを書けばいいじゃない
422名無し~3.EXE:2009/02/20(金) 21:48:38 ID:fMzc+xG8
>>419
オブジェクト指向を導入したんじゃない、.netを導入したらオブジェクト指向も付いてきただけだ
と言ってみるテスト

オブジェクト指向は、作る(設計)にはちょっとしたこつが必要だけど
使う分にはむしろお手軽じゃね?
423名無し~3.EXE:2009/02/20(金) 23:41:18 ID:WXjFuAMG
知ったような口でいい加減なことを吐けるのは使ったことのない者の特権なのさ
424422:2009/02/21(土) 00:59:16 ID:9PlS8Aat
>>423
前半のは冗談として、
オブジェクト指向だから不便な所ってたとえばどこがある?

確かに、ちょっと凝った事すると、C#の方が楽できそうな気がするが、
それはオブジェクト指向だからというわけではないしな。

スクリプト組むまでもないバッチ作業には非常に向いてるし、今までのコマンドラインアプリとの相性も悪くないよ。
shスクリプトは使ったこと無いから知らんけど、今までのバッチファイルと比べると格段に便利になってる
425名無し~3.EXE:2009/02/21(土) 01:03:58 ID:x/IHqPcJ
>>424
いやごめん>>423>>419のこと
426名無し~3.EXE:2009/02/21(土) 01:07:41 ID:e7JR5VHx
バッチファイルほど見よう見まね度というか初期投資の低さがないように思えるな。
プリインストールされてないのはしょうがないにしても関連付けさえできてないし。
かといってWin7になれば本格普及するかといえば微妙な気はする。
427名無し~3.EXE:2009/02/21(土) 01:30:22 ID:x/IHqPcJ
関連付けは意図的にしていない
リスクを理解した上でしたい人は自分でどうぞってこと
デフォルトで実行ポリシーがRestrictedなのと同じ
428名無し~3.EXE:2009/02/21(土) 01:37:15 ID:9PlS8Aat
>>425 そうでしたか、てっきり
>>426
正直、普及する、しないに関係なく、標準装備してくれるのが一番重要。
その中で、使いたい人が使いたいときに使えればそれで良いと思う。
単なるバッチ処理ツールなんだから、バッチ処理しない人には必要ない物なのかも知れない。
powershellはcmdに比べて(文字数的に)お手軽じゃないしな
( これは結構真面目な話で、psh見たいなエイリアスやシンボリックリンク作っておかないと、本当にめんどくさいぞ。
スタートメニューで検索できるようになったといっても、Power DVDとか地雷あるし。)


標準装備と言えば、Vistaでtelnet.exeが標準装備されなくなったらしいけどどうして?
「あの」 ハイパーターミナル使えって事? ping、ipconfig (ifconfig)、telnetはネットワーク障害時に欠かせないツール。
429名無し~3.EXE:2009/02/21(土) 01:43:56 ID:x/IHqPcJ
winrm/winrsに置き換えたからじゃない?
430名無し~3.EXE:2009/02/21(土) 02:21:44 ID:9PlS8Aat
>>429
おお、そんな物があったのか。勉強になった。サンクスです。
でもtelnet.exeはtelnetクライアントじゃなくてTCPクライアントだっちゅーの(死語)
SSL使って通信できるようになったのは良いけど、sshではないのね…いい加減スレ違なきがするのでここで退散します。
431名無し~3.EXE:2009/02/21(土) 03:04:44 ID:GQM+2egv
WSH はシェルがないわけだが
432名無し~3.EXE:2009/02/21(土) 08:10:31 ID:0EpVgl2R
>>419
WSHは普及してるだろ
433名無し~3.EXE:2009/02/21(土) 14:05:57 ID:VoyrL1bO
セキュリティ的にあれだからじゃないの?
tftp.exeとかもなかったような。

まぁDVDとか使わずにすぐ追加でインストールできるからあんまり気にしてないけど。
434名無し~3.EXE:2009/02/21(土) 14:44:20 ID:bHMJMk0J
>>428
telnetは標準で無効にされてるだけ。
コントロールパネルの「Windowsの機能の有効化または無効化」で有効に出来る。
435名無し~3.EXE:2009/02/21(土) 15:02:37 ID:lgo9BUvf
>>427
関連付けしようと思ったらフォルダオプションか、レジストリを弄るの?
Powershell自体には関連付けの機能が用意されてないように見える。
436名無し~3.EXE:2009/02/21(土) 15:14:46 ID:ex20sA6y
>>435
>関連付けしようと思ったらフォルダオプションか、レジストリを弄る
そう
V2CTP3インストールするとpowershell_ise.exeに関連付けされる
437名無し~3.EXE:2009/02/21(土) 22:10:21 ID:KbR9Dce4
powershell勉強しようと思ったら、今って2.0なのね

2.0に対応している本はでてる?
http://www.amazon.co.jp/gp/reader/4873113822/
↑の本は古いですか?
438名無し~3.EXE:2009/02/21(土) 22:31:43 ID:ex20sA6y
今はまだ1.0だよ、2.0はベータにもなってない
ぶっちゃけコマンドが追加されるだけだから、気にしなくても大丈夫
439名無し~3.EXE:2009/02/21(土) 22:44:19 ID:QbYbuG7N
>>438

ありがとうございます。
コマンドが追加される程度なんですね
本を購入して勉強します
440名無し~3.EXE:2009/02/22(日) 00:41:23 ID:PH1RdaQn
実際に使うのではなく、勉強という感じならPowerShellインアクションのほうがお勧めだな
どっちとももってるけど
441名無し~3.EXE:2009/02/22(日) 04:10:37 ID:H8z5pN0E
俺は「プログラマブルPowerShell」
クックブックは逆引き用だから、勉強には向かないと思う。

あと、1.0 だと Excel2007 を COM オブジェクトとして使おうとしても実質使えないに近い。
2003 だと大丈夫なんだけど。
Office2007 が入ってる環境で勉強するなら、2.0 でやらないとはまる。
442437:2009/02/22(日) 13:32:18 ID:zXD63G1Q
皆さんレスありがとうございます。
やはりクックブックは向かないみたいですね。

自分は2008とかHyper-V、SCVMMの管理や自動化に使いたいと思っているので
1.0で基礎を押さえて2.0で応用を勉強するのがベストかもしれませんね
443名無し~3.EXE:2009/02/22(日) 19:09:35 ID:1xnaf2lV
仮想化の運用管理ならVMwareもXenのCitrixもPowerShellべったりだから安心していいと思うよ
444名無し~3.EXE:2009/02/22(日) 21:00:37 ID:36C1Wz8w
>>443
なるほど それは知らなかったです。
VMwareはPerlでコントロールできるのは知っていたのですが、
PowerShellでもOKなんですね。勉強しますね。

445名無し~3.EXE:2009/02/22(日) 23:53:57 ID:CfXgO6eq
PowerGUI PowerPackも合わせてお使いになられるとお得です
446名無し~3.EXE:2009/02/23(月) 22:08:39 ID:L+59/X98
>>445
それらのツールも落としてインストールしました。ありがとうございます
447名無し~3.EXE:2009/02/26(木) 10:47:40 ID:T3+g85ci
ヴイエムウェア、次世代のデータセンター用仮想化ツール「VMware vSphere」を発表
ttp://japan.zdnet.com/news/devsys/story/0,2000056182,20388861,00.htm
>Maritz氏はまた、Intelと「vPro」技術で提携したことも発表した。

これでVI ToolKitがコマンド一つでリモートの起動終了できるようになれば萌えるわー
AMT頑張れ、超頑張れ
448名無し~3.EXE:2009/02/28(土) 00:56:45 ID:iafU5FhC
PowerShellが意外に売れてるな
2008年第4四半期の米国市場でのプログラミング言語関連書籍の販売部数のシェア。
緑色は増加傾向、赤は減少傾向を示していて、色が濃いほど増減が激しいことを表している 出典:O'Reilly Media
http://www.atmarkit.co.jp/news/200902/27/l_langs01.jpg
http://www.atmarkit.co.jp/news/200902/27/langs.html
449名無し~3.EXE:2009/02/28(土) 19:49:36 ID:kMjrqoLr
>>260
powershell.exe の起動オプション補完機能強化
- の後に 0 文字以上のアルファベットとを入力しても各オプション名に補完できるようにした
powershell -<tab>
powershell -ex<tab>

デフォルトの help および man 関数の -Nameパラメータでコマンド名またはトピック名の補完(パラメータを明示する必要はない)
help -Name <tab>
man about<tab>

デフォルトの help および man 関数の -Categoryパラメータでカテゴリ名の補完
help -Category <tab>
man -cat cm<tab>,al<tab>,gl<tab>

switch 構文のオプション名を補完できるようにした
switch -<tab> -r<tab> -f<tab>

補完ネタ募集中
450名無し~3.EXE:2009/03/03(火) 20:24:49 ID:f8ZUsgB3
Windows7ではPowerShellを標準で乗っけてほしいなぁ。
そしたら潔くそっちいくのに、と未だにWSHメインの俺が言ってみるテスト。
451名無し~3.EXE:2009/03/03(火) 21:14:05 ID:FT+2bEnH
今更なこと言う前に本家ブログなりWin7の記事なり読みに池と
452名無し~3.EXE:2009/03/07(土) 11:44:51 ID:XCyDyFn0
キーボード操作でクリップボードのテキストを貼り付けることできた

function TabExpansion ($line,$lastWord) {
# Ctrl-V 入力した後 Tab キー
if ( $line[-1] -eq 22 ) {
$textbox=new-object System.Windows.Forms.TextBox;
$textbox.Multiline=$true;
$textbox.Paste();
write-output $textbox.Text
}

}

やっぱWindows Script Programmingの人はすごいわ
直接クリップボード弄ることばかり考えてTextBox経由って発想はなかった
453名無し~3.EXE:2009/03/08(日) 07:54:53 ID:W1kDupCh
>>452

Textbox経由は便利。

Excelのセルをコピーして、テキストとして張り付けたりもできる。
454名無し~3.EXE:2009/03/08(日) 11:32:09 ID:/ZxSDOZu
>>453
ただこれだと挿入はできないんだ、行末にマウスを使わずにテキスト貼り付けができるってだけで
SendKey使うのもやってみたんだけど、Tab 押した時点でキャレットより後ろの文章は削除される仕様だから意味なし
455名無し~3.EXE:2009/03/08(日) 16:08:26 ID:NLFVzYGz
STAで起動すればいいじゃん
456名無し~3.EXE:2009/03/08(日) 16:20:14 ID:NTu3aDQw
PS > $result = Get-Date
PS > $result.GetType()

こうすればうまくいくけど、変数に入れずに直接

PS > Get-Date.gettype()
式が '(' の後に必要です。
発生場所 行:1 文字:18
+ Get-Date.gettype() <<<<

こうやるとうまくいかないのはどうして?
457名無し~3.EXE:2009/03/08(日) 19:54:46 ID:W1kDupCh
>>456

(get-date).gettype()とやるべし。
458名無し~3.EXE:2009/03/08(日) 23:42:36 ID:NTu3aDQw
>>457
おお、ありがとう。
括弧で括ってやらないと全体をコマンドかなにかとみなしてしまうのかな。
459名無し~3.EXE:2009/03/10(火) 07:41:20 ID:Ge2cLDfn
>>458

コマンドラインをどう解釈しているのかわからんから、そのあたりは何ともねぇ。

コマンドレットが返すオブジェクトは「(コマンドレット)」。一方、オブジェクトのメソッドが返す
オブジェクトは「オブジェクト.メソッド()」だけで表せる。

PS H:\> (get-date).tostring().length
18
460名無し~3.EXE:2009/03/10(火) 08:29:16 ID:SpoUCbw5
ドットはコマンド名に使えるから、
Get-Date.gettype() が Get-Date.gettype というコマンドの引数に () を渡していると解釈されて
() には中に式が無いから「式が '(' の後に必要です。」とエラーを吐くってだけだよ

function get-hoge.huga { $args }
get-hoge.huga (10)
get-hoge.huga ()
get-hoge.huga(10)
get-hoge.huga()
461名無し~3.EXE:2009/03/11(水) 16:50:08 ID:nqBHrF+w
[] をファイル名に含むフォルダに移動できないんだけど、どうやれば回避できるの?
ちなみにバージョンは2.0 CTP2

C:\>mkdir "[a]"
Directory: Microsoft.PowerShell.Core\FileSystem::C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 09/03/11 (水) 16:37 [a]

C:\>cd "[a]"
Set-Location : Cannot find path '[a]' because it does not exist.
At line:1 char:3
+ cd <<<< "[a]"
462名無し~3.EXE:2009/03/11(水) 17:05:03 ID:64qgSOZU
[] はファイルグロブだから`でエスケープしないと駄目
cd ``[a``]
cd "``[a``]"
cd '`[a`]'
463名無し~3.EXE:2009/03/11(水) 17:06:55 ID:64qgSOZU
cd したいだけなら ?a まで入力してタブ補完した方が楽だと思う
464名無し~3.EXE:2009/03/11(水) 22:33:37 ID:6gKAeyH4
>>461

"["と"]"をエスケープして、

 cd '`[a`]'

とやるのが基本だが、"-l"を使って、

 cd -l [a]

とやってもいい。

とかく"["と"]"は悩ましい。
465名無し~3.EXE:2009/03/12(木) 08:08:17 ID:MrQJOp9U
WSHから、他のアプリケーションにキー入力を送って自動化のようなことをやってたのですが、
PowerShellで同じことはできますか?
466名無し~3.EXE:2009/03/13(金) 08:47:48 ID:MsxOsWTB
WScript.Shellは今までどおり使えるよ

notepad.exe
$p = Get-Process notepad
$w = New-Object -ComObject WScript.Shell
sleep 1
$w.AppActivate($p.Id)
$w.SendKeys("hello")

とかまあそんな感じで
467名無し~3.EXE:2009/03/13(金) 12:33:18 ID:PSGZOhtl
>>466
ありがとうございます。
PowerShell独自のブックレットがあるというより、やはりWScript.Shell経由なんですね。


IDかっこいいですね。
468名無し~3.EXE:2009/03/13(金) 17:13:11 ID:43dbDnSk
>>467
ブックレット・・・コマンドレットのこと?
WASP使えばできる
http://www.codeplex.com/WASP

Select-Window notepad | Set-WindowActive | % {sleep 1; Send-Keys -window $_ hogehoge }

みたいな感じで
469名無し~3.EXE:2009/03/14(土) 19:04:53 ID:bLVkfmRR
>>468
ありがとうございます。
コマンドレットのことを勘違いしてました。
470名無し~3.EXE:2009/03/18(水) 12:18:37 ID:Ac/b45Ur
471名無し~3.EXE:2009/03/20(金) 09:03:01 ID:eISg9OrQ
function Find-Alias ($x) { dir alias: | where {$_.Definition -eq "$x"} | fl -p name }
はきちんと動くのに、
function Find-Alias { dir alias: | where {$_.Definition -eq "$args"} | fl -p name }
としたら動かないのはなぜなんでしょうか?

たとえば
function myecho ($x) { echo $x }
function myecho { echo $args }
はどちらも変わらないんですが。。
472名無し~3.EXE:2009/03/20(金) 09:27:32 ID:THD/f+DY
>>471

$argsは配列だ。$_.Definitionは配列じゃない。だから、$_.Definition -eq $argsは使えない。

echoはWrite-Outputのエイリアス。Get-Help Write-Outputをやってみると、

構文
Write-Output [-inputObject] <PSObject[]> [<CommonParameters>]

PSObject[]は配列だ。だから、echo $argsはいける。
473名無し~3.EXE:2009/03/20(金) 09:51:50 ID:eISg9OrQ
>>472
丁寧にありがとうございます!
$args は Object[] で、$xに代入した時点で String 型になってるみたい?ですね。
うーん難しい…。まだ完全には解っていませんので、もう少し勉強します。
失礼しました。ありがとうございました。
474名無し~3.EXE:2009/03/21(土) 17:28:11 ID:AlaSt7oN
>>471
下の例で出力がどちらも変わらないのは引数が一つの時だけだよ
$argsの要素にはその関数に渡された引数が一つずつ入ってる
$args[0] のように添え字をつければ $x と同じになるよ
475名無し~3.EXE:2009/03/25(水) 07:36:51 ID:w7A9SMXs
Powershell 2.0って、XPではまだStart-Jobとか使えない。これってやはり、「早くVistaに乗り
換えろ、ボケ!」というMSの主張を含んでいるんだろうか?
476名無し~3.EXE:2009/03/25(水) 12:54:05 ID:ZX1SJAGN
477名無し~3.EXE:2009/03/25(水) 18:19:29 ID:kZGPxN0i
>>476
かいつまんで日本語でお願い。
478名無し~3.EXE:2009/03/25(水) 18:52:18 ID:ZX1SJAGN
>>477
XP向けにリモーティング機能を実装すると他の機能を切り捨てざるを得なくなるので後回し
479名無し~3.EXE:2009/03/26(木) 02:52:53 ID:dH33BBOX
480名無し~3.EXE:2009/03/26(木) 03:24:09 ID:dH33BBOX
PowerShell v1.0 is available on Microsoft Update
ttp://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2185.entry
Microsoft have added PowerShell v1.0 as an optional update that is available through the update mechanisms.

PowerShell 1.0 through MU is only offered:
・As an optional update
・If you don’t have any other version of PowerShell installed (including V2 CTPs) on your machine
・.NET 2.0 is installed on the machine
・OS is one of: XP-SP3, W2K3-SP2, Vista-RTM, Vista-SP1

さすがに必須にはできなかったか、まあでもよくやった、感動した!
481名無し~3.EXE:2009/03/26(木) 14:40:21 ID:JmkzEr2b
自動更新で入るって事はVistaならSP3くらいで標準搭載かね
しかしおまえら静かだな、俺有頂天なんだが
482名無し~3.EXE:2009/03/26(木) 17:25:49 ID:ZUMHlqwA
もちろん怒りで有頂天よ。
483477:2009/03/26(木) 18:59:04 ID:1Rf9hrTc
>>478
蟻。

「後回し」?ウソつけ。w
484名無し~3.EXE:2009/03/27(金) 15:45:34 ID:VTkvmaAQ
>>483
XP向けのPowerShell 2.0のリリースに特に明確な期限はないが
win7向けのそれはWin7のリリースまでに完成させないといけない
だから"今"XP向けに注力している時間はないし、元よりリリースはWin7より数ヶ月遅れると言ってる>>107
485名無し~3.EXE:2009/03/28(土) 15:59:13 ID:oN1A1sI2
Get closure with GetNewClosure
ttp://blogs.msdn.com/powershell/archive/2009/03/27/get-closure-with-getnewclosure.aspx

{ hogehoge }.GetNewClosure() でクロージャ生成できるよー(^o^)ノ とかさらっとすごいこと言ってるんだがww
486名無し~3.EXE:2009/04/04(土) 09:23:18 ID:LKacd8cK
PowerShell V1を使っているのですが、
unixで言うところの、バックエンドプロセスってどうやって立ち上げるのでしょう。
hogehoge &
で、サーバプロセスを複数立ち上げたいのですが、どうやってやればよいのかわかりません。
487486:2009/04/04(土) 09:32:19 ID:LKacd8cK
自己レス
Windows PowerShell 2 Features Preview
ttp://www.enterpriseitplanet.com/networking/features/article.php/3801776
BackGround JobsはVer2からでした。


488名無し~3.EXE:2009/04/04(土) 11:18:32 ID:uzjElfZF
>>486

Start-Jobが使えるのはver2からで、今のところ、OSはVista以降。

しかし、

 http://flamework.net/archives/3

のNew-Delegate.ps1のように、工夫すれば、ver1でもマルチスレッドを実現できる。
489名無し~3.EXE:2009/04/04(土) 19:38:17 ID:d7BEM7wZ
>>487
それと似たようなことをv1で実現しようって作られたスクリプトもあるよ
Background "jobs" and PowerShell
ttp://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!130.entry

そんなことよりインベーダーやろうぜ
ttp://ps1.soapyfrog.com/2007/01/02/space-invaders/
C 押した後に 1 押してスタート
490名無し~3.EXE:2009/04/05(日) 18:18:26 ID:tdZzUhCi
テトリスもどっかにあったな
491名無し~3.EXE:2009/04/06(月) 14:03:23 ID:aHV4rUBO
とあるプロセス(たとえばIE)のユーザ名ってどうやって取得すればいいですか?
(Get-Process iexplore).StartInfo.username とかじゃあダメみたいだし。。
XP + .net3.0 です。よろしくお願いします。
492491:2009/04/06(月) 15:04:22 ID:aHV4rUBO
すみません、自己解決しました。
Get-WmiObject win32_process を使えばできました。
493名無し~3.EXE:2009/04/13(月) 18:40:44 ID:sg9Xd78a
なんだかいまいちこれの便利さが分からない。
起動が少し重いし、インストールしたけどほとんど触ってないや。
494名無し~3.EXE:2009/04/13(月) 19:40:05 ID:zplp8l5A
ほとんど触ってないんだったら分かるはずがないさ。
495名無し~3.EXE:2009/04/13(月) 20:53:44 ID:sg9Xd78a
>>494
たしかに。.
496名無し~3.EXE:2009/04/13(月) 23:22:47 ID:mdcOS/Hk
おっ?なんか使ったらパワーが出てきた!
497名無し~3.EXE:2009/04/14(火) 00:07:47 ID:sO0GLx9y
そんな冷たいこと言わないで
こんな場面では便利さを感じた的な御意見を拝聴させていただければ
498名無し~3.EXE:2009/04/14(火) 05:49:42 ID:nrkaVSxd
DOS窓ぐらいキビキビ動作してくれたら言うことないんだけども
あと大量のテキスト置換なんかもPerlの方が速いか
それ以外は便利さしか感じない
499名無し~3.EXE:2009/04/14(火) 06:05:21 ID:sw+jXUXy
高速化のスクリプト流しておくとかなり違うよ
500名無し~3.EXE:2009/04/14(火) 07:49:18 ID:PNB0gL6u
どういう風にテキスト置換やってるのか分からないが
とりあえずGet-Contentは-ReadCount:0指定して変数に代入してから中身弄った方がいい
501名無し~3.EXE:2009/04/14(火) 08:52:18 ID:vleDLv1/
巨大テキストファイルを扱うなら、.NETフレームワークのStreamReaderを使うほうがいい。
正規表現にマッチする行を数えるなら、

function global:countem([string]$s1, [string]$s2){
if(!(Test-Path $s1)){return 'That path failed.'}
$e = [System.Text.Encoding]::GetEncoding("Shift-JIS")
$sr = New-Object System.IO.StreamReader((Resolve-Path $s1), $e)
$c = 0
while($l = $sr.readline()){
if($l -match $s2){$c++}
}
$sr.close()
return $c
}

みたいな関数を作っておく。
502名無し~3.EXE:2009/04/14(火) 09:17:26 ID:nrkaVSxd
>>499-501
うん、まあその辺りは全部試してるんだわ…
でもd
503名無し~3.EXE:2009/04/14(火) 22:26:41 ID:+Ju4IP+5
正規表現使った置換はPowerShellの中では多分Regex使うのが一番早いんじゃないかね
$r = [regex]'^(\s+)(.*)$'
$r.Replace( (type large.txt), '$2' )
みたいなの
504名無し~3.EXE:2009/04/15(水) 07:26:56 ID:Tw7eVrTA
Connectに昨日一日で大量にバグ修正報告されてる
そろそろβの話が出てくるかー?
505名無し~3.EXE:2009/04/19(日) 18:13:42 ID:WZBm3vDv
>>260
Ctrl+D の後に Tab で現在の日時等補完
<Ctrl+D><tab><tab><tab><tab><tab>...
>>> [DateTime]::Now → 2009/04/19 18:08:34 → 20090419 → 04192009 → 20090419180834 → 04192009180834 → 2009/04/19 → 2009年4月19日 18:08 → 2009/04/19 18:08 → ...

Ctrl+P の後に Tab でコマンドラインバッファの手動ポップ (<command>;<tab>と同じ)
<Ctrl+P><tab>

Ctrl+V の後に Tab でクリップボードの内容を貼り付け
<Ctrl+V><tab>

Ctrl+Z の後に Tab で現在の入力行の最後の一単語を切り取り、クリップボードにコピーする機能追加
Get-ChildItem *.txt<Ctrl+Z><tab> # *.txt を切り取り
Get-ChildItem <Ctrl+V><tab> # 切り取った *.txt を貼り付け

Ctrl+X の後に Tab で現在の行の切り取り、クリップボードにコピーする機能追加
<command1> <Ctrl+X><tab> # 現在の入力行を切り取り
<command2>; <Ctrl+V><tab> # 切り取った行を貼り付け

Ctrl+X の後に任意の一文字を入力し、Tab を押すと入力行の後ろからその一文字までを切り取る機能追加
Get-ChildItem -Filter *.txt<Ctrl+Z>-<tab> # - (ハイフン)の後、Filter *.txtまでを切り取り
Get-ChildItem -
Get-ChildItem -Path C:\ -<Ctrl+V><tab> # 切り取った Filter *.txt を貼り付け
506名無し~3.EXE:2009/04/20(月) 17:47:28 ID:qbebe/2Z
>>505

乙です。
<Ctrl+V><tab>がイイ!!
507名無し~3.EXE:2009/04/20(月) 20:45:59 ID:Obh0V9Hw
会社のPC、申請したらあっさりインストール許可下りて即日利用可能になった
ちょろいもんだぜ
508名無し~3.EXE:2009/04/20(月) 22:16:10 ID:gZKPhuKL
>>507
上司「わが社のアドミン君はがんばり屋だな〜。そういえば庶務のネットワークの調子が(ry
        そうだ、早速アドミン君に頼もう」
509名無し~3.EXE:2009/04/21(火) 00:21:01 ID:ktkwv1RJ
>>505
わたしは<Ctrl+X><tab>がイイ!スクリプト作成に大助かりです。

要望というわけではないですが、 echo "hoge"|te<tab> などとスペースを空けずに
入力したとき、 echo "hoge"|tee となってほしいところが echo "hoge|tee" となり、
引用符の場所が変わってしまいます。
スペースを空けない自分が悪いのはわかっていますが、この辺をうまく汲み取って頂けると
嬉しく思います。
510名無し~3.EXE:2009/04/21(火) 22:35:00 ID:tdHT+EK2
>>509
引用符使わずに echo hoge|te<tab> で万事解決
なんとかならなくはないけどさー
511名無し~3.EXE:2009/04/24(金) 19:36:05 ID:vnH5klQq
このスレ最大の注目連載記事4ヶ月ぶりにキタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!
【ハウツー】ゼロからはじめるWindows PowerShell − コマンドレット編
ttp://journal.mycom.co.jp/articles/2009/04/24/powershell/index.html

ゆっくりした結果がこれだよ!!!!
512名無し~3.EXE:2009/04/25(土) 02:19:57 ID:jO1ZDQ8t
[]を含むファイルをリネームするのはどうすりゃいいんだ
エスケープしてもダメだ

ren -path 'A`[1`].jpg' 'A.jpg'
Rename-Item : 指定されたパス C:\A`[1`].jpg のオブジェクトは存在しません。

みたいになる
513名無し~3.EXE:2009/04/25(土) 02:24:19 ID:jO1ZDQ8t
すまん過去スレに同じのがあったわ
moveでやるしかないのね
514名無し~3.EXE:2009/04/29(水) 21:51:04 ID:NjbbOchu
>>509
弄ってみたけど、完全に修正するのは無理っぽいね
echo "hoge"|tee-         まで入力してTabを押した時に
echo "hoge"|Tee-Object"    となるようにすることは出来るけど
結局バックスペースキー押すんなら最初からスペース空けるか引用符使うなよって話になる
515名無し~3.EXE:2009/04/30(木) 21:24:38 ID:mlyeVsi1
さて、Win7RCには少なくともベータ相当のV2が入ってるはずだが・・・
516509:2009/04/30(木) 23:24:20 ID:F0Tol7Ab
>>514
バックスペース1回で済むのならもう充分です。
(矢印キーで何文字も戻って引用符を直すより全然楽ですから…)

よろしければどこを修正すればいいのかご教示頂けないでしょうか。
517名無し~3.EXE:2009/05/01(金) 22:20:13 ID:xq84WxH+
>>516
最新のファイルでいうと1904行目、
if ( $lastWord -ne $null -and $lastWord.IndexOfAny('/\') -eq -1 ) {
の上辺りに
$LastWord = $line.Split("(] ;\/=+.,>")[-1] -replace "^(`"|')?(.*)$",'$2'
って書き加えとけば多分大丈夫

これ変更したところで困る人なんてまずいないだろうからその内追加分含めて修正しまっさ
518509:2009/05/01(金) 23:07:57 ID:9GJVDPKG
>>517
うまくいきました、ありがとうございます!(最新ファイルだと1950行目?でした)
改めてソースを拝見したのですが、凄すぎて眩暈が…。

本当に感謝感激いたしております。ありがとうございました<(_ _)>
519名無し~3.EXE:2009/05/02(土) 19:25:00 ID:KDVSD8i0
2つの配列を比較してマッチングした要素だけを取り出したいのですが、なかなかうまくいきません。
皆さんの知恵をお借りできませんでしょうか。

実際にはテキストファイルから読み込んでいますが、2つの配列が存在するとします。

$test = @("win2k3001.sv","win2k3002.sv","win2k3003.sv","win2k3004.sv","win2k3005.sv")
$test2 = @("win2k3002.sv","win2k3003.sv","win2k3006.sv","win2k3008.sv")

ここから、$testと$test2の配列の共通の要素だけを出力したいのです。

しかし、下記の式に代入するとエラーメッセージが返ってきます。

$leng1 = $test.length
$leng2 = $test2.length

for ($i =0 ,$i -le $test.length ; i++){
for ($ii =0 ,$ii -le $test2.length ; ii++){
if ( $test[i] -eq $test2[ii]){ echo $test[i]; }
}}

<出力されるエラーメッセージ>

配列インデックス式が存在しないか、または無効です。
発生場所 C:\Documents and Settings\tosi\デスクトップ\TEST5.PS1:11 文字:22
+ if ( $test[i <<<< ] -eq $test2[i]){ echo $test[i]; }

直接、配列の要素を指定して以下のように実行してやると結果は返ってくるのですが、for構文と組み合わせると失敗してしまいます。

if ($test[1] -eq $test2[0]){ echo $test[1]};

どうか、うまく解決できる方法をご教授ください。よろしくお願いします。
520名無し~3.EXE:2009/05/02(土) 19:44:58 ID:O9LZ59Bl
>>519
>>519
なんか色々と無茶苦茶だぞ・・・
i と ii は変数なんだからいつでも必ず頭に$を付ける必要があるし
for 文の構成は for ( 初期化文 ; 繰り返し条件 ; 繰り返し処理 ) { 処理内容 }
であって、カンマで区切ったりしない
正しく書くならこうでしょう

for ($i =0 ; $i -le $test.length ; $i++){
for ($ii =0 ; $ii -le $test2.length ; $ii++){
if ( $test[$i] -eq $test2[$ii]){ echo $test[$i]; }
}}


PowerShell らしく書くなら
$test | % { $test2 -eq $_ }
もしくは
Compare-Object $test $test2 -IncludeEqual -ExcludeDifferent | % { $_.InputObject }
でいいと思うけども
521名無し~3.EXE:2009/05/02(土) 19:46:22 ID:jRDYyZmE
ドルが抜けとる。

i -> $i
ii -> $ii

データが小さければ、この方法でも良いけど。
大きければハッシュを使うなり工夫した方が良いよ。
522名無し~3.EXE:2009/05/02(土) 19:54:57 ID:jRDYyZmE
>>520
Compare-Object なんて便利なコマンドレットがあるのね。勉強になったわ。
523519:2009/05/02(土) 20:27:41 ID:KDVSD8i0
>520
>521

レスありがとうございます、大変参考になりました!
おかげでプログラムが無事に動きました。

; で区切るのと、$が抜けていたのに気付かなかったのが恥ずかしいです…

Perl程度しか経験していなかったので、最後の方法は勉強になりました。

そんなにたくさんのデータを扱うわけではないので、これで充分です。

ありがとうございました。
524名無し~3.EXE:2009/05/05(火) 01:43:38 ID:1kdDaqkf
>>260
名前空間変数表記でパスを補完
${fu<tab>
${function:cl<tab>

スペース以外の任意の文字列に続けて Ctrl+L でヒストリのコマンドの一部(※)に補完
ls -Force -Recurse -Filter *.txt | ? { $_.LastWriteTime -lt [DateTime]::Today } ; echo PowerShell
ls<Ctrl+L><tab><tab>
?<Ctrl+L><tab><tab>
ec<Ctrl+L><tab>
(※) ヒストリ上のコマンドを | 、 ; 、| と ; で区切った文字列

Ctrl+K の後に任意の一文字と Tab でスペースのある位置の直後にその文字を挿入(デフォルトでは丸括弧)
1 - 1 - 1 - 1<Ctrl+K><tab><tab><tab><tab>
1+1 | {$_*2}<Ctrl+K>%<tab>
(※) 任意の一文字が ( { [ の場合は行末に対応する括弧を補完

Ctrl+K を二回入力した後任意の一文字でその文字の前に $ を追加
function:\a:<Ctrl+K><Ctrl+K>{<tab>
echo PowerShell; ls PowerShell; Get-Process<Ctrl+K><Ctrl+K>{<tab>

}. の後に<tab>で ScriptBlock 型のメンバー名に補完
{ 1+1 }.inv<tab>

コマンド名補完で、エイリアス→関数→フィルター→コマンドレット→スクリプト→パスが通ってるフォルダにあるファイル
の順番に補完されるようにした

コマンドをスペースで区切った最後のトークンに二重引用符が2つある場合に
コマンド名に補完しようとすると一番後方の二重引用符が消える問題修正

長い間消し忘れていた古いコメント削除
525名無し~3.EXE:2009/05/06(水) 20:34:06 ID:xjwTSWw4
以下が2.0で新しく予約語に入ったそうな
PowerShell V2 - backward compatibility
ttp://blogs.msdn.com/powershell/archive/2009/05/06/powershell-v2-backward-compatibility.aspx
o Reserved language keywords: USING, CLASS, DEFINE, and VAR
o Reserved parameter names: ?SelectProperty and ?SelectObject

usingとかclassとかは見た通りの使い方ができるならほとんど汎用スクリプト言語と変わらなくなるな
実際の実装は3.0以降だと思うけど
526名無し~3.EXE:2009/05/07(木) 02:35:00 ID:46aOsrkN
Vistaなんだけど、PowerShell入れても、
既存のバッチスクリプトの動作が変になるとか、
そういう心配は全然ナッシン?
527名無し~3.EXE:2009/05/07(木) 06:30:30 ID:cF4ImvXB
うん
528名無し~3.EXE:2009/05/09(土) 20:13:37 ID:G7BvCbwe
えっと、.netベースってことは日本語も使えるの?>>PowerShell
cygwin環境の場合、ツールの日本語対応はあきらめてたんだけど、こっちはいけるのかな?
529名無し~3.EXE:2009/05/09(土) 21:28:33 ID:SkQFwI+a
PowerShell自体は日本語使えるけど
日本語対応してない外部ツールが日本語使えるようになったりはしないよ
530名無し~3.EXE:2009/05/09(土) 22:53:23 ID:NbDQpnCV
コマンドラインからdirすると
Mode LastWriteTime Length Name
---- ------------- ------ ----
----- 2008/01/16 12:21 1727 Get-Which.ps1
----- 2008/10/26 21:35 296 profile.ps1
----- 2008/01/16 11:29 2471 Use-Clipboard.ps1

になって、スクリプトからdir実行すると
LastWriteTime : 2008/01/16 12:21:57
Length : 1727
Name : Get-Which.ps1


LastWriteTime : 2008/10/26 21:35:02
Length : 296
Name : profile.ps1


LastWriteTime : 2008/01/16 11:29:27
Length : 2471
Name : Use-Clipboard.ps1

になるんだけど何で?
出来ればスクリプト中からでも前者の形式で出したいんだけど。
531名無し~3.EXE:2009/05/09(土) 23:01:34 ID:6+bL1mAJ
dir | Format-Table
532名無し~3.EXE:2009/05/09(土) 23:35:03 ID:EWW1X07w
やっぱり日本語版は「Windows力貝」になるのかな
533名無し~3.EXE:2009/05/09(土) 23:39:36 ID:SkQFwI+a
残念それは中国語版だ
534名無し~3.EXE:2009/05/10(日) 09:14:15 ID:1bvr2eJF
窓能殻

じゃないのか…
535名無し~3.EXE:2009/05/12(火) 00:04:36 ID:+10PIBPH
CodeZineの連載が.NETなライブラリ呼ぶだけみたいになってきてるな。
それがPSの目指すところだとするとちょっと嫌だ。
536名無し~3.EXE:2009/05/15(金) 11:43:19 ID:APBw7QQ1
Win7rcのISEってコード補完利かないのな。
駄目じゃん。
537名無し~3.EXE:2009/05/15(金) 22:59:27 ID:+NE/fMYY
>>535
目指すところを見たいなら本家ブログ見ろって
非開発者に.NETを開放したのも一つの功績ではあるが

>>536
自分で実装できないことは無いが、素直にPowerGUI使え
538名無し~3.EXE:2009/05/18(月) 00:31:17 ID:DigNd49p
ちょっとはパーサー使ってみるかってことで
エイリアスとパラメータを展開するようにしてみたけど
そもそもCLIとメモ帳しか使わない俺に隙は無かった
539名無し~3.EXE:2009/05/18(月) 04:00:03 ID:201X2xS/
EDLIN未だについてるんだな。
540名無し~3.EXE:2009/05/21(木) 00:03:41 ID:cSxGgtuQ
ちょっとおもしろい

> diff 1,2,3 1,2,4

        InputObject SideIndicator
        ----------- -------------
             4 =>
             3 <=


> diff 1,2,3 1,2,4 -IncludeEqual

        InputObject SideIndicator
        ----------- -------------
             1 ==
             2 ==
             4 =>
             3 <=
541名無し~3.EXE:2009/05/23(土) 14:48:41 ID:JXd0BqS4
PowerShell v2.0 ? Differences Between CTP3/Win7Beta and Win7RC
ttp://www.nivot.org/2009/05/22/PowerShellV20DifferencesBetweenCTP3Win7BetaAndWin7RC.aspx
Language Enhancements

$result = $( if ($true) { 42 } )

Now, you can drop the $( and ):

$result = if ($true) { 42 }
or
$sequence = foreach ($i in 0..15) { [math]::pow(2, $i) }


この改良はバラスィー
542名無し~3.EXE:2009/05/24(日) 23:56:35 ID:u+HawG/0
Get-WmiObjectで指定可能な全てのユーザー名の列挙ってWMI使ってできる?
いや別にWMIでやらなくちゃいけないわけではないんだけど
543名無し~3.EXE:2009/06/02(火) 18:00:52 ID:gbcOPABx
 
544名無し~3.EXE:2009/06/03(水) 22:57:22 ID:K+tOXxXG
Import-CSVのCSVファイル弄る時の便利さは神懸かっとるな
PowerShellのお陰で結婚できましたってくらいに
545名無し~3.EXE:2009/06/03(水) 23:12:34 ID:/1TFNNlo
Windows7ももうすぐ。
そうしたら一気に普及するかな。
546名無し~3.EXE:2009/06/03(水) 23:14:53 ID:meKJiatq
PowerShell 普及してほしいね。もうバッチファイルや VBScript は消えてほしい。
547名無し~3.EXE:2009/06/03(水) 23:47:41 ID:AqMEXNRf
全角文字がずれるのは、もう直りましたか?
548名無し~3.EXE:2009/06/04(木) 00:06:07 ID:D0clHK6m
ISE使えでFA
549名無し~3.EXE:2009/06/04(木) 12:59:04 ID:9N5PQWso
PowerShellはデフォルト設定でスクリプトが無効、起動も遅い
バッチやWSHは無くならない
550名無し~3.EXE:2009/06/06(土) 00:44:19 ID:B9OstiVc
>デフォルト設定でスクリプトが無効
これはいいことじゃないか。WSHの悪夢を忘れたのか?
起動?瞬時に起動するけど。
それにバッチやWSHを置き換えるものじゃないし。
PowerShell、バッチ、WSH、etc組み合わせて使うだろフツー。

551名無し~3.EXE:2009/06/06(土) 03:38:46 ID:vU0zmwBi
>>550
WSHにはお世話になってないから分からないが
PSには.netが扱えるから要らなくね?
552名無し~3.EXE:2009/06/06(土) 03:40:14 ID:KCZxNSPR
PSがコンソール開かない.pswみたいな拡張子も用意してくれよ
WSHはそれがきっちり用意されていたのがよかった
553名無し~3.EXE:2009/06/06(土) 04:24:59 ID:sQuTZwrL
>>550
セキュリティ設定を変更するリスクを知らない一般ユーザには
PowerShellスクリプトは存在しないのと同じということなんだが
554名無し~3.EXE:2009/06/06(土) 08:00:57 ID:OyJpxUUs
セキュリティなんてグループポリシーで雁字搦めだろJK
555名無し~3.EXE:2009/06/06(土) 09:23:02 ID:sXWBcVWQ
このJKって女子高生の略なの?
556名無し~3.EXE:2009/06/06(土) 09:35:19 ID:MLCoy+BQ
パワーシェルのコンソールって壁紙設定出来ないの?
557名無し~3.EXE:2009/06/06(土) 09:44:22 ID:vpnyb77U
うちのPSのショートカットは
ウインドウサイズの幅80、高さ10に設定してる。
電卓として使ってるよ。

1+1

とか書いてEnter

スクリプトなんかつかわねーぜ
558名無し~3.EXE:2009/06/06(土) 12:26:29 ID:bAScjV64
バッチファイルに powershell -command "〜" 使うと何気に便利だな。
奇天烈なfor文を駆使するコードから開放されるからありがたい。
rubyと違ってパス区切りにエスケープ無しで \ を使えるのもありがたい。
複数行を簡単に渡す方法ってないのかな。
559名無し~3.EXE:2009/06/06(土) 14:42:07 ID:F7d/m+Rp
-
560名無し~3.EXE:2009/06/06(土) 16:49:15 ID:vU0zmwBi
>>553
正直、わかんない。
その辺の.netプログラムとどっちが危険なの?
プリコンパイルされていない分、アンチウィルスで発見しにくいとか?
561名無し~3.EXE:2009/06/06(土) 19:11:43 ID:erGnlBgx
>>558
複数行ってのが文字列リテラルの話ならヒアドキュメントでできるよ

>>553
実行ポリシーの変更なんて一行でしょ
さすがにそれすらできない人はシェルなんて使わない方がいい

>>560
ネットで拾ってきた.NETとPSスクリプトのどちらが危険かなんてその
分類だけでは言えない。
究極、多くの人が使ってる(検証してる)、信頼できる人がつくってる、
くらいで判断するしかない。
まぁシェルは短いのならソース全部読んで判断すればいいという話
562名無し~3.EXE:2009/06/06(土) 19:17:20 ID:F7d/m+Rp
powershell -command - < hoge.ps1
restrictedでも実行可
563名無し~3.EXE:2009/06/06(土) 22:36:23 ID:sQuTZwrL
>>561
こうやれといえば出来るだろう
同じくこうやれといえばためらいなくUACだって切るのが普通の人
でもそれがどんな意味かはわかってない
564名無し~3.EXE:2009/06/06(土) 23:57:01 ID:Nv4YWavD
???
ためらい無く実行ポリシー変更するならスクリプト実行になんの障害も無いじゃん
分けもわからず実行ポリシー変更しちゃうから危険だよねってことならcmd.exeとかWSHは問題外じゃん
実行ポリシーUnrestrictedにしてダウンロードしたPSスクリプト実行してみ
565名無し~3.EXE:2009/06/07(日) 09:26:42 ID:KTpY73KE
PS使いこなせない人の・・・・
566名無し~3.EXE:2009/06/07(日) 11:26:20 ID:6ldNkVWp
PS1ファイルには0バイト以上のデータを書き込むことにより任意のコードを実行できてしまう脆弱性がある

例)
hoge.ps1
--------
get-childitem \ -Recurse
567名無し~3.EXE:2009/06/07(日) 16:27:36 ID:d05Qikdv
0バイトでも?
568名無し~3.EXE:2009/06/07(日) 18:13:51 ID:6ldNkVWp
>>567
noop
569名無し~3.EXE:2009/06/07(日) 18:45:22 ID:SRo7f8yU
>>566
Windowsにはマウスをクリックすることにより任意のコードが実行できてしまう脆弱性があるんだぜ・・・
570名無し~3.EXE:2009/06/07(日) 19:31:42 ID:d05Qikdv
noopてNOP?
571名無し~3.EXE:2009/06/11(木) 11:53:23 ID:Hf9DnS9L
ゲーム作ってる人、いる?
572名無し~3.EXE:2009/06/11(木) 12:25:11 ID:pvxygoc6
none
573名無し~3.EXE:2009/06/11(木) 16:35:40 ID:Hf9DnS9L
ちょっと作ってくる。
574名無し~3.EXE:2009/06/11(木) 16:37:10 ID:4kzL7mjo
火吹山の魔法使いよろ
575名無し~3.EXE:2009/06/11(木) 20:34:16 ID:Hf9DnS9L
やっとキー入力まで来た。
576名無し~3.EXE:2009/06/12(金) 04:08:40 ID:uQh3s/Yv
とりあえずここまで。

--押して離す.ps1 1/2
cls

$sikaku = "□", "■"
$r = $host.UI.RawUI
$k = 0..255
for ($i=0; $i -lt 256 ; $i++ ) { $k[$i] = 0 }
$f = $true
while ( $true ) {
if ( $r.KeyAvailable ) {
$a = $r.ReadKey("NoEcho,IncludeKeyDown,IncludeKeyUp")
$v = $a.VirtualKeyCode
if ( $k[$v] -eq 0 -and $a.keydown ) {
$k[$v] = 1
$f = $true
} else {
if ( $k[$v] -eq 1 -and -not $a.keydown ) {
$k[$v] = 0
$f = $true
}
}
}

577名無し~3.EXE:2009/06/12(金) 04:09:21 ID:uQh3s/Yv
--押して離す.ps1 2/2

if ( $f ) {
$coordinate = New-Object System.Management.Automation.Host.Coordinates 0, 0
$r.CursorPosition = $coordinate
Write-Host " 0 1 2 3 4 5 6 7 8 9 A B C D E F"
for( $y = 0; $y -lt 16; $y++ ) {
$s = " "
if ($y -lt 10 ) {
$s = $s + [char](0x30+$y)
} else {
$s = $s + [char](0x40+$y-9)
}
for( $x = 0; $x -lt 16; $x++ ) {
$s = $s + $sikaku[$k[$y*16+$x]]
}
Write-Host $s
}
Write-Host "ESCキーを押すと終了します。"
$f = $false
}

if ( $k[0x1b] -eq 1 ) {
break
}
}
--
578名無し~3.EXE:2009/06/12(金) 08:18:31 ID:cR5LHAIk
ttp://www.microsoft.com/technet/scriptcenter/funzone/games/solutions08/expssol10.mspx
このブラックジャックで結構遊べる。。今年の Scripting Game はまだかな?
579名無し~3.EXE:2009/06/13(土) 10:44:06 ID:DVoAC+16
うお、ISEの文字列置換って正規表現オプションもあったのか
UIやぼったくて完全スルーだった
580名無し~3.EXE:2009/06/13(土) 20:16:25 ID:Y0cdb8YI
外部コマンドの起動
外部コマンドの起動&終了待ち
標準出力の取り込み
各種パラメータを指定して起動(ShellExecute相当)
等々の起動関連の使い方のまとまってるサイトってどっかにない?
581名無し~3.EXE:2009/06/14(日) 00:58:01 ID:XAE40zI6
終了待ち以外は大して悩むところではないと思うが

# 外部コマンドの起動
cmd.exe
& 'C:\Program Files\Internet Explorer\iexplore.exe'
C:\Program` Files\Internet` Explorer\iexplore.exe
# 外部コマンドの起動&終了待ち
notepad.exe | Out-Null
# 標準出力の取り込み
$output = cmd /c dir
# 各種パラメータを指定して起動
ping -n 5 172.0.0.1
582名無し~3.EXE:2009/06/14(日) 10:07:36 ID:bF0PazVI
notepad.exe | Out-Null 初めて知った。
583名無し~3.EXE:2009/06/14(日) 10:16:29 ID:eT7+bVQ8
Out-Null じゃなくてもいいけどね、パイプ通せば
584名無し~3.EXE:2009/06/16(火) 14:06:25 ID:kxmVVr5o
in actionだと| sortになってったな
585名無し~3.EXE:2009/06/19(金) 01:50:42 ID:nxsMxAeg
スクリプトでなく、普通にシェルとして使ってる人って居る?
586名無し~3.EXE:2009/06/19(金) 02:53:04 ID:G6nAtvaz
いるよ
587名無し~3.EXE:2009/06/19(金) 03:05:20 ID:acla5Zu9
MS「そうかそれは良かった、これで心置きなくコマンドプロンプトと
 PSのコマンドプロンプトライクな関数やエイリアスを廃止してやるぜ
 ゲハハハハ」
って言われても普通に使えちゃうレベルに使える?
588名無し~3.EXE:2009/06/19(金) 03:49:35 ID:4sM5688r
>>587
エイリアスが完全になくなると困る (デフォルト廃止ならまだ何とか…)
lsがGet-ChildItemでは7倍以上の差があるし (Tab保管?それでも面倒くせ)


Vistaへの強制配布はまだなの?
589名無し~3.EXE:2009/06/19(金) 06:33:14 ID:nxsMxAeg
PowerShell由来であるgciってエイリアスは消さないだろw

sl でディレクトリ移動して
gci でファイルリスト表示して
ni .\名前 -t d でディレクトリ作成
cpi でコピーして
ri でファイル/フォルダ削除して
gc でファイル内容表示か…

これなら何とかなりそうな…?
…あ、でも more 削除されるw
590名無し~3.EXE:2009/06/19(金) 09:29:48 ID:xw0NzwWl
自分で定義すればすむんだからいみない仮定な気がする

俺は普通にシェルとして使ってるよ
591名無し~3.EXE:2009/06/19(金) 22:52:55 ID:pG+vgmvI
どこからがスクリプトでどこまでがシェルなのか良くわからんが
powershell.exe起動して何かするってのはよくやるね
592名無し~3.EXE:2009/06/20(土) 01:51:03 ID:lR9p80nW
とりあえずファイルに起こすならスクリプトで、プロンプトからそのまま使うならシェルじゃない?
ファイルに起こすならフルスペルのがかえって読みやすいくらいだけど
シェルとして使うのにエイリアス無しはキツ過ぎる

…ところで、PSって同一cmdletに対して複数エイリアスがあったりするよね
大概DOS由来、UNIX由来、PSのcmdletの略称に由来の2〜3個かな?
そういうのって、どのエイリアス使ってる?
593名無し~3.EXE:2009/06/20(土) 07:21:37 ID:ONPDoZbQ
Alias gci Get-ChildItem
Alias ls Get-ChildItem
Alias dir Get-ChildItem
Alias fairu-mirumiru Get-ChildItem
594名無し~3.EXE:2009/06/20(土) 10:33:45 ID:adlFp9q4
>593
そのエイリアスは無いわーw
595名無し~3.EXE:2009/06/20(土) 13:14:17 ID:itRg/MCC
おお、PowerGUI Script Editorで -Encoding<space>でAsciiとか選べるようになってるじゃん!GJ!
やっと自分でpowershell.exeのタブ補完弄らなくても良くなるのか・・・
596名無し~3.EXE:2009/06/20(土) 20:54:54 ID:bPLnTcBt
get-web http://www.google.com
とやると標準出力にソースがでろでろと出力されるようにするのってどうやるんですか。
ローカルファイルに落とすサンプルなんかは見つかるんだけど。
597名無し~3.EXE:2009/06/20(土) 21:51:32 ID:itRg/MCC
>>596
ttp://www.atmarkit.co.jp/fdotnet/csharptips/012web/012web_01.html
をPowerShellのコードに書き換えればいいだけ
598名無し~3.EXE:2009/06/21(日) 00:32:37 ID:mkD6Senv
ファイルに落せるなら落したあとでcatすればいいじゃんと思うのは俺だけか。
599名無し~3.EXE:2009/06/22(月) 02:02:45 ID:jZah/V03
$web = ruby -ropen-uri -e "open('http://www.google.com/').each{|i| puts i}"
600名無し~3.EXE:2009/06/22(月) 09:35:11 ID:IRRBn1aG
暇なんで作ってみた
function Get-Web ($uri) { (New-Object System.Net.WebClient).DownloadString($uri) }
601名無し~3.EXE:2009/06/22(月) 13:36:14 ID:IRRBn1aG
ついでに質問
(New-Object System.Net.WebClient).DownloadString($uri)
みたいなのを、
New-Object System.Net.WebClient | invoke-member DownloadString($uri)
とか
gci | invoke-member Length
とかみたいにする方法ないですか?
602名無し~3.EXE:2009/06/22(月) 22:16:22 ID:qAnpeRAt
>>601
$argsとInvoke-Expression使えば出来なくはないけど、ちゃんと引用符でくくらないとメソッドの呼び出しは正しく解釈してくれないぞ
括弧でキャレットが行ったり来たりさせるのがめんどくさいだけなら
(New-Object System.Net.WebClient).onegaitabsankakkowotukete と入力してTabキーを押せばそうしてくれるようにしておけばいい
603名無し~3.EXE:2009/06/23(火) 11:42:09 ID:R3Xc5Ps9
>>602
ふーむ…
後者の方法でやってみます
604名無し~3.EXE:2009/06/23(火) 19:52:02 ID:/emcJdgP
New-Object System.Net.WebClient | invoke-member DownloadString $uri
とかにすれば引用符いらないんじゃね
605名無し~3.EXE:2009/06/23(火) 20:42:25 ID:m33ZacTX
通貨newって書かせろ
new-objectとかなげーよ
606名無し~3.EXE:2009/06/23(火) 22:15:09 ID:/emcJdgP
確かになんでデフォルトエイリアスにしなかったんだろうね
607名無し~3.EXE:2009/06/24(水) 07:40:38 ID:hofWV0g3
どっかに理由が書いてあった気がする
608名無し~3.EXE:2009/06/24(水) 11:33:02 ID:kPg0m6e4
プロンプトで打つことがあんまりなさそうだからじゃね?
デフォルトエイリアスは全体的にプロンプト向けな気がする
609名無し~3.EXE:2009/06/24(水) 15:30:43 ID:PI374IXV
new って動詞じゃないよね? そこが違和感ある
610名無し~3.EXE:2009/06/24(水) 16:12:02 ID:qVVvXca4
Create-Object
Create-Instance
コード保管がないと、困難が異端後撃ちたくないねw
611名無し~3.EXE:2009/06/24(水) 23:19:28 ID:ykNwHKUL
newは将来予約語にするかもしれないからって話だったような
612名無し~3.EXE:2009/06/25(木) 22:19:32 ID:k89GwQtC
Connect-WithCustomers | Get-Feedback | Process-Feedback | Sort Importance | Enable-Change

だ、そうだ
613名無し~3.EXE:2009/06/27(土) 00:36:59 ID:TamJEVTm
$fullnames = New-Object ( [System.Collections.Generic.List``1].MakeGenericType( [String]) );
function using ( $name ) { foreach ( $fullname in [Reflection.Assembly]::LoadWithPartialName($name).GetTypes() ) { $fullnames.Add($fullname); } }
function new ( $name ) { $fullname = $fullnames -like "*.$name"; return , (New-Object $fullname[0]); }

using System.Windows.Forms
$a = new button

なんていうお馬鹿テクを思いついたわけさ
614名無し~3.EXE:2009/06/29(月) 01:04:12 ID:O2OmAZ0l
>>574
とりあえず本を入手した。
615名無し~3.EXE:2009/07/02(木) 00:06:05 ID:6ARzc+LU
>gci -r -force c:\ | ? {$_.Attributes -band [IO.FileAttributes]::Compressed }

フラグのチェックってもうちょっと何とかなんないの?

$_.Attributes -match "Compressed"
あるいはもうちょっと厳密に
$_.Attributes -match "\bCompressed\b"
あたりが限界か。-matchだと遅そうだな。
616名無し~3.EXE:2009/07/02(木) 00:16:47 ID:9N2Dxgnz
短くしたいだけなら
$_.Attributes -eq 2048
617名無し~3.EXE:2009/07/03(金) 21:44:06 ID:zBN1+xsw
要するに $_.Attributes -band com まで入力したら後はタブを押すだけで
$_.Attributes -band [IO.FileAttributes]::Compressed
と展開されるようになるべきだ、と
618名無し~3.EXE:2009/07/04(土) 20:55:12 ID:lpB6WdN7
バッチファイル、cmdからPowerShellのコードを呼び出すにはどうすればいいですか。

たとえば
greet.ps1
"hello, ps world"

というのを書いて
pathext=%pathext%;.ps1
して
greet
で実行できるようにしたいです。
619名無し~3.EXE:2009/07/04(土) 23:32:20 ID:V4A+UBTS
>>618

 powershell -command <実行させる文字列>

試しに、

 powershell -command "dir"

とかやってみたら?
620名無し~3.EXE:2009/07/05(日) 02:01:06 ID:Xdf3UnCD
それだとできるんだけど長すぎるので…
poweshell -command "%1"
なんて関連付ければできるのかな。
621名無し~3.EXE:2009/07/05(日) 03:29:26 ID:x8pk115Q
とりあえず試してみるといいと思うよ
622名無し~3.EXE:2009/07/05(日) 21:56:26 ID:75V72HVp
2.0から折角-Fileが付いたのにフォルダオプションから関連付けをISEからpowershell.exeに変更したら
powershell.exe "%1" になってしまうという悲劇が待っていそうな悪寒
ちゃんと間に -File 入れるようになってるんだろうか
623名無し~3.EXE:2009/07/05(日) 22:13:10 ID:75V72HVp
あ、>>622はWindows7の話
624名無し~3.EXE:2009/07/06(月) 02:06:43 ID:jXUO997p
Windows 7に搭載されるPowerShell 2.0の新機能ベスト10
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20090703/333171/?ST=win

俺的1位は非同期イベント処理対応なんだけど、触れられてすらいないわー
625名無し~3.EXE:2009/07/06(月) 03:06:19 ID:SIu5yygC
最近のMSの宣伝は、どっかズレてるからなぁ。
626名無し~3.EXE:2009/07/06(月) 20:17:32 ID:pHlnkz6T
>>624 については、MSがどうこうというよりも
あの記者はいつも知ったかぶって適当なこと書いてる印象が…。
627名無し~3.EXE:2009/07/10(金) 21:56:21 ID:Lx6mjeOA
この時期に出すって度胸あるな、まあ2.0系の話も入れてるのかもしれないが・・・

PowerShellによるWindowsサーバ管理術
ttp://www.amazon.co.jp/dp/4797350180
628名無し~3.EXE:2009/07/13(月) 13:00:10 ID:z6wunx4E
末尾に全角ブランクのあるフォルダ名のフォルダをカレントディレクトリにしたいんですけど、
方法無いですか?
Set-Locationではダメみたいですが。
629名無し~3.EXE:2009/07/13(月) 14:16:18 ID:z6wunx4E
あとパスの途中に、末尾に全角ブランクのあるフォルダ名があると、
ほとんどうまく処理できないみたいなんですが、仕様でしょうか?
630名無し~3.EXE:2009/07/13(月) 14:30:41 ID:bpvNOAxJ
末尾に全角スペースって何に使うのよ
フォルダ名変えたほうが利口だと思う
631名無し~3.EXE:2009/07/13(月) 16:14:34 ID:KO8ZWJZz
>>629
仕様でしょうか? って言われてもそんなのMSの人間しか答えられないぞ。

まぁそれはともかく
エクスプローラで、末尾に全角スペースついた'test 'ってフォルダ作って

PS C:\Temp> cd 'test '
Set-Location : 指定されたパス C:\Temp\test  のオブジェクトは存在しません。
発生場所 行:1 文字:3
+ cd <<<< 'test '
  + CategoryInfo : 無効な引数: (:) [Set-Location]、PSArgumentException
  + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.SetLocationCommand

確かにおかしいな。バグっぽい気がする。
mkdir 'test ' ってやっても、末尾にスペースのないフォルダが出来るし。
どちらもコマンドプロンプトでは成功する。
632名無し~3.EXE:2009/07/13(月) 16:47:09 ID:z6wunx4E
>>630
サーバの管理。
誰がどんなフォルダを作ってもアクセスできないと困る。
633名無し~3.EXE:2009/07/13(月) 18:12:48 ID:Pp7FkYhi
.NET Framework自体が末端の全角スペースに対応していないので
PowerShellに限らず、ほぼ全ての.NETアプリケーションで
末端が全角スペースのファイルは扱えないんだよね。

一部のソフトは、独自に対応してるみたいだけど。
634名無し~3.EXE:2009/07/13(月) 18:17:47 ID:n2LAdGSq
糞すぎる仕様だな
635名無し~3.EXE:2009/07/13(月) 18:22:31 ID:Pp7FkYhi
今試してみたら、
.NET 3.5 SP1だとダメだけど、
.NET 4.0βだと大丈夫だった。

PowerShellで使われる.NETが4.0になったら直りそうだ。
636名無し~3.EXE:2009/07/13(月) 20:53:51 ID:RDWT9Wka
まあまた3年後の話だな
637名無し~3.EXE:2009/07/13(月) 23:42:28 ID:4CB6kZ06
お題
カレントディレクトリにある 拡張子txtのファイル hoge_001.txt 〜 hoge_999.txt
を一括でhogera_001.txt 〜 hogera_999.txtにリネームせよ。
ワンライナーでお願い。
638名無し~3.EXE:2009/07/13(月) 23:43:21 ID:4CB6kZ06
なるべく短く見やすく分かりやすく。
639名無し~3.EXE:2009/07/14(火) 00:56:20 ID:LH3mbHGb
000の例外とか気にしないなら
ls hoge_[0-9][0-9][0-9].txt | ren -NewName { $_.Name.Insert(4,"ra") }
640名無し~3.EXE:2009/07/14(火) 08:23:50 ID:gx5T8pRc
>>633
>>635
貴重な情報、ありがとうございました。
管理には使えない場合があるみたいですね。

当分の間、自動処理にはvbsと併用することにしました。
641名無し~3.EXE:2009/07/14(火) 17:44:42 ID:WAY5ATTl
.Netオブジェクトって重い?
.NetオブジェクトのPowerShellで書いたスクリプトと同じことを
comオブジェクトのvbsでやらせると、かなり速く感じる。
642名無し~3.EXE:2009/07/14(火) 22:29:49 ID:/LS9b2lF
>>637
大ざっぱに
ls hoge*.txt | ren -newName { $_.Name.Replace("hoge","hogera") }
643名無し~3.EXE:2009/07/14(火) 22:44:30 ID:PGQz6GmE
ロード時の重さはいかんともしがたいのゥ
644名無し~3.EXE:2009/07/14(火) 23:37:32 ID:s6rZpIon
>>641
.NET自体のオーバーヘッドもさることながら、
PowerShellのスクリプトを実行する場合、内部的には
1) スクリプトのコンパイル
2) 実行
のフェーズに分かれていて、1)のコンパイルが非常に遅いという噂がある

これは、スクリプトを事前コンパイルすることで対処できるみたいなので、
特定のスクリプトを頻繁に使うなら試してみたらどうか
ngen で検索すると情報が出てくる
645名無し~3.EXE:2009/07/15(水) 12:38:20 ID:zWKQoJxV
>>644
このスレはいいですね。
2chと言えば、素人に毛の生えたような方が、
他人をバカにすることにより自分のポジションを慰め、
それ以上の情報のかけらも得られないスレも多いのに。

数少ないPowerShellの情報交換の場としてすごく参考になります。
646名無し~3.EXE:2009/07/15(水) 12:42:52 ID:18+oppvl
>>641

.netのオブジェクトそのものは、GUIを除けば、あまり重くない。
647名無し~3.EXE:2009/07/15(水) 18:46:00 ID:mXcocwfe
>>646
えー、うそー。
648名無し~3.EXE:2009/07/15(水) 21:15:15 ID:Bq1btRCk
ls
しただけで相当もっさり。
手癖でとりあえず打っちゃってファイルが1000個くらいあるとかなりストレス。
シングルコア性能が後10倍くらい速くなればそれなりに使えそう。
649名無し~3.EXE:2009/07/16(木) 00:00:02 ID:GdCoYsmd
フォルダ分けして整理しなさい
650名無し~3.EXE:2009/07/16(木) 06:56:55 ID:/Sq+DJ84
起動速度の話だけど
http://blogs.msdn.com/powershell/archive/2008/09/02/speeding-up-powershell-startup-updating-update-gac-ps1.aspx
とりあえずこれはやっておくべきらしい。

最初他のBlogで見たときは、よくあるプラシーボ的な速度向上法かと思ってしまったが、
Powershellのインストーラのバグでインストール時にngenが走っていなかったという…。
651名無し~3.EXE:2009/07/16(木) 07:26:57 ID:/Sq+DJ84
>>648
PS C:\Windows\system32> dir | Format-Table | Out-Host

PS C:\Windows\system32> dir | Format-Table | Out-File C:\Temp\test.txt

で相当速度が違うから、体感には画面表示の遅さがかなり効いてると思う。
652名無し~3.EXE:2009/07/16(木) 17:29:35 ID:sVWvn9Ps
ngenしたらまず起動速度が速くなったことに感激した。
653名無し~3.EXE:2009/07/16(木) 20:55:55 ID:qDS68zQB
何回目のループだよw
654名無し~3.EXE:2009/07/16(木) 21:38:26 ID:z+LUh4Kh
ちょっと教えてくれ。
ググってもいまいち俺の求めてる物がなかったので、、、
cmdだとバッチファイル.bat作って、中身を
mysql -u root -p*****

みたいに書いておくとプロンプトが立ち上がるでしょ?
これを.PS1でやりたいんだが、どうすればいいんでしょ?
PSが立ち上がったが、CMDが立ち上がってるような状態にしかならなくて困ってます。
お知恵をくださいませ〜
655名無し~3.EXE:2009/07/16(木) 22:56:44 ID:QYRCyj/5
XPにWindowsUpdateからPS入れたけど、
起動速いね。
NGENも何もしてない。
ノートパソコンでメモリ1.5G、CPUはCore2DUO。
以前他のCore2DUOのデスクトップマシンで試したときは起動に2〜3秒かかったと思ったんだけど。
656名無し~3.EXE:2009/07/17(金) 02:21:55 ID:3fmrIUjo
ttp://d.hatena.ne.jp/sirocco/20090511/1242070398
$OutputEncoding を シフトJISにすりゃいいだけだけど
BOMなしだとそれでも文字が欠けたりするね

> Set-Content -Encoding UTF8 -Value これはUTF8です -Path utf8.txt
> $OutputEncoding = [Text.Encoding]::Default
> type .\utf8.txt | nkf -s
これはUTF8です

> [Text.Encoding]::UTF8.GetBytes("これはUTF8です")|Set-Content -Encoding Byte -Path utf8.txt
> $OutputEncoding = [Text.Encoding]::Default
> type .\utf8.txt | nkf -Ws
これはUTF8で


普通にGet-Type使えばいいだけだとは思うが
657名無し~3.EXE:2009/07/17(金) 07:05:13 ID:XXwxu/JZ
>>654
>PSが立ち上がったが、CMDが立ち上がってるような状態
この意味がわからない。mysqlが走らないってこと?
プロンプトの背景色の話だったら、PowerShellのショートカット以外から起動した場合に黒になるのは正常だが。
658名無し~3.EXE:2009/07/17(金) 07:41:52 ID:XXwxu/JZ
>>656
BOMが無いとGet-Contentがエンコーディングの自動検出出来ないみたいだね

> [Text.Encoding]::UTF8.GetBytes("これはUTF8です")|Set-Content -Encoding Byte -Path utf8.txt
> $OutputEncoding = [Text.Encoding]::Default
> type -Encoding UTF8 .\utf8.txt | nkf -s
これはUTF8です
659名無し~3.EXE:2009/07/17(金) 10:42:57 ID:x/4n0V2S
>>657
説明下手で申し訳ないです。
MySQLは起動しますが、マウスでのコピペがDOSプロンプト風に戻ってるのがこまってるところです。
powershellを導入するきっかけになったのが、いちいちメニューを出さないでマウスで文字が選択できて、
右クリックで貼り付け出来る所だったので、それが出来ないと悲しい限りです。。。

>プロンプトの背景色の話だったら、PowerShellのショートカット以外から起動した場合に黒になるのは正常だが。
なるほど、黒画面が正常なのですね。

660名無し~3.EXE:2009/07/17(金) 19:31:50 ID:f+i40Kzf
>>659
>メニューを出さないでマウスで文字が選択できて右クリックで貼り付け出来る所

これは普通のコマンドプロンプトでも、プロパティのダイアログを開いて
[編集オプション]-[簡易編集モード]にチェックをいれておけばすむ話では?
661名無し~3.EXE:2009/07/17(金) 19:49:29 ID:had4J3KZ
>>659
簡易編集モードか何かの設定を調べろ。
662名無し~3.EXE:2009/07/17(金) 19:58:14 ID:x/4n0V2S
>>660
>>661
うぉ!まじか!!!
こんな事が出来たなんて!
サンクス
663名無し~3.EXE:2009/07/19(日) 20:06:13 ID:56tXdU4I
PowerShell 2.0 RC: Working with .NET Callbacks ? Part 1 - Synchronous
ttp://www.nivot.org/2009/07/18/PowerShell20RCWorkingWithNETCallbacksPart1Synchronous.aspx

スクリプトブロックの型変換は大分柔軟になったみたいだ
664名無し~3.EXE:2009/07/23(木) 17:35:10 ID:698VqhBz
あんまりPCとか詳しくないんですけど、
これを勉強すれば例えば、
WinMxをシェルで操作したり、
DVD Decrypter・DGIndex・TMPGEncを操作して
寝ている間にアニメやドラマの全話数分エンコードする
とか出来たりするんでしょうか?
665名無し~3.EXE:2009/07/23(木) 17:48:11 ID:90AZuRWA
できない
666名無し~3.EXE:2009/07/23(木) 19:10:06 ID:8y0tuqsN
>>664
つかまれ!
667名無し~3.EXE:2009/07/23(木) 19:28:53 ID:698VqhBz
すみません。質問の仕方を間違えてしまいました。
これを使えばMicrosoftのOfficeSoft以外の
例えば拡張子がexeの普通のフリーソフトとかを
操作出来たりするのでしょうか?
VLCMediaPlayerを起動して、
フォルダ内の全ての動画ファイルを順に再生
その際、全てのファイル再生において
最初の1:00と最後の1:30はOPとEDなので
再生しないようにするとか・・・。
668名無し~3.EXE:2009/07/23(木) 19:31:32 ID:qSvIQfR/
COMインターフェースを用意してるものは操作できる。
例えばExcelのセルを配列とみなして値ぶっ込んだりとか。
用意してないものはほぼできない。
ウィンドウ検索してメッセージ送って操作するといったことはできなくもないが
非常に面倒でAutoHotKeyでも使った方がはるかにまし。
669名無し~3.EXE:2009/07/23(木) 20:03:52 ID:698VqhBz
分かり易い回答有難うございます。
最後に一つだけ。
COMインターフェースとやらを
用意しているのかどうかの確認はどうやるのでしょうか?
670名無し~3.EXE:2009/07/23(木) 20:15:59 ID:H0pZT4kt
>>669
それが自分で調べられない人には無理じゃないかな?
671名無し~3.EXE:2009/07/23(木) 23:24:50 ID:NCUoPDm0
各ソフトの開発者向けマニュアルをじっくり読むしかないねぇ
レジストリにある程度は記録されてるけど、全部じゃないし、使い方が載ってるわけでもないし
672名無し~3.EXE:2009/07/24(金) 04:27:35 ID:ADwwHuL8
自動化とかで検索してたら
ttp://blog.livedoor.jp/mtatsu0206/archives/51419063.html
こんなのあったんですけど、
VBSで出来るならPowerShellでも出来る道理なんですよね?
これが何をしているのかはさっぱりですが・・・。
673名無し~3.EXE:2009/07/24(金) 09:41:44 ID:cWVFjSOE
>>672
>VBSで出来るならPowerShellでも出来る道理なんですよね?
当然だけど同じことがしたいなら、VBSとPowerShellの両方をよく理解してないとできないぞ…。
674名無し~3.EXE:2009/07/29(水) 09:19:22 ID:NbLV4deZ
 
675名無し~3.EXE:2009/07/29(水) 09:30:07 ID:rjJZBUtO
Windows PowerShell 2.0 RTM
http://blogs.msdn.com/powershell/archive/2009/07/23/windows-powershell-2-0-rtm.aspx

XP / Vista用のパッケージは「next few months」に出るそうな。
676名無し~3.EXE:2009/07/31(金) 00:25:47 ID:si70LVvp
Ctrl-Cやプロセスの終了でスクリプトを終了させられた場合でも、何かしらの終了処理を行わせる方法(シグナルのトラップ?)はあるでしょうか?
677名無し~3.EXE:2009/07/31(金) 15:31:58 ID:fPLWy6Es
Ctrl-Cはあるけどプロセス終了にはない
678名無し~3.EXE:2009/07/31(金) 20:58:59 ID:iP2RJDnn
>PowerShellによるWindowsサーバ管理術
>おそらく国内では初の、PowerShell ver.2を使ったスクリプトベースでの
>Windowsサーバー管理ノウハウの書籍です。ぜひ本屋さんでお手に取ってみてください!
http://blogs.wankuma.com/mutaguchi/archive/2009/07/20/178462.aspx

ほうほう。
679名無し~3.EXE:2009/07/31(金) 23:40:07 ID:WMCszvy1
筆者乙
680名無し~3.EXE:2009/08/01(土) 03:37:14 ID:lWHBylmW
何が出ても近くの市立県立図書館で借りっぱにするだけ
681名無し~3.EXE:2009/08/01(土) 04:01:35 ID:ni1aIuKH
貧乏人乙
682名無し~3.EXE:2009/08/01(土) 10:58:27 ID:+0taBwqr
むたぐちって確かねらーなんだよな
683名無し~3.EXE:2009/08/01(土) 12:47:01 ID:NCmy5tW5
ビジュアルなCD(Set-Location)を作りたい。
コマンドを打つとフォルダ選択ダイアログが出てフォルダを選択するとカレントディレクトリがそこになる。

function Set-Location-Super{
$sh = New-Object -ComObject Shell.Application
$folder = $sh.BrowseForFolder(0, "フォルダを選択してください", 0)
if($folder -eq $null){
}else{
Set-Location $folder.Self.Path
}
}
Set-Alias cd2 Set-Location-Super

これをprofile.ps1に入れて使ってみたが、ダイアログが後ろに隠れる。
どうしましょ?
.NETの方のフォルダ選択を使わなかったのは何か理由があったはず。
特定のOSで動かないとかそんなような理由だった気がする。忘れた。
684名無し~3.EXE:2009/08/01(土) 16:02:17 ID:ni1aIuKH
0じゃなくコンソールのhwndを指定すればいいんじゃないの?
685名無し~3.EXE:2009/08/02(日) 23:08:31 ID:dQmsp7iJ
ちっからちからー♪かい、かい、かい!


PowerShellの歌を創ってみました。
686名無し~3.EXE:2009/08/03(月) 23:32:59 ID:RIzD6JTU
>>683
結局、COM使ったら Linux系じゃ動かない気がするが…

PS版 ファイラーを作っても良いかもしれんね
687681:2009/08/04(火) 00:30:45 ID:Y0Szt/Es
>>678
図書館が近くにない田舎者なので買ってみました。
内容が散漫で「これ一冊でサーバ管理業務がこなせる」ようにはならないと思います。
688名無し~3.EXE:2009/08/04(火) 00:35:20 ID:RYq9R7ce
>>686
それならSystem.Windows.FormsのFolderBrowserDialogを使えばいいと思う。
689名無し~3.EXE:2009/08/04(火) 00:37:13 ID:2CHuVsGL
そういう発想もあるのか
てっきり2003で動かないとかそういう話かと思ったが
690名無し~3.EXE:2009/08/07(金) 13:12:23 ID:wuU789cj
某フォントビューアを使おうと思ったらシェアだったから
レンダリングをブラウザに○投げする奴を作ってみた

"<html><title>フォント一覧</title><body><h>フォント一覧</h><table border=`"1`">"
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$fonts = New-Object -TypeName System.Drawing.Text.InstalledFontCollection
$fonts.Families | %{
    $fn=$_.Name
    "<tr><td>$fn</td><td>"
    "<font face=`"$fn`">The quick brown fox jumped over the lazy dog. <br>0123456789 亜唖亞あいうえお</font>"
    "</td><tr>"
    }
"</table></body></html>"

使い方
./fontviewer.ps1 > fonts.htm; fonts.htm

GAC Version Location --- ------- -------- True v2.0.50727 C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll
なんてゴミが混ざるけど気にしない
691名無し~3.EXE:2009/08/07(金) 14:00:50 ID:uHcZtJ30
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
692名無し~3.EXE:2009/08/08(土) 19:01:12 ID:LHRu/P82
そういえば標準出力を捨てる時って
ls > $null
とか
ls > ""
と書くことが出来るけど、空の文字列を渡すと自動的に
ls | Out-Null
あたりに読み替えてるのかね
つか、ls > $null はともかく ls > "" (がエラーにならないの)って見た目インパクトあるな
693名無し~3.EXE:2009/08/10(月) 21:41:17 ID:yIZVZh89
694名無し~3.EXE:2009/08/13(木) 22:27:33 ID:Gi2YswMF
読み取り専用属性外す
ls *.txt | clear-itemproperty -value "ReadOnly"

エラー。なにがいけないの?
695名無し~3.EXE:2009/08/13(木) 22:59:41 ID:WEnJ6DhX
そもそも -Value なんてパラメータが Clear-ItemProperty にない
696名無し~3.EXE:2009/08/14(金) 13:35:11 ID:UyBhXbph
CTP3より新しいバージョンが使われてるんかな
ttps://connect.microsoft.com/windowsmanagement/Downloads
697名無し~3.EXE:2009/08/14(金) 20:33:39 ID:BE5GhGSd
解決!

読み取り専用属性(ReadOnly)を解除する

Get-ChildItem *.txt | Set-ItemProperty -Name Attributes -Value "Normal"

ls *.txt | sp -n attributes -va "normal"
698名無し~3.EXE:2009/08/15(土) 05:27:27 ID:5fwRrxrU
読み取り属性以外も消されると困るならちゃんと書いた方がいいと思うけど
ls *.txt -Force | ? { $_.Mode -like "??r??" } | % { $_.Attributes = $_.Attributes -bxor [System.IO.FileAttributes]::ReadOnly }

そういえばビット演算の代入演算子なかったんだね
699名無し~3.EXE:2009/08/18(火) 17:24:49 ID:8hGT5FeG
テキスト嬲るならPowerShellとPerlどっちがいい?
700名無し~3.EXE:2009/08/18(火) 17:57:45 ID:3YMugRCS
テキストならPerlじゃね
701名無し~3.EXE:2009/08/18(火) 21:54:00 ID:V5rw4tcl
そこであえてawk
702名無し~3.EXE:2009/08/18(火) 23:54:17 ID:cv6FvM7k
XMLとCSV以外の対応はまあ、普通にふつー、だからな
703名無し~3.EXE:2009/08/22(土) 07:43:51 ID:kej5MEZZ
 
704名無し~3.EXE:2009/08/22(土) 17:44:28 ID:6K8GPPQk
これ、ローカライズされたら使う気になるんだけども
ついでにCPANのみたいに楽にモジュール管理できるコマンド用意してさ
ttp://blogs.technet.com/junichia/archive/2009/08/14/3273471.aspx
705名無し~3.EXE:2009/08/28(金) 20:37:42 ID:nN9rELh3
電卓代わりに使ってます。

PS > 1234*456/3
187568
PS >

こんな感じに入力して187568をまた計算で使いたい時、うまいやり方があるのでしょうか?
直前の実行結果のようなシェル変数とかがあれば

PS >$$$*57
10691376
PS >

こんな感じに出来るのですが
706名無し~3.EXE:2009/08/28(金) 21:18:44 ID:NYaqbTSO
$r = 1234*456/3
$r
$r + 100
707名無し~3.EXE:2009/08/28(金) 22:09:59 ID:sGltXMnW
>>705
新しいプロンプトが現れる度に実行される関数があるだらう?
708名無し~3.EXE:2009/09/02(水) 23:34:55 ID:EQznR8gR
延びに延びたけど、>>73って公式本だったんだな
in Action 2 邦訳マダー?
709名無し~3.EXE:2009/09/09(水) 22:31:22 ID:Tv1X8L1z
やっとXP/2003向けにも2.0RC来そう
710名無し~3.EXE:2009/09/10(木) 18:18:28 ID:pfCAhmPN
PS1の時もVistaに間に合わなかったし、
ちょっとここの開発チーム遅すぎだな…。
711名無し~3.EXE:2009/09/11(金) 08:03:01 ID:qpiVgmaG
RC来たけど、やっぱりSP3にしとかにゃならんか
めんどくさくて全然やってないな
712名無し~3.EXE:2009/09/12(土) 04:03:30 ID:oXeDt4ny
とりあえず俺が報告したバグは直ってた
しかしISEは結局垢抜けないままだなー
713名無し~3.EXE:2009/09/15(火) 13:05:51 ID:29gAU1tk
なぁ?これからはレベルの低い書き込みはコピペして晒さないか?
http://yutori7.2ch.net/test/read.cgi/news4vip/1252985957/
714名無し~3.EXE:2009/09/17(木) 18:45:02 ID:dmin59Fy
PowerShellのスクリプトの中で外部コマンドを実行するときに、
そのコマンドラインを引数と一緒に標準出力に出したりとかってできるの?
715名無し~3.EXE:2009/09/18(金) 22:33:05 ID:zapOPfvB
外部コマンドだけでいいんならそのコマンドをに引数渡して実行するだけのバッチファイル作って
それを呼び出すのが手っ取り早いんでない
716名無し~3.EXE:2009/09/20(日) 14:08:48 ID:4TGD4coS
ファイルhoge.batを作り、中身を

%1 %2 %3 %4 %5 %6 %7 %8 %9

にして、パスの通ったディレクトリに放り込んでおく。

「hoge <実行したいコマンドライン>」で引数が8個までなら実行できる。
717名無し~3.EXE:2009/09/20(日) 14:19:31 ID:6yCc48UZ
>>715
同じことはPowerShellなら関数を作るだけでできるね。
ただ、それを毎回呼び出さないといけない。
Makefileの各ターゲットで実行するコマンドみたいに、
外部コマンドを実行しながら標準出力にそのままコマンドと引数を垂れ流してくれるような動作がほしい。
バッチファイルの標準の動作みたいな。
718名無し~3.EXE:2009/09/20(日) 16:10:58 ID:8vgNe6uv
>>717
ひとまず外部コマンドに対してできればいいんだよね?
具体的な話をすると
md C:\batch
gcm *.exe | % { Set-Content -Value ($_.Name + " %*") -Path "C:\batch\$($_.Name -replace '\.exe$').bat" -Encoding Ascii }
これで既にパスが通ってるディレクトリの実行ファイルに対しては対応するバッチファイルを作れるから
後は profile.ps1 の中で
$env:Path = 'C:\batch;' + $env:Path
としておけばいいんでない?ということなんだけども
719名無し~3.EXE:2009/09/20(日) 20:45:35 ID:PCptAvPd
>>716
%*
720名無し~3.EXE:2009/09/21(月) 21:41:36 ID:bpS2R4on
テキストエディタとしてのISEのスレはそれなりに需要あるかな
標準でやっとこさあれだけのものが使えるようになったってのは、それなりに大きいことだと思う
721名無し~3.EXE:2009/09/22(火) 23:56:01 ID:E814kggO
>>260
- で始まる演算子の後と、 $_ を左辺値に使った場合でも定数補完が有効になるようにした
ls | ? { $_.Att<tab> -band a<tab>
>>> ls | ? { $_.Attributes -band [System.IO.FileAttributes]::Archive


Ctrl+W の後に Tab で .NET/WMI のクラス名や WMI の名前空間をフルネームに展開
[arraylist<Ctrl+W><tab>
>>> [System.Collections.ArrayList]

New-Object button<Ctrl+W><tab>
>>> New-Object System.Windows.Forms.Button

Get-WmiObject product<Ctrl+W><tab>
>>> Get-WmiObject CIM_Product

gwmi -Namespace ms<Ctrl+W><tab> -Class Batt<Ctrl+W><tab>
>>> gwmi -Namespace ROOT\CIMV2\ms_409 -Class CIM_Battery

おそらく今回で1.0向けに弄るのは最後
というかこの更新自体弄ったのは数ヶ月前だけども
722名無し~3.EXE:2009/09/23(水) 03:33:30 ID:Egh3KviT
ちょいとわかる人教えて欲しい

exeファイルを実行するとき、「"」を含むパラメータを渡したいんだが方法はあるだろか。
手元でやったところでは、"が消えてしまって困ってる。

hoge.exe "hoge.aaa"#xxx "hoge.bbb"#yyy とか実行したいんだけど、
hoge.exe hoge.aaa#xxx hoge.bbb#yyy が実行されちゃってる。
723名無し~3.EXE:2009/09/23(水) 04:10:39 ID:UHNQ3vWx
>>722
PowerShellからのアプリ呼び出しは
PowerShellの解釈 => C言語などのアプリの引数解釈の2段階になるので、両方の注意が必要

まず、アプリhoge.exeがVC++などで記述されてるとして(引数の解釈はコンパイラによって異なるので)、
アプリ自体は

hoge.exe \"hoge.aaa\"#xxx \"hoge.bbb\"#yyy

のような感じでパラメタを渡す必要がある。
これをPowerShellから呼び出すにはパラメタをシングルクォートで囲めばよい、はず

PS C:\>.\hoge.exe '\"hoge.aaa\"#xxx' '\"hoge.bbb\"#yyy'

でいけるんじゃないかと思うけど
724722:2009/09/25(金) 01:38:18 ID:jBItlDOl
だめでした

いろいろ試したけどもダメそうなんで、 System.Diagnostics.Process 使いました。
725名無し~3.EXE:2009/09/25(金) 21:00:56 ID:67/8B2MT
>>724
結局どう書いたの?
726名無し~3.EXE:2009/09/26(土) 17:52:44 ID:dqfNvS3a
New-Object Microsoft.PowerShell.Host.ISE.ISEEditor

powershell_ise.exe なら ISEEditor クラスは作成できるけど
ウインドウを表示するための Application クラスが作成できない

New-Object System.Windows.Application

逆に powershell.exe -sta だと ISEEditor クラスが作成できない(powershell_ise.exe で読み込んでいるアセンブリは読み込んだ状態)
ISEEditor は System.Windows.Window の派生クラスだから
これができれば色々弄ったりできるんだけど

難儀だなぅ
727722:2009/09/28(月) 10:22:56 ID:Oq1bEKYP
$file = "hoge.exe"
$arguments = "`"hoge.aaa`"#xxx `"hoge.bbb`"#yyy"

$info = new-object System.Diagnostics.ProcessStartInfo
$info.filename = $file
$info.arguments = $arguments
$info.useShellExecute = $false
[System.Diagnostics.Process]::start($info).waitForExit()

こんな感じでっす
728名無し~3.EXE:2009/09/29(火) 01:13:35 ID:fNl301N5
Hey, Scripting Guy! Windows PowerShell スクリプトの処理速度を上げる方法はありますか
ttp://technet.microsoft.com/ja-jp/scriptcenter/ee532494.aspx

2.0だとforeach文よりForeach-Objectの方がかなり速い場合もあるんだなー
1.0だとforeach文の方が何割か早かった気がするんでそっち使ってたけども
しかし(Get-Item $path).GetFiles("*", "AllDirectories")の方が数倍速いのはスルーしないでおこうよw

>>727
円マークがいらなかっただけみたいね
729722:2009/09/30(水) 10:35:04 ID:VuL+3+pF
> 728

$file = "hoge.exe"
$arguments = "`"hoge.aaa`"#xxx `"hoge.bbb`"#yyy"

&$file $arguments

ではだめなので、そういうわけでもないようです。
奥が深い。
730名無し~3.EXE:2009/09/30(水) 16:12:19 ID:mq0zls9H
一番使いやすくなければならない外部コマンド呼び出しで手間取ってどうするんだよw

mkvextract tracks MOVIE_nn.mkv 1:VIDEO_nn.264 2:AUDIO_nn.aac
するときに1:の部分で手間って
結局、テンポラリをリネームして逃げたな
System.Diagnotice.Processを使う方法は思いつかなかった
731名無し~3.EXE:2009/09/30(水) 22:41:36 ID:KkMEDwGo
>>729
$arguments と書いているから
コマンド 引数1 引数2 引数3・・・ のような形になることを期待してるんだろうけど
&$file $arguments では スペースで区切られたひとつなぎの文字列を渡してるだけだよ
やるならこう
Invoke-Expression "$file $arguments"
732名無し~3.EXE:2009/09/30(水) 23:09:35 ID:KkMEDwGo
あ、ごめん#が入ってるから
$arguments = '`"hoge.aaa`"#xxx `"hoge.bbb#`"yyy'
Invoke-Expression "$file $arguments"
みたいにする必要もあった

やっぱ>>723のから\取り払って使った方が分かりやすいと思うよ
hoge.exe '"hoge.aaa"#xxx' '"hoge.bbb"#yyy'
733名無し~3.EXE:2009/10/04(日) 04:30:45 ID:K2GZNaoP
あ、すごい2.0RCではWrite-Progressとかで日本語が二重に表示される問題直ってる
734名無し~3.EXE:2009/10/04(日) 22:37:26 ID:HZK7DP5q
これは素人でも使っとけみたいなの有りますか
735名無し~3.EXE:2009/10/04(日) 23:48:47 ID:znltNW7U
とりあえず Sort-Object と Select-Object -First 1 の組み合わせだけ覚えておけばいいよ
もしくは Where-Object
736名無し~3.EXE:2009/10/07(水) 16:35:10 ID:wrsuE+Qp
>>734

・電卓代わり。 1+1とか入力してEnter押せば計算結果が表示される

・プログラムを強制終了

例)Excelを強制終了

Excelが起動しているか確認
ps -n excel

Excelのプロセスを殺す
kill -n excel

・カレントディレクトリ(フォルダ)のファイル一覧をテキストに出力
ls -n > list.txt

・環境変数一覧を表示
ls env: | sort -p name

・環境変数PATHを分解して表示
$env:path.split(";")
737名無し~3.EXE:2009/10/07(水) 19:11:29 ID:jUmNBOH+
psのせいでcmdでlsする頻度が高くなったような気がする
738名無し~3.EXE:2009/10/07(水) 21:02:20 ID:gWRPeTKP
>>737
Windows入れたら最初に入れるアプリが大抵cygwinなオレは、
lsがいつもある環境だからPowerShell組み込みの互換コマンドの必要性があまりない。

使えば便利そうなんだけど、いまいちまともに使ってないんだなぁ。
739名無し~3.EXE:2009/10/07(水) 23:37:45 ID:iirY7Lil
>>734
Core (PowerShell and WinRM) for Vista and Server 2008 に入ってるRC版↓だと、ISEから起動できるヘルプ
が日本語で、結構ありがたい。
https://connect.microsoft.com/windowsmanagement/Downloads/DownloadDetails.aspx?DownloadID=21267

初心者は、とりあえず、ファーストステップガイドから。
IronPythonとPowerShellがあれば、かなりのことができそう。
マイクロソフト以外のフリーソフトを持ち込まずに済むので、会社でも受け入れられやすいかも。
740名無し~3.EXE:2009/10/08(木) 02:54:10 ID:Fo4/6jsF
SFUのlsもなかなかいいです
741名無し~3.EXE:2009/10/08(木) 09:33:33 ID:Pd8lg6nq
>>734

#現在のディレクトリ内のもっとも古いファイルまたはディレクトリを見つける。

(dir * -r | sort lastwritetime)[0]

#1000日後の日付を求める

[datetime]::now.adddays(1000)
742名無し~3.EXE:2009/10/08(木) 15:10:41 ID:39UruW+p
>>740
vistaでつかえません
743名無し~3.EXE:2009/10/08(木) 17:38:08 ID:DGDGe7q6
SUAとかいう名前になってなかった?
744名無し~3.EXE:2009/10/08(木) 22:10:03 ID:39UruW+p
>>743
Homeで使えた?
745名無し~3.EXE:2009/10/09(金) 23:41:02 ID:Nb4W8PRd
>>739
ちょ、後から出たXP版は英語のままなのに・・・
そういえば1.0用のchmヘルプは結局各国語版でないのか
746名無し~3.EXE:2009/10/10(土) 23:39:01 ID:34rVCtFo
なるほど、Windows7とServer 2008 向けに開発してるから、
各国語用の対応は、古いOS用には提供が遅れるんだね。

RC版をインストールする時には、以前のものをアンインストールして
からインストールしないと動作がおかしくなるかもしれないので注意。

PowerShellはOSの修正プログラムとして提供されてるんで、
製品版になると、WindowsUpdateで自動更新の対象になるのかな。
747名無し~3.EXE:2009/10/11(日) 08:39:36 ID:d0e3eOkV
職場のVISTAと自宅のXPに2.0入れたが、両方とも日本語版だよ、ISEもヘルプも
ただオフィスソフトなみにメモリ食うなぁ
748名無し~3.EXE:2009/10/11(日) 13:41:20 ID:HfOuj+4p
>>747
あれ、俺の場合は英語だわ、なんか英語に設定しちゃってたかな
インストーラの差し替えがあったような感じはないんだけど
749名無し~3.EXE:2009/10/12(月) 00:50:10 ID:X3rrIMTG
タブ補完の候補を一覧表示できるようにしてみた
ttp://cid-40405a7c2ae2b5b7.skydrive.live.com/browse.aspx/TabExpansionViewer?nl=1&uc=1&isFromRichUpload=1
Ctrl+↓ Ctrl+↑ で一ページずつ飛ばして表示できるようにしたから多少は意味あるかなと

XPでしか動作確認してないけど、2.0(RC)でないと動かないのは確か。
使うときはドットソースで。
750名無し~3.EXE:2009/10/12(月) 15:27:43 ID:PqlaexLC
pdfファイルを開いて、後で閉じたいんですが、どうやればいいんでしょう?
よろしくご教示下さい。
751名無し~3.EXE:2009/10/12(月) 15:36:10 ID:H909bU9R
>>748
Microsoft Connect に登録してる?
752名無し~3.EXE:2009/10/12(月) 15:37:35 ID:bGacPUPg
>>750
Adobe Readerの話?
オーソドックスにpidを調べて、killしたら?
753名無し~3.EXE:2009/10/12(月) 15:50:34 ID:PqlaexLC
>> 752さん、

はい。adobe reader です。

Get-Process *acro* でpidを調べようと思ったのですが、
複数PDF文書を開いても、それぞれのプロセスができるわけでは
ないみたいで、思った文書だけ閉じる方法が分かりませんでした。

$a = New-Object -comobject acroexch.app
とかやれば、acrobat reader が起動できて、
そこから文書を開けば、その文書だけについて
いろいろやれるのかと思ったのですが、
うまく行かないのです。(T_T)

754名無し~3.EXE:2009/10/12(月) 16:07:20 ID:1UdaJVjv
ieかwebbrowserでpdf開けば、個別に閉じられるよ
755名無し~3.EXE:2009/10/12(月) 16:32:37 ID:PqlaexLC
>> 754 さん
なるほど、ieで開くという手がありましたか。
普段、Acrobat Reader で開くようにしていたので、気がつきませんでした。

下記のようにして、うまく行きました。

ps > $ie = New-Object -com "InternetExplorer.Application"
ps > $ie.Visible = $true
ps > $ie.Navigate2("C:\hoge.pdf")
ps > $ie.quit()

たぶん、ie 起動時のオプションとかでもっとスマートにはできると思うので、
調べてみます。

ありがとうございました。

ということで、やりたかったことは一応できるようになったのですが、
acrobat reader (かPDF文書そのもの)をオブジェクトとして生成して
コントロールすることはできないのでしょうか。

興味が残ります。
756名無し~3.EXE:2009/10/12(月) 16:45:24 ID:1UdaJVjv
FormにAcroPDF.PDFを貼り付ける
757名無し~3.EXE:2009/10/12(月) 17:09:27 ID:1UdaJVjv
>複数PDF文書を開いても、それぞれのプロセスができるわけでは
>ないみたいで、思った文書だけ閉じる方法が分かりませんでした。

acrord32.exe /n で別プロセス
758名無し~3.EXE:2009/10/12(月) 17:11:58 ID:jQ7hGR50
>>751
うん。
759名無し~3.EXE:2009/10/12(月) 17:18:28 ID:8JFXNV2I
>>753
Adobe Acrobat 9.0 TypeLibraryがCOMオブジェクトとしてシステムに公開されてるので、
これを操作したら細かく扱えるかもしれないよ?
Visual Studioで参照設定に加えたら細かく調査できると思う。
そこから改めてPowerShellに置き換えたらいいんじゃないかな。

ドキュメント化されてないようなインターフェイスはそうやるのが一番。
760名無し~3.EXE:2009/10/12(月) 17:29:54 ID:1UdaJVjv
ドキュメントはAdobeのサイトにあるだろ
761名無し~3.EXE:2009/10/12(月) 17:47:23 ID:GHYc4Kdi
>>758
じゃ、違うのダウンロードしてる
762名無し~3.EXE:2009/10/12(月) 17:54:34 ID:jQ7hGR50
>>761
ja-JP_Core_XP_x86_KB968930.exe を落としてるけど、
Connectに参加してると中身が違うバイナリになってるってこと?
ISE上でF1キー押した時に見れるヘルプ以外はちゃんと日本語化されてるけど・・・
763名無し~3.EXE:2009/10/12(月) 17:58:30 ID:PqlaexLC
750です。
みなさんありがとうございます。
いただいたアドバイスを元に試してみたいと思いますが、
まだcom とかがよくわかっていないレベルなので、少し時間がかかりそうです。
遅くなりそうなので、一旦お礼を申し上げて、しばらく勉強しようと思います。

764名無し~3.EXE:2009/10/12(月) 18:08:36 ID:GHYc4Kdi
>>762
おれのはヘルプも全て日本語だぞ

> ja-JP_Core_XP_x86_KB968930.exe を落としてるけど、
それで合ってると思う
一緒にダウソできるリリースノートに既知の問題でヘルプ表示のローカライズなんたらって書いてあった気がする
765名無し~3.EXE:2009/10/12(月) 18:29:59 ID:jQ7hGR50
>>764
あ、WINDOWSフォルダ以下を検索したら見つけた
C:\WINDOWS\Help\WindowsPowerShellHelp.chm
これが日本語化されたヘルプやね
俺の環境だとなぜかこっちのヘルプを開くようになってた
C:\WINDOWS\Help\MUI\0411\WindowsPowerShellHelp.chm

やっぱ日本語はええどすなー
766名無し~3.EXE:2009/10/12(月) 18:43:41 ID:jQ7hGR50
あーそっか、以前CTP3の時にC:\WINDOWS\Help\MUI\0409にあった英語のヘルプを
0411にフォルダ名変更してCTP3のISEから開けるようにしたせいでCTP3を
アンインストールしてもこのフォルダとヘルプが削除されなくて
今回RC版のISEは律儀にC:\WINDOWS\Help\MUI以下のヘルプを探してからC:\WINDOWS\Help内を探すから
CTP3の時の英語版のヘルプが開かれていたわけね・・・orz
767名無し~3.EXE:2009/10/12(月) 19:21:03 ID:bGacPUPg
>>754
おもしろいな。その発送はなかった
>>763
ちなみに、正攻法は
System.Diagnotice.Processを使って
さらに >>757 で個別のプロセスで起動する。 (これは知らなかった)
あとは、生成したSys(ry).ProcessのProcessIdとかそれっぽいプロパティにアクセスすればpidが取得できる
768名無し~3.EXE:2009/10/12(月) 20:02:25 ID:1UdaJVjv
正攻法は
Process.CloseMainWindow メソッド (System.Diagnostics)
だろ
769名無し~3.EXE:2009/10/13(火) 15:16:59 ID:6ej70XxX
Win7のcmd窓って刷新されたの?
いい加減他のフォント使いたいぜ
770名無し~3.EXE:2009/10/13(火) 15:25:48 ID:IWVy6if/
>>769
コマンドプロンプトのフォントって昔から変えれなくね?
771名無し~3.EXE:2009/10/13(火) 15:25:56 ID:x3oiHqlC
普通にStop-Process コマンドレットだろ
772名無し~3.EXE:2009/10/14(水) 19:45:30 ID:6OPEtqG1
複数ファイルの同時バッチ処理ってどうしてる?
一番簡単なのは dir *.hoge { .\hogera.exe $_ } だと思うけど
これだと hogera.exeがシングルスレッドの時にすごく効率が悪い
だから、複数のファイルを同時に処理したいが、その手っ取り早い方法が思いつかない

誰かいい案ないですか?
773名無し~3.EXE:2009/10/14(水) 21:57:57 ID:scW6Kmz1
hoge.exeを複数用意しとけばいんじゃない
774名無し~3.EXE:2009/10/14(水) 23:35:41 ID:Bxw4AEeu
>>772
Makefileを使えば複数の依存関係を別プロセスでやってくれる。
Makefile相当のことをやってくれるPowerShelのスクリプトも開発されている。
オレが自分で作ったものも手元にある。
775名無し~3.EXE:2009/10/15(木) 01:21:23 ID:hEDlFYVS
>>774
dir | parallel { ... }
な汎用的な関数を作ろうとしてるが、スクリプトブロックを非同期で実行する方法がわからん。
逆にそれさえできればどうにかなるんだがなぁ…
プロセスの非同期起動は割と簡単にいきそうだから、あきらめてそれを使うか…
makefile使うくらいならほかの方法を考えたい

>>773
えっ?
776名無し~3.EXE:2009/10/15(木) 01:22:50 ID:hEDlFYVS
とりあえず、途中まで張っておく
function plr
{
param([System.Management.Automation.ScriptBlock] $proc)
$items = @($input)
# なぜか最後にからの要素がつく

$procs = ${env:NUMBER_OF_PROCESSORS}
#なぜか1要素多めに格納される?
$blocks = ($items.Length-1) / $procs


for ($i = 0; $i -le $blocks; $i++)
{
for($j = 0; $j -le $procs; $j++)
{
#下を非同期に実行できれば…プロセスなら簡単なんだけど
$items[$i*$blocks + $j] | % $proc
}
#スクリプトブロックの終了確認…プロセスなら簡単なんだけど
sleep 1
}
}
777名無し~3.EXE:2009/10/15(木) 08:11:33 ID:v6xNBk8E
なんだ実行ファイルじゃなくてスクリプトブロックの同時実行か、2.0でStart-Job使うよろし
778名無し~3.EXE:2009/10/15(木) 12:38:29 ID:hEDlFYVS
>>777
なんかあっさり解決しそうでワロタw
MS Downloadを探してもPS1しか見つからないと思ったら、MS Connectってところにあった。わかりにくいぞw
それと、PS2はいつの間にかCTPからRTMに変わったのね。
これで勝つるw

System.Collection.Queryを使う予定だけど、なんかそれ用のコマンドレットも見つかりそうな気がする。
おらなんかwktkしてきたぞ。 午後の授業がめんどくせーw
779名無し~3.EXE:2009/10/15(木) 19:13:08 ID:cxoBTWoE
進化したPowerShell 2.0 − @IT
"第3回 進化したPowerShell 2.0

1.Windows Serverの新しいシェル、PowerShell"
http://www.atmarkit.co.jp/fwin2k/winsv2008r2/03powershell/03powershell_01.html
780名無し~3.EXE:2009/10/16(金) 16:42:05 ID:nVhMA+KU
「PowerShell」v2の機能を拡張するモジュールパック「PowerShell Pack」が公開
http://www.forest.impress.co.jp/docs/news/20091016_322171.html
781名無し~3.EXE:2009/10/16(金) 18:43:06 ID:dGXH8TEt
>>780
なんでインプットボックスとメッセージボックスが無いん?
782名無し~3.EXE:2009/10/16(金) 20:13:36 ID:s9/L53bU
System.Windows.MessageBoxはインスタンス生成して使うような使い方はしないし
インプットボックスに相当するものがWPFにはないからじゃない?
783名無し~3.EXE:2009/10/16(金) 22:50:36 ID:QnUb2K28
PowerShellからお手軽にインプットボックスは出来ないつーこと?
なんだかなぁ
784名無し~3.EXE:2009/10/16(金) 23:13:55 ID:f+hlszRi
$j = Start-Job -ArgumentList @({}) -ScriptBlock { Get-Member -InputObject $args[0] }
Receive-Job $j

なぜか System.Stringになる。ScriptBlockは引数として渡せないの?
785名無し~3.EXE:2009/10/16(金) 23:14:56 ID:/kJ27Ltr
[Microsoft.VisualBasic.Interaction]::InputBox()
でできるんだから別に困らんが?
786名無し~3.EXE:2009/10/16(金) 23:23:51 ID:f+hlszRi
>>785
PSからお手軽にWPFを利用しようというのがWPSなのに
インプットボックスなどのよく使うアイテムが
単純なコマンドレットとして用意されてないことが問題。

それをいったら、WPSがなくってもPSからWPFだってFormsだって呼び出せるから
WPSなくても困らない。
787名無し~3.EXE:2009/10/16(金) 23:24:36 ID:QnUb2K28
いちいちVBをロードするのが、、、只でさえ重いのに
788名無し~3.EXE:2009/10/17(土) 13:41:21 ID:SClV3K/m
Start-Job に渡すスクリプトブロックの中にスクリプトブロックを渡せないかな?

$present = {...} # 渡したいスクリプトブロック
$jobScript = { & $present } # これを処理したい
$closure = $jobScript.GetNewClosure() # よくわからないけど、それっぽいもの
Start-Job { & $present } # -> 親の変数を継承しないらしく、$presentが見つからないとどやされる
Start-Job $jobScript # -> 上に同じ
Start-Job $closure # -> 上に同じ

Start-Job -ArgumentList @($present) { & $args[0] }
# $presentを勝手に実行してるらしく、$args[0]に実行結果が入ってる。

Start-Job -InputObjecct $present { & $input }
# スクリプト ブロックは、入力を使用せずに評価できません。
# というエラーが出る。 (つまりどういう事なんだ?)

$present | Start-Job -InputObject { & $input }
# $present.ToString()の結果が$inputに入ってる。文字列に強制的にキャストされたのかも。


789名無し~3.EXE:2009/10/17(土) 13:54:37 ID:wQk6zvp0
一応は、これで出来るよ

$a = new-object -comobject
MSScriptControl.ScriptControl
$a.language = "vbscript"
$a.addcode("function getInput() getInput = inputbox(`"Message box prompt`",`"Message BoxTitle`") end function" )
$b = $a.eval("getInput")
790名無し~3.EXE:2009/10/17(土) 14:29:35 ID:qSNPWIQh
>>783
PowerShellはコマンドプロンプト、バッチファイルの置き換えを
目的に開発されてるんだから、GUIなんて無くて当たり前。
そういうのは普通に.NETでアプリを書けということ。
791名無し~3.EXE:2009/10/17(土) 17:12:38 ID:XH6nuHAW
VBSのがつおいな
792名無し~3.EXE:2009/10/17(土) 17:32:36 ID:NdVwso//
VBS終わったな
793名無し~3.EXE:2009/10/17(土) 18:17:05 ID:zd/LbUBp
実測せずにMicrosoft.VisualBasic.dll読み込むから遅いといっても全く説得力がない
手段が目的じゃないならRead-Host使えばいい
794名無し~3.EXE:2009/10/17(土) 18:49:36 ID:XH6nuHAW
>>793
Read-Host いいねぇ
メッセージボックスは何か方法ある?
795名無し~3.EXE:2009/10/18(日) 03:03:26 ID:PBElBUFc
>>794
-Confirmパラメータを持つコマンドレットはそれを指定すれば実行のはい/いいえの選択はできる
ひとつひとつにつけるのが面倒なら$ConfirmPreferenceの値をLowかMidiumに設定する(詳しくはabout_Preference_Variables)
PowerShell 2.0なら任意の関数でも$PSCmdlet.ShoulProcess()で同じことができるようになった(about_Functions_Advanced)
文字列を表示したいだけなら文字列を引用符で囲むだけ(文字と背景の色を変えたいならWrite-Host)
796名無し~3.EXE:2009/10/18(日) 19:50:28 ID:+aLTgQP8
>>795
色々有難う
797名無し~3.EXE:2009/10/18(日) 23:03:06 ID:uR05MAqd
XP向け2.0ってもう直ぐ出る?
798名無し~3.EXE:2009/10/19(月) 00:08:24 ID:JmSi/3sj
>>797
昨今のMSの態度を考えれば、XP向けが出る可能性はほとんど無いような気が……。
799名無し~3.EXE:2009/10/19(月) 01:27:34 ID:ECdlHKhP
正式版はまだでも、RTMでてるから
個人ならそれ使えばいいんでないの?

正式版が出ても、全てのXPにインストールされるとは限らないし…
(未だにIE7以前が駆逐されてないように)
800名無し~3.EXE:2009/10/19(月) 02:24:43 ID:BMJERfwp
実際にリリース候補出してて、Win7版完成したので数ヵ月後にリリースしますって言ってる現状で
なぜ可能性はほとんどないになるのかさっぱりだ
801名無し~3.EXE:2009/10/19(月) 07:29:27 ID:1fH/cN7B
>>800
君が何を言ってるかさっぱりだ。

XP版の話をしているのに7版がありますって言われても。
802名無し~3.EXE:2009/10/19(月) 07:30:53 ID:2/+ELDmh
XP版は出るだろ。他より遅れて。
803名無し~3.EXE:2009/10/19(月) 22:37:27 ID:HM7/E+qR
>>801
君が何を言っているかさっぱりだ。
XP版の話をしているのにWin7版の話をしていると思うなんて。
804名無し~3.EXE:2009/10/20(火) 00:22:46 ID:G5x1GqIK
>>803
それは君の文章がへたくそだからだと思うよ。
805名無し~3.EXE:2009/10/20(火) 07:29:49 ID:+8OMyXbd
http://www.infoq.com/jp/news/2009/10/System-IO
ディレクトリ列挙の性能改善はPowerShellにも恩恵あるのかなぁ。
806名無し~3.EXE:2009/10/20(火) 09:20:40 ID:lhcp1Yvs
>>805

むしろ、MMFに期待上げ。
807名無し~3.EXE:2009/10/20(火) 14:09:19 ID:VF4rkBXE
>>804
それは君の頭がへたくそだからだと思うよ。
808797:2009/10/21(水) 03:43:11 ID:xg49Ddsj
XP向けが出るという話は知ってます。
RC版が公開されてるのも知ってます。
RTMが公開されるのは知らないです。(URL教えてください!)
win7に合わせてリリース?なのかどうかは知らないけど
22日にパーティー云々とblogにありました。
809名無し~3.EXE:2009/10/22(木) 23:21:08 ID:tX1TYX8Q
ついでにそのコメント欄読んでみ
810797:2009/10/23(金) 16:02:10 ID:hBnB5ont
今日の時点で一、二週間以内に
xp,vista,2k3用のが出るらしいです。
811名無し~3.EXE:2009/10/25(日) 15:47:50 ID:/xglSqTE
-join演算子と-split演算子がいい。鼻血でそう。
812名無し~3.EXE:2009/10/25(日) 19:13:46 ID:8LMiEMbr
Win7発売されたのに一向に盛り上がらないねここ
813名無し~3.EXE:2009/10/25(日) 19:21:04 ID:y+ME4mPZ
これさぁ、ダブルクリックで実行したり、エクセルとか他のプログラムから呼んで実行したりとかは、できねーの??
814名無し~3.EXE:2009/10/25(日) 19:24:34 ID:Ngyq3B71
>ダブルクリックで実行したり
セキュリティの関係上、「わざと」初期設定では出来ないようにしています。
815名無し~3.EXE:2009/10/25(日) 19:26:58 ID:y+ME4mPZ
初期設定変更すると出来る裏技があるの??
816名無し~3.EXE:2009/10/25(日) 19:31:13 ID:Ngyq3B71
817名無し~3.EXE:2009/10/25(日) 19:32:50 ID:L6mHZuCn
>>813
どっちもできるよ。
System.Diagnotice.CodeDomとかからは扱えないけど
System.Management.Automationとかそれっぽい奴を使えばできるはず。つうか、ググレカス
Excelで直接.netできるようになったのか知らんけど、
簡単なことなら標準入出力で通信すればいいんじゃね?

そう言えば、いつの間にか*.psc1に関連づけされてるけど、これって何?署名済みスクリプトファイル?
818名無し~3.EXE:2009/10/25(日) 19:35:42 ID:L6mHZuCn
>>815
ヘルプ嫁に聞け

Get-Help about_signing
Get-Help about_scripts
Get-Help about_execution_policies
819名無し~3.EXE:2009/10/25(日) 19:39:20 ID:Ngyq3B71
デフォルトでのセキュリティの確保

PowerShellのファイルの関連付け

PowerShellでは、 .ps1拡張子を持つファイルがデフォルトでnotepad.exeに関連付けられます。
これは、攻撃者がどうにかしてスクリプトをコンピュータに持ち込み、ユーザーがこのスクリプトを
うっかりダブルクリックした場合、スクリプトが実行されるのではなくメモ帳で開かれることを意味します。

デフォルトでのスクリプト実行の禁止

PowerShellは、デフォルトではスクリプトを実行しないようにインストールされます。
その場合は、対話型のコマンドラインインタープリタとしての使用に限られます。
スクリプトを実行するには、PowerShellの実行ポリシーを変更して、スクリプトの実行を
明示的に許可しなければなりません。
820名無し~3.EXE:2009/10/25(日) 19:41:55 ID:y+ME4mPZ
ありがと
821名無し~3.EXE:2009/10/25(日) 19:47:35 ID:y+ME4mPZ
あああ、出来ない…
ISEから実行できるが、ショートカット作ると想定した動作しない、なんで?



test.ps1-------------
$age = read-host "Please enter your age:"
$a = new-object -comobject wscript.shell
$b = $a.popup($age,0,"Test Message Box",1)
822名無し~3.EXE:2009/10/25(日) 19:47:37 ID:YPShERBR
ユーザーが安易にダブルクリックをして意図せず実行してしまうことがないようにしよう、というのは理解できるんだけど
cmd.exeや「ファイルを指定して実行」する場合は自分でps1スクリプトパスを入力するんだから、意図せず実行する余地はないわけで
これらに対する関連付けもデフォルトで無効になってるのはやりすぎだと思うんだよなー
根本はPowerShellじゃなくて前者と後者の関連付け設定が一緒くたになってるWindowsの問題なんだろうだけど
もし別々に設定できるならその辺までしっかりやっといて欲しかったな

関係ないけど2.0からは右クリックのコンテキストメニューにPowerShellスクリプトの実行が加わってるよ
823821:2009/10/25(日) 20:57:10 ID:y+ME4mPZ
>>821 はショートカットで出来る方法ありませんか?
824名無し~3.EXE:2009/10/25(日) 21:05:05 ID:JLebtpQf
ISEに直接書き込むんじゃなくて
test.ps1に保存したものをISEで開いて実行するのは出来てますか?
825名無し~3.EXE:2009/10/25(日) 21:06:34 ID:y+ME4mPZ
>>824
できてます
826名無し~3.EXE:2009/10/25(日) 21:14:46 ID:JLebtpQf
なんだろう。
デスクトップにtest.ps1を作って
右ドラッグでショートカット作成。
ショートカットのプロパティを開いて
リンク先
C:\Users\●●●●\Desktop\test.ps1
の左側に
powershell
と入力し、
powershell C:\Users\●●●●\Desktop\test.ps1
にする。
OKで閉じる。
そうするとショートカットのアイコンが変わる。
ダブルクリックすると入力プロンプトが出てくる。
827名無し~3.EXE:2009/10/25(日) 21:20:16 ID:y+ME4mPZ
>>826
恐縮です、>>821 はISEから実行するつと、Please enter your age を表示させれます
"Test Message Box" に値を返せます

ショートカットからだと、プロンプトが出るのみで、何も起こりません
828名無し~3.EXE:2009/10/25(日) 21:24:40 ID:L6mHZuCn
>>822
間違って実行しないようにするんなら、テキストファイルのアイコンじゃなくて、PowerShellのアイコンにすれば気がつくし
その理論なら、実行ファイル(*.exe)はdebugとかリソースエディタに関連づけするべきだし今までのバッチファイルもテキストエディタで開くように修正パッチを配るべき。

結局、バッチファイルがpowershellの実行ポリシーを書き換えて、
スクリプトを生成して、実行するなり、標準入力へ流し込めば、現在の設定関係なしに実行できてしまうんだから実行ポリシーって意味ないよね。

逆に、直接信用ならないところから落としてきた実行ファイルが、
NTFSのフラグをみて、実行時にダイアログ出すように
powershellのスクリプトファイルでもそうした方がシンプルだと思うんだよな。

テキストのスクリプトファイルに証明書を添付するのはおもしろいと思うけど、
数回しか使わないようなスクリプトを書いた場合、直接実行できないというのは不便きわまりない。
個人でCAを設定して立ち上げるのはめんどくさいし、他の環境に持って行ったら再利用できない。

829名無し~3.EXE:2009/10/25(日) 21:31:39 ID:JLebtpQf
うちだと
ショートカットダブルクリックで
Please enter your age::
が出てくる。

>プロンプトが出るのみで、何も起こりません
プロンプトが出っぱなし?
プロンプトが一瞬出て消える?
830名無し~3.EXE:2009/10/25(日) 21:35:07 ID:JLebtpQf
もしかしてパスに空白を含んでいる?

ttp://www.barukichi.com/blogs/index.php?itemid=1372
831名無し~3.EXE:2009/10/25(日) 21:38:39 ID:JLebtpQf
PowerShell "C:\xxxxxxxxxxxxxxxxx\test.ps1"
ぱすに空白を含んでいる場合、
PowerShell -File "C:\xxxxxxxxxxxxxxxxx\test.ps1"
とやったらうまくいった。
832名無し~3.EXE:2009/10/25(日) 21:39:00 ID:y+ME4mPZ
>>829
> うちだと
> ショートカットダブルクリックで
> Please enter your age::
> が出てくる。

検証アリガト

-noexit 入れてたのでプロンプト出っぱなし、-noexit 消したらドス窓みたいの出てすぐプロンプトも確認出来ないで消える
833名無し~3.EXE:2009/10/25(日) 21:42:52 ID:y+ME4mPZ
>>831
おおお、thnx

空白含んでたので、ダブルクオートで囲ったがエラーだったので、シングルクオートで囲った
-File 付けたらエラーで、さらにダブルクオートに戻したら、、デケターーー!!

皆さま有難うございました<m(__)m>
834名無し~3.EXE:2009/10/25(日) 22:02:05 ID:YPShERBR
>>828
やーさすがに一段目後半の内容はPowerShellでどうにかする問題ではないと思うよ?
実行ポリシーについては、バッチファイルから実行ポリシーの書き換えのような操作ができる、
つまり管理者権限を握っている時点でセキュリティもへったくれもないよねってのがMSの見解
ちなみにネットから落としてきたものかどうかの確認はPowerShellもZone.Identifierを使って行ってる
署名を手軽に管理・編集するコマンドは欲しいねー、署名とかろくにしたことねーやw
835名無し~3.EXE:2009/10/26(月) 00:31:31 ID:JiiFfotF
Scripting.FileSystemObjectを事実上使い物にならなくされたWSHの二の舞を避けるために
何でこっちが気を回さなければならんのだ
836名無し~3.EXE:2009/10/28(水) 02:29:26 ID:EV1jWNMO
Windows XP 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=60cb5b6c-6532-45e0-ab0f-a94ae9ababf5&DisplayLang=ja

Windows Server 2003 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=f002462b-c8f2-417a-92a3-287f5f81407e&DisplayLang=ja

Windows Server 2003 x64 Edition 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=909bbcf1-bd78-4e03-8c83-69434717e551&DisplayLang=ja

Windows Vista 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=f2fa1227-9a34-4e29-aa03-62f5c00e16f2&DisplayLang=ja

Windows Vista for x64-based Systems 用の更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=0f73efa2-f8d6-45f3-a8f8-5cdc205b119a&DisplayLang=ja

Windows Server 2008 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=863e7d01-fb1b-4d3e-b07d-766a0a2def0b&DisplayLang=ja

Windows Server 2008 x64 Edition 用更新プログラム (KB968930)
http://www.microsoft.com/downloads/details.aspx?FamilyID=d37e25cf-db05-4b23-a852-cdf865d81b82&DisplayLang=ja

Windows 管理フレームワーク コア パッケージは、IT プロフェッショナル向けに更新された管理機能を提供します。
このパッケージには、Windows PowerShell 2.0 および Windows Remote Management (WinRM) 2.0 が含まれています。
インストール後には、コンピュータの再起動が必要になる場合があります。
837名無し~3.EXE:2009/10/28(水) 03:28:44 ID:Kkou7Owb
thx
早速、ダウンロード中
838名無し~3.EXE:2009/10/28(水) 03:41:51 ID:Kkou7Owb
適用されませんになってインスコできねぇ。
839名無し~3.EXE:2009/10/28(水) 04:11:36 ID:iRUOSLis
外部プログラムから標準出力の文字列を受け取る定石的な方法ってある?

何も考えずに
$str = hoge.exe
したらStringの行ごとの配列が代入されて使い物にならない
$str = hoge.exe | Out-String
したら、2回開業されて空行だらけになるし…

そのままString型として取得できないかなぁ
840名無し~3.EXE:2009/10/28(水) 09:13:36 ID:BoDfFSXm
>>839

$str = [string]::join("`n", (hoge.exe))

ではダメか?
841838:2009/10/28(水) 11:09:08 ID:rKNC0ZAH
環境書いてなかたorz

vista ult x64 sp2
phenom 9550
ram 8GB
842名無し~3.EXE:2009/10/28(水) 11:50:36 ID:XAjJ/yfL
質問です。宜しくお願いします。
環境変数TEMPをPowerShell側(CUI)で変更しましたが、システムプロパティ側(GUI)で確認すると反映されません。
設定直後も、OS再起動後も反映されません。PowerGUIで設定しても状況は同じでした。
実際OS側でアクセスしてるのも、システムプロパティ側で設定してるフォルダの様です。ファイルの更新日時が
変更されてます。対して、PowerShell側で設定したフォルダには何も入ってない状態です。(設定して約6時間経過後確認)

1.PowerShell側はg:\temp(途中色々試してますが最終的な値)。システムプロパティ側はd:\tempのまま全く変わらない。
尚d:\tempは、システムプロパティ側(GUI)で過去に設定した値です。
http://img.wazamono.jp/pc/src/1256693863552.jpg
2.PowerGUI側ではg:\temp。システムプロパティ側ではd:\temp。PowerGUIでもシステムプロパティの値が変更されない。
http://img.wazamono.jp/pc/src/1256696415458.jpg

OSはVISTA sp2です。PowerShell2.0(1.0を削除して2.0入れたつもりなんだけど・・・2.0で動いてるのか不明)
OS再インストール後の設定を、CUIで短時間に済ませたいと思い3日前からPowerShellを弄ってます。
843名無し~3.EXE:2009/10/28(水) 12:01:48 ID:eH6loy5R
>>842
システムプロパティの値はレジストリに入ってる値を変更しないとダメだよ
レジストリのどのキーに格納されてるか とか
powershellでどうすればいいか はぐぐれ
844842:2009/10/28(水) 12:10:54 ID:XAjJ/yfL
>>843
そういう手順が抜けてたのですね・・・まだまだ精進が足りないようです。
お昼食べたら調べてみます。ありがとうございます。
845名無し~3.EXE:2009/10/28(水) 12:52:32 ID:/iHCsPOk
>>838
プレリリース ビルドから最終リリースへのアップグレードはサポートされていません。
Windows Management Framework、Windows PowerShell、または WinRM のプレリリース (CTP、ベータ リリース、
またはリリース候補 (RC)) バージョンからこの最終リリースへのアップグレードはサポートされていません。
プレリリース バージョンをアンインストールしてから、このパッケージをインストールする必要があります。

これじゃないか?
846名無し~3.EXE:2009/10/28(水) 13:08:34 ID:BMvqbwRb
>>842
自プロセスの環境変数を設定しても、
システムや親プロセスには適用されない。

>>843
レジストリを直接設定するよりも、
シェルオブジェクト経由か何かの
ほうがいいのでは。
そういうの、なかったっけ?
847名無し~3.EXE:2009/10/28(水) 16:16:27 ID:eH6loy5R
>>846
なるほど。たしかにあった

[Environment]::SetEnvironmentVariable("temp", "C:\foo", [EnvironmentVariableTarget]::Machine)
みたいな感じでできる
848名無し~3.EXE:2009/10/28(水) 23:15:22 ID:jv28Do10
RCの頃よりバージョン番号下がってる不思議@XP
849名無し~3.EXE:2009/10/29(木) 00:48:18 ID:dH8Wu+F1
PowerGUIむちゃくちゃ使いやすいな。
それに比べてWin7についてくるエディタしょぼい
850名無し~3.EXE:2009/10/31(土) 00:05:27 ID:TaYUoYR3
ISEはフォントがどうにもな
変更できるにはできるけどGUIのダイアログとかもないし
851名無し~3.EXE:2009/11/07(土) 13:36:31 ID:6B+s1q72
PowerShellのコンソールの文字がXPでビリビリ振動してるんだが
Vistaや7でもそうなの?何か気持ち悪い
852名無し~3.EXE:2009/11/07(土) 16:13:02 ID:T6A9IvdR
それは使ってるモニターが寿命なんじゃなかろうか
853名無し~3.EXE:2009/11/07(土) 17:03:35 ID:HBx9tGlv
和んだw
854名無し~3.EXE:2009/11/07(土) 22:39:26 ID:zi4Kzarf
ISEのキャレットのデスクトップ上の座標を取得することってできるんかな
Add-TypeでGetCaretPos関数読み込んで使ってみたけど毎回 0,0
855名無し~3.EXE:2009/11/09(月) 08:02:38 ID:baHOcSEm
2.0がWindows7に標準搭載されてるのになんで公開されないんだ
856名無し~3.EXE:2009/11/09(月) 12:35:33 ID:ucUSzleV
857名無し~3.EXE:2009/11/11(水) 16:15:05 ID:rFbHStmH
 
858名無し~3.EXE:2009/11/13(金) 23:56:33 ID:p5Qsuag8
ISE抜きにしてもPowerShellは随分デバッグ機能に力入れてるな
いやいいことだけども
859名無し~3.EXE:2009/11/14(土) 00:31:16 ID:sPjLZvkz
クラスの継承はできないのけ?
860名無し~3.EXE:2009/11/14(土) 00:51:48 ID:UGrNvRAo
そりゃまあクラス定義自体できないし
Add-MemberやNew-Module使えば似たようなことはできるけど
861名無し~3.EXE:2009/11/14(土) 03:23:20 ID:bbyGNcY3
>>860
VBA思い出した。アレは最悪な環境だったな
862名無し~3.EXE:2009/11/14(土) 10:15:27 ID:4AciAAP1
クラスのようなものを作るだけなら、適当なグローバル変数、例えば、$global:__class__を連想配列として、<クラス名>をkeyとして、
<クラス定義>をvalueとして登録すればいい。

面倒なのはクラスの継承か……[scriptblock]同士を足すことができないようだ。
863名無し~3.EXE:2009/11/14(土) 22:56:23 ID:mKNB0AW2
New-Module と Import-Module を使うと

$module1 = New-Module -ScriptBlock { function hoge {"hogehoge"}; }
$piyo = New-Module -AsCustomObject -ScriptBlock { Import-Module $module1; function fuga {"fugafuga"}; }

PS > $piyo.hoge()
hogehoge
PS > $piyo.fuga()
fugafuga

とかまあそんな感じ
864名無し~3.EXE:2009/11/14(土) 23:10:31 ID:mKNB0AW2
クラスの継承って言葉が出てくるならAdd-TypeでC#なりなんなりのコード読み込ませる方が馴染むとは思うよ
865名無し~3.EXE:2009/11/15(日) 04:47:04 ID:G18L0Zh7
>>864
PSでC#のソースを生成してAdd-Typeする関数を定義するのですね。わかりますん。
866名無し~3.EXE:2009/11/15(日) 18:09:12 ID:WGtg4L4w
>>865
生成するというか、派生クラスの定義は自分で書くんじゃない?
(C#とかみたいな)クラスの継承がしたいけどやり方がわからない(というかできない)ということかと思ったから
だったらAdd-Type使えばクラスの定義だけ自分が(.NETの)クラスの継承の仕方わかってる言語で書けるから
その方が手っ取り早いと思うよ、ということだったんだけども
867名無し~3.EXE:2009/11/15(日) 19:32:27 ID:k1YEGMGv
リフレクションで無理やりクラス作ってるサイトがあった気がする
868名無し~3.EXE:2009/11/18(水) 13:20:21 ID:NP3L9uA6
XP版だが、

 start-job { dir }

みたいなことをやると、ジョブが終了しないようだ。しかも、このジョブから結果を受け取れない。

ジョブの外側のものを読み書きできないのか?と思いきや、start-job { ps }は問題なく機能する。

どうなっているんだろう?
869名無し~3.EXE:2009/11/18(水) 16:54:15 ID:A+m5SF63
>>868
Start-Job {dir} に関しては値受け取れるよ
# 当方の環境は2003ですが…
たぶん、処理が完了する前にReceive-Jobしてるとか
そのまま入力待ちになってるとかじゃないかな?
Start-Job {dir} | Receive-Job じゃなくて
Start-Job {dir} | Wait-Job | Receive-Job してみたら?
870名無し~3.EXE:2009/11/18(水) 16:59:02 ID:A+m5SF63
>ジョブの外側のものを読み書きできないのか?
それに関しては、「できない」
&{
$a = "hoge"
$j = Start-Job { echo $a ; $a = "moge"; echo $a }
Wait-Job $j
Receive-Job $j
echo $a
}
してみて
まあ、別のスレッドで処理してるわけだから、メモリを保護するために当然の機構ではあると思うんだけど…
871名無し~3.EXE:2009/11/18(水) 17:03:27 ID:A+m5SF63
>>788で報告したことの繰り返しになるけど
ジョブに何か渡したいならArgumentListで渡せば良いんだけど
スクリプトブロックに関してはなぜか渡せないんだよ。
InputObject(pipe)に渡す方法もあるけど、こいつもスクリプトブロックは渡せない

XMLか何かにシリアル化してわたすかな…
872名無し~3.EXE:2009/11/18(水) 19:28:34 ID:NP3L9uA6
>>869

start-job { ps } のほうは処理が終了していなくても、途中結果を受け取れる。

途中結果を受け取れるものとそうでないものがあるんだろうか?

排他機構がないので、安全策が取られているのか?

このあたりが不透明で困る。
873名無し~3.EXE:2009/11/19(木) 02:06:36 ID:JK/Ey3mm
バックグラウンドジョブはスレッドじゃなくてプロセス起こして実行してるよ(フルサイズのリソース消費するわけじゃないけど)
プロセス間の値の受け渡しもCLIXML形式でやってるけど、
CLIXMLをデシリアライズする時スクリプトブロックは文字列になっちゃうみたいだね
ひとまず文字列で渡して[scriptblock]::create(文字列)とかInvoke-Command "{" + 文字列 + "}"
とかで対処して暇なときにConnectにでも投げればいいんじゃないかと

>>872
ジョブが終了しないんじゃなくて、単に時間が掛かってるんじゃない?
Start-Job {ls} だと [Environment]::CurrentDirectory が返すフォルダを見に行くから
そこにファイルが大量にあったりすると結構時間掛かる
874名無し~3.EXE:2009/11/19(木) 09:22:13 ID:psUdTuDF
>>873

単に時間がかかっているのではないようだ。ディレクトリが空でも終わらない。
875名無し~3.EXE:2009/11/20(金) 09:29:09 ID:8usq8iag
Windows7を使っていますが、PowerShellのバージョンがなぜか1.0です。
2.0にすることはできるのでしょうか?
876名無し~3.EXE:2009/11/20(金) 17:53:01 ID:DhrisQca
>>875
入ってるバージョンは2.0だよ。
ディレクトリが1.0なだけ
877名無し~3.EXE:2009/11/20(金) 19:06:46 ID:yyEO3W88
$psversiontable
878名無し~3.EXE:2009/11/21(土) 01:34:16 ID:inSjA6KL
CTPの時まであった1.0の時とどこが変わったかについて公式のドキュメントないんだろか
879名無し~3.EXE:2009/11/21(土) 08:34:05 ID:J2wq7ngk
>>878
あるよ
880名無し~3.EXE:2009/11/21(土) 15:00:23 ID:M4nKvVus
>>879
ドコー?
881名無し~3.EXE:2009/11/23(月) 04:40:20 ID:QuOfb5az
折角Ver2でパーサー追加されたんだしちょっとpowershell.exeの方で構文を
色付けするスクリプト作ろうって連休つぶして頑張ってたけど
一年以上前から存在してたっていう・・・orz

Realtime Syntax Highlighting in your PowerShell Console
ttp://www.leeholmes.com/blog/RealtimeSyntaxHighlightingInYourPowerShellConsole.aspx

これCTP1の頃のスクリプトだけど、ちゃんとRTM版でもそのまま動くからすごいな
とりあえず今まで何に使うものかよく分かんなかったRunspaceの使い方知れたからいっか・・・
882名無し~3.EXE:2009/11/23(月) 12:59:30 ID:XSHLRIv9
ちゃんと矢印キーで履歴が見れるようになって欲しい。
Add-History駄目過ぎて泣ける。
883名無し~3.EXE:2009/11/23(月) 15:46:32 ID:JlIRbOTL
よく分からんけどF7キーの機能を↑↓でしたいの?
884名無し~3.EXE:2009/11/23(月) 15:48:04 ID:BXRHy1wk
zshなんかみたいにプロファイルごとにコマンドの履歴とりたいんだけどなぁ
できないよね?
885名無し~3.EXE:2009/11/23(月) 16:46:46 ID:JlIRbOTL
zshのプロファイルってのがよく分からんけども、今の履歴を保存して次回起動時に読み込みたいなら
Get-History | Export-Csv ファイル名 とした後に Import-Csv ファイル名 | Add-History
もしくは
Get-History | Export-Clixml ファイル名 とした後に Import-Clixml ファイル名 | Add-History
886882:2009/11/24(火) 09:37:32 ID:Ace3emad
>>883
>>885

まさにそれが上下キーでは(確かめたけどF7キーも)駄目だった。

ここに書いてあるやり方でbyeで抜けてその時にcsvに貯めて
再び開いた時にcsvを読み込む。
http://blogs.msdn.com/powershell/archive/2006/07/01/perserving-command-history-across-sessions.aspx

確かに、Get-Historyではちゃんと読み込まれているのは分かるけど、
上下の矢印キーやF7では、履歴として出てこないんだよね。
bashみたいに使いたいんだぁあああ〜。
887名無し~3.EXE:2009/11/24(火) 23:43:00 ID:IuDxMe1R
>>886
あ〜なるほどそういう意味か
↑↓とF7キーで辿れる履歴は doskey /exename=powershell.exe /history になってるぽいね
とりあえずは #[TAB] とか #パターン文字列[TAB] とか #履歴Id番号[TAB] で対処するしかなさそうだね(Ver2.0)
888名無し~3.EXE:2009/11/25(水) 00:10:53 ID:4Gr/tVlI
Vista 以降だと GetConsoleHistoryInfo と SetConsoleHistoryInfo っていう API があるみたいだから
これを Add-Type 経由で使えばなんとかなりそうだけど、あいにく XP だわ
まー探せば似たような非公開の API はあるんだろうけど
889名無し~3.EXE:2009/11/25(水) 00:29:57 ID:HSCfC10/
PowerShell全体的にはいいんだが、もう少しな感じがする。
手軽さがちょっと足りないような。

エスケープ文字とかは¥でよかったんじゃないかなぁ。
まぁもう治せないだろうけど。

従来のコマンドよりは進化してるから十分ではあるが。
やや堅ぐるしい印象ではある。
890名無し~3.EXE:2009/11/25(水) 05:32:46 ID:O1UJcC9N
\はパス区切りで使われちゃってる。
パスが \ 区切りであることを前提とするアプリケーションがたくさんあるため
いまさら / のみに変えることは出来なかった。

891名無し~3.EXE:2009/11/25(水) 07:04:13 ID:tr+Xw5lc
>>889
手軽さが足りないのは同意だな。

あと、ファイル名に[]が含まれる場合
$f = dir
dir $f
とすると、そのファイルが取り除かれる。これらのファイルを処理したければ
$f | dir
すれば良いんだが、これに気がつくまで半年もかかったぞ
892名無し~3.EXE:2009/11/25(水) 09:09:42 ID:PNNpyvV7
>>889

パスを扱うことが多いので、「D:\hoge\fuga」を「D:\\hoge\\fuga」と書かなければいけないのは不合理になるだろう。

>>891

「[」と「]」は何かと悩ましい。

それらが名前に含まれるディレクトリの中でのファイルの処理には手間がかかる。例えば、

md '[test]'
cd '.\`[test`]'
echo $null > test.txt
move # ←ここでタブキーを押してもファイル名が補完されない。
893名無し~3.EXE:2009/11/25(水) 12:51:19 ID:kWNBMByT
とりあえずインストールしたよ。
tcshから乗り換える意味があるかな?( ・ω・)y─┛〜〜
894名無し~3.EXE:2009/11/25(水) 13:07:19 ID:m1or1wcA
>>893
そもそもWindowsでtcsh使うこと自体がかなりの変人。
メインストリームへようこそ。
895名無し~3.EXE:2009/11/25(水) 14:32:28 ID:kWNBMByT
ところでPowerShellのcmdletは自分で追加できるのかな。
自分で作った実行形式じゃないプログラムを、プラグインみたいにして使いたいんだけど。
896名無し~3.EXE:2009/11/25(水) 15:13:52 ID:PNNpyvV7
>>895

雛型としてはこんな感じ

cmdlet <コマンドレット名>{
 param(
  [Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true)]
  [<型>]<仮引数>
 )
 begin{}
 process{<ここに処理内容を記述する>}
 end{}
}

(表示上の都合で、タブの代わりに全角スペースを使った。)
897名無し~3.EXE:2009/11/25(水) 16:37:48 ID:kWNBMByT
おお、凄い。早速、過去の資産を移植しますわ。
898名無し~3.EXE:2009/11/25(水) 20:34:47 ID:tr+Xw5lc
>>896
そういうこともできるようになったのか!2.0スゲー
…functionと何がちがうん?

PS対応のCLIアプリケーションをリリースする場合どうなるんだ?
899名無し~3.EXE:2009/11/25(水) 21:27:28 ID:PNNpyvV7
>>898

cmdlet <コマンドレット名> -supportsshoudprocess

などとやると、-whatifや-confirmなどが使えるようになったりとか、他にもいろいろあるはず。
900名無し~3.EXE:2009/11/25(水) 21:28:19 ID:PNNpyvV7
綴りを間違えた。

-supportsshouldprocess
だ。
901名無し~3.EXE:2009/11/25(水) 23:30:45 ID:3TxFte2j
>>899
2.0 CTP2 までは cmdlet 使ってたけど、今は function のはずだよ・・・?
902名無し~3.EXE:2009/11/25(水) 23:36:34 ID:HSCfC10/
もう少しbashとかcsh風が良かったんだよな。
まぁWindows系で柔軟性のあるshellがいままで無かったから基本、歓迎ではあるんだけど。
取っ付き安い憎いは、よく使ってる環境に依存するからそのうちなれるのかもしれん。
903名無し~3.EXE:2009/11/26(木) 12:00:15 ID:EeNekyVZ
シェルスクリプトってどれも珍妙な構文ばっかりだからな
PSよりbashのがより合理的なようには見えない
904名無し~3.EXE:2009/11/26(木) 12:26:39 ID:2zpvfb/t
>>901

うむ、アップデートして確認したら確かにそうなっていた。
905名無し~3.EXE:2009/11/26(木) 21:27:48 ID:uECV71Rg
間違ってもUNIXライクに使えるようにした何かではないからねぇ・・・
あくまでWindows上のリソースを手軽に扱うことに最適化したシェル/スクリプト環境だから
それにしたって履歴の仕様はお粗末だけど
906名無し~3.EXE:2009/11/27(金) 01:33:17 ID:ZKRIFMJ1
あとあれだな、変数の自動昇格しちゃうのが解りずらいかも(int->double)
まぁUnixのシェルよりはずいぶんと言語に近いものなんだけど。

コマンド体系ってIBMのオフコンとかメインフレームのノリに近い感じなんだけどね
907名無し~3.EXE:2009/11/27(金) 01:37:19 ID:n8lR1V0X
cmd, vbs, psと厳格度が上がるのはいいけど
お手軽度がどんどん下がって使いづらい…
908名無し~3.EXE:2009/11/28(土) 00:20:05 ID:IfHIYMJX
>>907

そうか?

cmdは手軽だった。

vbsはファイルシステムもいったんオブジェクトを作ってアクセスする必要があった。あまり手軽な感じはしなかった。

psがちょうどその間くらいで、そこそこ使いやすいと思うが……
909名無し~3.EXE:2009/11/28(土) 00:36:12 ID:K72Taeo5
俺達が若い頃は、csh使って1行でドンだけ複雑な処理ができるかって競い合ったもんじゃわ( ・ω・)y─┛〜〜
910名無し~3.EXE:2009/11/28(土) 11:52:44 ID:QYj4568x
手軽さが足りない原因はsed,grep,awkとか
シンプルだけど強力なコマンドがないからじゃね。
まぁ自分で作れってのはあるのかもしれんが、標準でそういうのがないからちょっと遠回りになるんだよな
911名無し~3.EXE:2009/11/28(土) 12:55:07 ID:H1IGT0Sy
PowerShell(の標準環境)にUNIX的な手軽さを求めるのは間違いだって
Windows自体がテキストで全てを扱うような構造でも文化でもないんだから
912名無し~3.EXE:2009/11/28(土) 13:13:47 ID:+iw3U5in
dir | sort -descending

UNIXシステムではこのsortコマンドは次のようになります

ls -l | sort -n -k 5

コマンドは簡潔ですが実に不可解です。
このように設定する必要があるのはlsコマンドの出力が非構造化文字列だからです。
913名無し~3.EXE:2009/11/28(土) 13:53:53 ID:QYj4568x
Unixみたく非互換バージョンが乱立しなければ、
オプション指定のショートバージョンがあってもいいとおもうけどね。
914名無し~3.EXE:2009/11/28(土) 14:00:34 ID:K72Taeo5
そこあたりはエイリアスで勝手のどうぞってことだろな
915名無し~3.EXE:2009/11/28(土) 14:11:03 ID:PywxRf2b
dir | sort -des
でも可。

dir | sort -d
だと -debug オプションと区別がつかないから -des まで入力しないといけない。
916名無し~3.EXE:2009/11/28(土) 14:32:42 ID:QYj4568x
そんなんがあったんか。知らんかった。
推論してくれるのか。

でもまぁ代表的なオプションは一文字に割り当ててくれてもいいと思う。
マイナーなオプションはいらんけど
917名無し~3.EXE:2009/11/28(土) 16:49:34 ID:IfHIYMJX
>>910

テキストファイルを扱うことでは確かに手軽じゃないね。

Powershellのウリはオブジェクトが流れるパイプだ。テキストエディタでやることを効率化するより、エクスプローラでやることを効率化するような
使い方がよさそう。例えば、ディレクトリの中にある最も古いファイル|ディレクトリを探すとか。
918名無し~3.EXE:2009/11/28(土) 19:50:38 ID:QYj4568x
ごく簡単なものは、PSのみでいいんだけど、
やや複雑になってきたら、VBとかC#で作ったほうが早くねー?ってなって
結局プログラム作るんだよな。
919名無し~3.EXE:2009/11/28(土) 20:14:02 ID:K72Taeo5
俺はGUI画面でフローをマウスで設計して、それをスクリプトに落とすというプログラムを書いてるんだけどね。まあ高機能なバッチファイルさ( ・ω・)y─┛〜〜
920名無し~3.EXE:2009/11/28(土) 20:47:51 ID:jmg8Lbzr
>>910
For-Eachは十分sedやawkと同じことが出来ると思うんだけど。
結局は構文への慣れなんじゃないかなぁ。
見やすくしようとするとどうしてもタイプ数増えちゃうってのはあるかもしれない。
921名無し~3.EXE:2009/11/28(土) 21:56:57 ID:Q/bUiNiv
>>918
1. やや複雑になってきたら、
2. VBとかC#で作ったほうが早くねー?ってなって
3. しかしそのままPSでごり押しする
ことのほうが多い
結果的にできたスクリプトは.NET Frameworkの積み木だったりする

2に気付くのはだいたいPS上でクラスを何個か作ったあたりだな
922名無し~3.EXE:2009/11/28(土) 23:21:41 ID:SUj1Beez
言語だとコンパイルは必要だけど、開発環境が楽ってのがある
自分的には結果どっちが近道か言われたら言語のほうだった。

開発系中心の人と構成管理中心の人で差があるんでないの?
どちらも自動化を目指している点は共通だが、
PowerShellはどちらかいうと構成管理なんだろうね
923名無し~3.EXE:2009/11/29(日) 02:23:53 ID:Fmnbxik9
まあunixでもスクリプトを使っているのは、立ち上がる時の様々な設定だったりデーモン類だからな。
バックアップツールとか。
研究者は結構、使っていて、解析プログラムなんかを処理毎に小分けして、最後にスクリプトで繋ぐっていうのが普通だな。
色々と再利用できるからね。
924名無し~3.EXE:2009/11/29(日) 09:32:56 ID:apm1UdzB
バッチ処理で夜中にデータベース処理とかする場合も基本的にスクリプト。
isqlとかbcpとかftpとかjavaで組んだプログラムとかを実行させる部品群。
そいつらをGUIツールでワークフローとして管理して実行してる。
925名無し~3.EXE:2009/11/30(月) 23:34:36 ID:slDn71Ai
PowerShellとはあんま関係ないかもだけど、シェル上で動作する高機能エディタつけてほしいな。
Notepadじゃさ。貧弱すぎる

インストール不要で標準てのは意味があると思うんだけどな。
926名無し~3.EXE:2009/11/30(月) 23:35:45 ID:nNCf+BcZ
>>925
かつてのEDLINと較べれば極めて高機能
927名無し~3.EXE:2009/11/30(月) 23:37:31 ID:XVPGIfEm
ISE使えばいいじゃない
タブUIで正規表現使えてスクリプトで拡張可能で十分じゃない、フォント以外は。
928名無し~3.EXE:2009/11/30(月) 23:37:36 ID:yoG9PYUJ
ISE上で作業するとかはだめ?
929名無し~3.EXE:2009/11/30(月) 23:41:02 ID:slDn71Ai
EDLINはエディタと呼びたくないw

フルスクリーンエディタで、正規表現やらなんやらで素早くできそうなやつ。
メモ帳ふざけすぎでしょ、置換とかも超ー遅いしw
930名無し~3.EXE:2009/11/30(月) 23:50:08 ID:yoG9PYUJ
Vista以降のメモ帳は置換が高速化されてるはずだけど。

ISEに無反応ってことはPowerShellのバージョン1?
931名無し~3.EXE:2009/11/30(月) 23:52:15 ID:nNCf+BcZ
あらまWindows7には標準でPowerShell付いてるじゃん。
932名無し~3.EXE:2009/12/01(火) 00:10:18 ID:M4ul/5ka
Win7だからバージョン2だけど。
ISEは使っていない。

バージョン1の頃からPowerGUIてのを使ってる。
理由はISEと比べたらPowerGUIのほうがはるかに使いやすいから。

ただコマンドベースって手先の道具としてはキーボードオンリーのほうが相性が良いというか。
ちゃちゃっと操作するにはGUIはうざすぎる。
933名無し~3.EXE:2009/12/01(火) 00:10:48 ID:1zGkOAM0
>>930
へー、メモ帳のそんなところも改良されてんだねぇ
934名無し~3.EXE:2009/12/01(火) 00:36:27 ID:1zGkOAM0
>>932
ISEのUIはキーボードだけで操作できるようになってるよ
スクリプトペイン閉じてコマンドペインをエディタ代わりにってこともできなくはない
ちょっとした複数行のコマンド編集するのにはその方が楽なこともある
935名無し~3.EXE:2009/12/01(火) 01:52:47 ID:I6Qv8tkV
男は黙ってedit




嘘ですごめn(ry
936名無し~3.EXE:2009/12/01(火) 02:12:22 ID:KHjsRX8S
というか、Windowsにマトモなテキストエディターを搭載したら
独禁法で訴えられるからつけたくてもつけられないんじゃね?
あと、やたら起動に時間がかかるメモ帳とかもごめんだし…

新しくまともなテキストエディタをつけろというのは同意。
notepadはUndo/Redoが一回しかできないとか地味に怖いところあるし。
一番よく使うツールなんだから、せめて正規表現での置換、強調表示、いくつかの文字コードのサポート、
sed/awkみたいなテキストプロセッサー的な簡易マクロ、
(特に日本仕様では)文字種変形、オートインデント、(特に日本だと必須)migemoインクリメントサーチっぽいもの、
アウトライン解析、あとは、KDEのKateやKWrite程度の機能を持ったごく一般的なテキストエディタを標準装備してくれればいいのに。

ちょっと贅沢を言うと、JScriptやらをつかってのマクロが使えれば.netを経由して何でもできるようになるよね。しかも割と簡単に。
937名無し~3.EXE:2009/12/01(火) 04:22:52 ID:fHlk6yLm
シェル上で動作するってどういう意味?
powerguiでは駄目なん?あれ凄い出来だと思うなぁ。
MSが買ってしまわないか心配。
938名無し~3.EXE:2009/12/01(火) 07:26:37 ID:0C/r/TK6
vimを買収しろ
939名無し~3.EXE:2009/12/01(火) 07:32:50 ID:0bRpVdi9
>>933
たいていの人はUIが変わってないと何も改良されたと思わないけど
地味に改良されてる
http://d.hatena.ne.jp/NyaRuRu/20091004/p1
940名無し~3.EXE:2009/12/01(火) 11:36:03 ID:KHjsRX8S
>>939
むしろ、たいていの人はそれがごく当然として受け取るから
元々そういうものだと感じてしまうのでは?

たとえばnotepadはXP(2000かも)あたりから置換ができるようになったけど
98/Meについてるnotepadには置換ができないことを知ってる人はどれだけいるんだろうか?

たぶん、ちょっとした追加機能に気づいても、「あれ?こんなことできたんだ、何で今まで使わなかったんだろう」で終わると思う。
#XP全盛期の頃にme機でどれだけ苦しめられたことか…
941名無し~3.EXE:2009/12/01(火) 11:46:04 ID:movM1T1K
notepadで改ページできない限りダメだわ
942名無し~3.EXE:2009/12/01(火) 17:02:13 ID:1Bpr3Qrp
実は9x系のメモ帳はなぜか16ビットアプリ
943名無し~3.EXE:2009/12/01(火) 18:24:32 ID:rJ3mlA0L
VisualStudioExpressEditionが
Windows標準エディタっつうことで
いんじゃね。
944名無し~3.EXE:2009/12/01(火) 19:05:53 ID:I6Qv8tkV
いつのバージョンからか忘れたけど、地味に文字コードが指定できるようになったのは知ってる。2000だっけ?
945名無し~3.EXE:2009/12/01(火) 19:59:58 ID:zXGQK7cS
いつのバージョンからか忘れたけど、地味に行番号とルーラが表示出来るようになったのと
htmlとかのタグが色分けされるようになったのと正規表現での検索・置き換えが出来るようになったのと
アウトライン表示が出来るようになったのは知ってる。
946名無し~3.EXE:2009/12/01(火) 21:01:34 ID:3mZCrRT/
個人的にはviが理想だな、そうなるとsedとかUnix的なツールほしくなるんだよね。
viのあのコマンドモードのように、心地よさがあるものがほしい。
947名無し~3.EXE:2009/12/01(火) 23:13:02 ID:KHjsRX8S
>>946
viあるところにemacsあるわけで、宗教戦争になりかねないから
そういうのはvimなり後で個人で入れればいいと思う。
948名無し~3.EXE:2009/12/01(火) 23:18:37 ID:EfXYulg9
viか。エスケープキー押しまくりだからな。
949名無し~3.EXE:2009/12/02(水) 00:04:54 ID:7u92E6lC
標準エディタがメモ帳が嫌なんだよね。
キータッチ間違わなければCOPY CON FILE.BATとかも使うよ
950名無し~3.EXE:2009/12/02(水) 00:44:52 ID:T9jbAvK3
PowerGUIはスクリプトエディタとしては申し分ない出来だね
あれで補完機能をPowerShellスクリプトで好きに弄れたら文句はないんだけど
結局powershell.exeしか使わない俺
951名無し~3.EXE:2009/12/02(水) 22:34:06 ID:qktVXxmb
9xのメモ帳はCtrl+Sが使えないのが痛い。XPでこれができることに感激した。
952名無し~3.EXE:2009/12/04(金) 18:23:39 ID:E5DR9r2G
VimをインストールしてPowerShellから使用する
ttp://techbank.jp/Community/blogs/hiro/archive/2008/07/09/1394.aspx
Microsoftが.NET版Emacsの開発を検討中
http://www.itmedia.co.jp/enterprise/articles/0801/07/news030.html
953名無し~3.EXE:2009/12/04(金) 19:29:50 ID:gq+LL4xL
Vimを使えるようにした。
生まれ変わったようだ。
快適。
954名無し~3.EXE:2009/12/04(金) 22:00:34 ID:CkhT4YPf
>>952
下、Emacsとは全く関係ないよ
IntelliPadっていうOslo用のエディタのコードネームがそうだったってだけ
ついでにいうとPowerShellとも全く関係ない
955名無し~3.EXE:2009/12/04(金) 22:06:12 ID:r9GY1noB
>VimをインストールしてPowerShellから使用する

何のことかと思ったら呼び出すだけかいw
956名無し~3.EXE:2009/12/04(金) 22:18:31 ID:m1SItZEu
呼び出すだけじゃぁねぇ。
手先の道具としては、VSは重装備すぎるから、単一のテキストファイル内で安易に利ファクタリングできるとか。
スクリプトなどでそういう思考のものって無いですよね
957名無し~3.EXE:2009/12/05(土) 06:56:41 ID:yS4qGMCE
BashみたいにC+pで前にヒストリを表示できるようにするにはどうすればいいの?
958名無し~3.EXE:2009/12/05(土) 13:11:32 ID:+q99l8Wo
bashでいうところの .bashrcみたいなものはありますか?
959名無し~3.EXE:2009/12/05(土) 13:14:01 ID:xNfV7tvY
profile.ps1
960名無し~3.EXE:2009/12/05(土) 15:11:27 ID:JI33+Lrv
>>957

C+p なら ↑
C+r は知らない。
961名無し~3.EXE:2009/12/10(木) 09:49:27 ID:9q6dd50G
 
962名無し~3.EXE:2009/12/11(金) 23:53:35 ID:1sEROKpx
PowerShell v2ってドキュメントってmanレベルは英語しかないの?
963962:2009/12/11(金) 23:56:05 ID:1sEROKpx
もしかしてXP板は英語のManなのか。
家のVISTAは日本語ででるな。
964名無し~3.EXE:2009/12/12(土) 00:05:13 ID:CvE9joI1
2003も日本語だな
965名無し~3.EXE:2009/12/12(土) 00:21:42 ID:d/C4z9e8
>>963
CTP版使ってた頃ヘルプファイルの入ったフォルダいろいろ弄くったのそのままにしてない?
966962:2009/12/12(土) 00:32:15 ID:R3lISQz+
V1をインストールしてからV2をインストール下と思う。
もう1回入れなおせば治るかしら。。
967名無し~3.EXE:2009/12/12(土) 00:42:14 ID:d/C4z9e8
正常なら C:\WINDOWS\system32\windowspowershell\v1.0\ja フォルダに
日本語のドキュメントが入ってるし、enフォルダとかは存在しないはず

あと考えられるとしたらそもそもインストーラが日本語版のものを選んでないとか?
968962:2009/12/12(土) 00:54:24 ID:R3lISQz+
会社のPCだから後日確認してみます。アドバイスありがとう。
969名無し~3.EXE:2009/12/12(土) 01:02:29 ID:d/C4z9e8
あーそういえば自分も会社のPCはまだ1.0のままだな
970名無し~3.EXE:2009/12/12(土) 01:18:52 ID:k08Nyib7
2.0あるのって7と2008だけ?
2003とXPとVISTAは無いよね?
971名無し~3.EXE:2009/12/12(土) 02:09:03 ID:CvE9joI1
972名無し~3.EXE:2009/12/12(土) 06:37:54 ID:rADjFoIa
やりたいことはファイルの連結なんだけど、
cat (Get-Content)って、UNIXのcatと挙動が全然違う。

cat 1.dat ,2.dat > test.dat

と打つとわけのわからんファイルtest.datが出来上がる。
どうも渡されたファイルをテキストファイルと見なして、エンコードをUTF-16に
変換しているようだ。
973名無し~3.EXE:2009/12/12(土) 08:46:12 ID:0H8NrB80
>>972

` Get-Content コマンドレットは、ファイルに格納されているテキストなど、パスで
` 指定された場所にある項目の内容を取得します。一度に 1 行の内容を読み込み、そ
` れぞれの行のオブジェクトを返します。
974名無し~3.EXE:2009/12/12(土) 08:58:42 ID:0OAjDH1q
975名無し~3.EXE:2009/12/12(土) 12:12:52 ID:DcJwTL7B
確かに、無理にエイリアスに割り当てない方がよかったコマンドもあるかもな。
976名無し~3.EXE:2009/12/13(日) 02:27:27 ID:VIatke/Y
テンプレ用のFAQ的なものを書いてみるテスト

とりあえず文字列 と ` と [ ] と パスおよびファイル名の関係から(PowerShell 2.0)

基本はヘルプの about_Escape_Characters about_Quoting_Rules about_Wildcards about_Parsing "FileSystem Provider" 辺りを参照
ヘルプファイルは %SystemRoot%\Help\WindowsPowerShellHelp.chm 辺りにあるはず

ファイル名に [ ] がある場合、標準のファイル操作系コマンドはそれをワイルドカードとして認識する(※)ので、抑制する必要がある
例えば file[01].txt を Get-ChildItem に渡す場合は

$path = "file````[01````].txt" # 文字列を"" で囲う場合は [ ] の前にそれぞれ4つ ` が必要
Get-ChildItem $path

他には
Get-ChildItem file````[01````].txt # コマンドの引数としての文字列は既に""で囲われているのと同じ状態
Get-ChildItem 'file``[01``].txt' # '' の場合は ` は2つ

もしくは -LiteralPath パラメータにファイル名を渡せばファイル名をそのまま書くだけですむ

Get-ChildItem -LiteralPath file[01].txt

ただし -LiteralPath はワイルドカードを展開しないので一つの文字列で単一のファイル名しか処理できない(配列として複数の文字列は渡せる)

Get-ChildItem file````[??````].txt # file[ と ].txt の間に何か2つ文字があるファイルを列挙
Get-ChildItem -LiteralPath file[??].txt # エラー


(※)ただし Rename-Item は現状 [ ] が入ったファイルを扱えないので Move-Item とかで代替するよろし


後は他の人よろ
977名無し~3.EXE:2009/12/13(日) 03:13:39 ID:T+joXL41
ヘルプ系コマンド 常套手段的な

about_うんちゃらの一覧がほしければ
Get-Help about_
すれば出てくる。実態は C:\WINDOWS\system32\windowspowershell\v1.0\ja にあるテキストファイル。
コマンド一覧がほしければ Get-Command
オブジェクトのメンバーがほしければ、$object | Get-Member
もちろん、こんな使い方もできる > Get-Member -Static -InputObject "String"
978名無し~3.EXE:2009/12/14(月) 07:27:08 ID:+T8lbR7m
「’」も悪さすような気が
全角なのに何故?
979名無し~3.EXE:2009/12/15(火) 00:25:38 ID:Ps4mQ4Sj
PowerShellからWindowsのスケジューラっていじれるの?
980名無し~3.EXE:2009/12/15(火) 10:12:04 ID:aW8/99Xr
こういうレベルの話じゃないんだろうけど念のため
http://www.atmarkit.co.jp/fwin2k/win2ktips/582schtasks/schtasks.html
981名無し~3.EXE:2009/12/15(火) 13:47:11 ID:YCdAWY7w
New-Object -ComObject schedule.service
982名無し~3.EXE:2009/12/15(火) 19:38:54 ID:SOju+QFA
>>981
おお、まさにこれを探してました。ありがとう
983名無し~3.EXE:2009/12/15(火) 23:58:35 ID:QNb0benf
>>979
>>780 にも専用のモジュール入ってるよ
984名無し~3.EXE
スレ立つまで保守ついでに1.0→2.0でのコマンドレット地味な改善点挙げてみるとか

Get-Alias : -Definition コマンド名 でそのコマンドのエイリアスを列挙
Select-String : -Encoding パラメータ追加、出力されるオブジェクトがパターン文字列のグループ化対応
Get-EventLog : -After / -Before で期間指定
Select-Object : -ExpandPoperty プロパティ名 で ls | % { $_.Name } とかと同じことができるようになった