5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Windows PowerShell 2.0 Part2

1 :名無し~3.EXE:2009/12/18(金) 12:14:24 ID:H2dW8sR1
Windows PowerShell
http://www.microsoft.com/japan/technet/scriptcenter/hubs/msh.mspx
http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx (英語)

■パッケージのダウンロード
Windows XP, Windows Server 2003用
http://support.microsoft.com/?kbid=926140

Windows Vista用
http://support.microsoft.com/?kbid=928439

Windows PowerShell V2(CTP2)
http://www.microsoft.com/downloads/info.aspx?na=47&p=1&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&u=details.aspx%3ffamilyid%3d7C8051C2-9BFC-4C81-859D-0864979FA403%26displaylang%3den

■参考
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
http://oka326.blogspot.com/search/label/PowerShell
http://d.hatena.ne.jp/newpops/
http://blogs.msdn.com/PowerShell

■過去スレ
Windows PowerShell 2.0
http://pc12.2ch.net/test/read.cgi/win/1221046998/
Windows PowerShell (正式版リリース)1.0
http://pc11.2ch.net/test/read.cgi/win/1163764836/

2 :名無し~3.EXE:2009/12/18(金) 12:15:07 ID:H2dW8sR1
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:2009/12/18(金) 12:16:47 ID:H2dW8sR1
■エディタとか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:2009/12/18(金) 14:57:56 ID:ZTSryej3
>>1

5 :名無し~3.EXE:2009/12/18(金) 21:41:13 ID:wjlTp1Ca
>>1
PowerShell 2.0 の Part2 ってするくらいならせめてリンク先ちゃんと変えろよw
ぶっちゃけバージョンごとにスレ番変える必要はないと思うけど

6 :名無し~3.EXE:2009/12/19(土) 11:11:41 ID:qOfdkuAO
>>1おつ

7 :名無し~3.EXE:2009/12/19(土) 13:19:47 ID:6t1jUQFW
>>5
すいません
気付きませんでした

8 :名無し~3.EXE:2009/12/19(土) 19:54:11 ID:G0uD9R9e
や、だから誰か貼ろうよw

Windows 管理フレームワーク (Windows PowerShell 2. 0、WinRM 2. 0、および BITS 4. 0)
http://support.microsoft.com/kb/968929

>>1 のリンクは 1.0 と 2.0 CTP2 のもので現在最新は 2.0 RTM だから注意



9 :名無し~3.EXE:2009/12/27(日) 16:56:57 ID:DBMTfN0o
だれか、以下の条件を満たす*.ps1ファイルの関連付け教えて

1. ps1スクリプトに複数のファイルをD&Dして各ファイルの絶対パスを渡す
2. 絶対パスは文字列の配列としてスクリプトに渡す
3. パス/ファイル名として使える文字全てに対応
4. Ver2.0でしか動かなくてもOK
5. 引数の事前処理としてバッチファイルの併用可
6. *.batの関連付けで引数の部分変更可

自分でやってたけど & とスペースが組み合わさったファイル名の時の対策がどうにも難儀だわ

10 :名無し~3.EXE:2009/12/27(日) 22:14:14 ID:BdtTg34B
どこまでできたの?

11 :9:2009/12/27(日) 22:25:48 ID:DBMTfN0o
>>10
ps1スクリプトの関連付けを run.bat "%1" "%*" として
↓みたいなPowerShellを起動するバッチファイルを作ったけど、正直全然やりたいことできてない

set arg=%*
set arg=%arg:&=^&%
set arg="%arg:"=''%"
set arg=%arg:''''=''%
set arg=%arg:~1,-3%

rem ↓書き込みの制限で改行してるけど、実際には改行してない
powershell "$str = iex ('@''' + (echo `n) + ' %arg% ' + (echo `n) + '''@'); $str = [System.Management.Automation.PSParser]::Tokenize($str, [ref]$null) |
select -exp Content; $files = New-Object System.Collections.ArrayList; $path = ''; foreach ( $fragment in $str ) { $path += $fragment;
if ( Test-Path $path ) { [void]$files.Add($path); $path = ''; }} $files; & '%1' $files"

今はバッチファイルは使わずに powershell.exe "$a = '%1' " みたいな感じでやってみようかと思うけど、にんともかんとも


12 :名無し~3.EXE:2009/12/27(日) 22:54:02 ID:DBMTfN0o
あー・・・できたかも、これでどうだろ

# PS1ファイルへのドラッグを有効化する
cp -Path HKCR:\VBSFile\ShellEx\ -Destination HKCR:\Microsoft.PowerShellScript.1\
cp -Path HKCR:\VBSFile\ShellEx\DropHandler -Destination HKCR:\Microsoft.PowerShellScript.1\ShellEx

# D&Dされたファイルを引数にスクリプトを実行可能にする
New-Item HKCR:\Microsoft.PowerShellScript.1\shell\open
New-Item HKCR:\Microsoft.PowerShellScript.1\shell\open\command

$command = @'
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -NoExit "&'%1' ('%*' -replace '(\w+\:)',',$1' -split ',' -ne '' )"
'@

# 引数はファイルのフルパスなので、ドライブレターの前にカンマ入れて分割
New-ItemProperty -Path HKCR:\Microsoft.PowerShellScript.1\shell\open\command -Name "(default)" -Value $command


テストに使ったファイル名が適当なので、暇な人は試してみてくれると嬉しい

13 :名無し~3.EXE:2009/12/28(月) 00:09:21 ID:zEknC33x
ごめん、>>12だとファイル名に'がある時にエラーが出るままだった

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -NoExit "&'%1' ((iex ('@''' + (echo `n) + ([String]{<#%*#>} -replace '^<#(.*)#>','$1') + (echo `n) +'''@')) -replace '(\w+\:)',',$1' -split ',' -ne '')"

{<#%*#>} のところ {#%*} ってできれば1.0でもそのまま使えるんだけど
なぜかこっちは文として完結してないって解釈されるみたいなんだよなー
まあ別に1.0で使える必要性はないんだけども

14 :名無し~3.EXE:2009/12/28(月) 14:29:52 ID:UrzeYzpP
powershell.exe -file "%1" %*
で駄目な例は?

15 :名無し~3.EXE:2009/12/29(火) 19:30:34 ID:AryjUNOo
>>14
あー、Fileを指定してると他はスクリプトの引数として扱ってくれるのか・・・全く見落としてた、ありがとう
しいて言うなら引数は$argsで処理するから [CmdletBinding()] と併用できないって程度かな?
それを気にしないならその方がスマートだねぃ

16 :名無し~3.EXE:2009/12/30(水) 00:39:55 ID:hRpSXntc
powershell.exe "〜"
one linerの〜の部分の書き方、どこかにない?
"'`のエスケープがうまくいかん

17 :名無し~3.EXE:2009/12/30(水) 19:23:36 ID:VvqrAlii
>>16
"(二重引用符)はcmd.exeの方で解釈しちゃうからエスケープは無理だと思う
ちゃんと調べてないから知らないけど
他はそのまま使えるはず

もしくは↓みたいにBase-64でエンコードした文字列を-EncodedCommandの引数として渡すとか
Base64形式のエンコードされたコマンドを実行する
ttp://handcraft.blogsite.org/ComponentGeek/ShowArticle/199.aspx


18 :名無し~3.EXE:2009/12/31(木) 17:14:47 ID:YWHBEI29
>"(二重引用符)はcmd.exeの方で解釈しちゃうからエスケープは無理だと思う
なことはない

19 :名無し~3.EXE:2010/01/01(金) 22:11:09 ID:rSmx3hBm
折角なので調べてみた

猫科研究所(felid labo) - コマンドプロンプトのエスケープ仕様
ttp://www.up-cat.net/%25A5%25B3%25A5%25DE%25A5%25F3%25A5%25C9%25A5%25D7%25A5%25ED%25A5%25F3%25A5%25D7%25A5%25C8%25A4%25CE%25A5%25A8%25A5%25B9%25A5%25B1%25A1%25BC%25A5%25D7%25BB%25C5%25CD%25CD.html

PS > powershell " $a = get-date ; \"hello, world. $a \" "
hello, world. 01/01/2010 22:10:29

確かにできてるね

20 :名無し~3.EXE:2010/01/02(土) 23:24:11 ID:cTWRUUoK
なんか某所で突っ込まれた気がするので適当にまとめてみた
間違ってたら誰かフォローよろしこ

以下、コマンドプロンプトから powershell.exe の -command オプションに任意の文字列を渡してコマンドとして実行するときの話
・ 二重引用符 " は \ でエスケープする
・ | & < > は 奇数番目の二重引用符 " の後ろにある時は特別なエスケープ処置は必要はない
 偶数番目の二重引用符 " の後ろにある時は ^ を使ってエスケープする

CMD > powershell " \" hoge \" "
hoge


CMD > powershell " ' hoge > fuga ' "
hoge > fuga

> は奇数番目の二重引用符の後にあるので自動的にエスケープされる、出力結果は ' hoge > fuga '


CMD > powershell " \" hoge > fuga \" "

偶数番の二重引用符 " の後に > があるので、> がエスケープされずに
(コマンドプロンプトの)リダイレクト演算子として機能し
powershell.exe の出力結果 ' hoge ' が fuga というファイルにリダイレクトされる


CMD > powershell " \" hoge ^| fuga \" "
hoge | fuga

偶数番の二重引用符 " の後に | があり、| が二重引用符 " によってエスケープされないので
^ を使って | をエスケープする、出力結果は ' hoge | fuga '


21 :名無し~3.EXE:2010/01/09(土) 22:07:55 ID:06hUKofY
文法は面白いけどもっさり過ぎる
dirするだけでどんだけCPUパワー食ってんのかと
CPUが後2、3世代進んでから乗り換えるわ

22 :名無し~3.EXE:2010/01/10(日) 00:44:12 ID:O/OoSzS1
知れば知るほど、良い出来だなぁ

もう少し改良して欲しい点として、UnixスタイルのCTRL+U、CTRL+A、CTRL+Eの対応と。
コンソールの作りをTeraTermみたいにキーワードをマウスで選択右クリックでペーストとかなって欲しい。
左上のコンテキストメニューつかうの面倒くさいから。

New-ObjectあたりはnewにAlias割り当てて良いんでないかぁ


23 :名無し~3.EXE:2010/01/11(月) 07:45:26 ID:W7jRU6IE
PowerShellってインストールせずに使うことはできないのかなぁ。
powershell.exeだけコピーして動かそうとしたけどだめだった。

24 :名無し~3.EXE:2010/01/11(月) 11:14:40 ID:KTNXxzfc
>>21

Powershell用のプロパティが重いんだよね。(gi -l .).getfiles()とかを使えば軽い。

25 :名無し~3.EXE:2010/01/11(月) 16:31:48 ID:Kw3ZXtwI
powershellでiseみたいにread-hostでGUIにできない?

26 :名無し~3.EXE:2010/01/11(月) 20:07:43 ID:3OOLInNT
なんか似たような質問がちょっと前にもあったような
# [Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")
[Microsoft.VisualBasic.Interaction]::InputBox("以下に入力","タイトル","デフォルトの文字列")

それともpowershell.exe自体をRead-Hostコマンドを実行することで
ISEのようなGUIアプリの概観にするという意味じゃろか

27 :名無し~3.EXE:2010/01/12(火) 01:52:58 ID:3thoTjT8
get-credentialみたいに、GUIにするか、consoleにするか、のスイッチがあるかと

28 :名無し~3.EXE:2010/01/14(木) 23:32:28 ID:xZGgtzzJ
質問です。二重ループの内側で外側のオブジェクトどうやったら参照できますか?

dir -Recuse c:\temp | %{
cat $_ | % {
// $_の外側のForEach-Objectオブジェクト参照どうすればいいの?
}
}

29 :名無し~3.EXE:2010/01/14(木) 23:59:56 ID:QiX77Jae
別の変数に代入しておけばいいだけじゃん?

30 :名無し~3.EXE:2010/01/15(金) 00:53:18 ID:bgPwBRCA
シェルスクリプトの美しさっていうのか、
さりげないけど、高機能を多用してるのが気持ち良いノリってあるんだよなw

31 :名無し~3.EXE:2010/01/15(金) 03:21:28 ID:UC9TN4Xv
バッチファイルにシェルスクリプト・・・一番簡易で一番高度だもんげ

32 :名無し~3.EXE:2010/01/17(日) 22:01:51 ID:60xRBkvR
ところで次期VS2010では、PowerShellはメインストリームになるの?
やっぱシェルは開発で、ガシガシ使われてナンボではあると思うけど。


33 :名無し~3.EXE:2010/01/19(火) 00:58:11 ID:YuVXv+9y
Xml.Linqって便利だね、[xml]$xml = ... とかやるよりずっと楽
ttp://www.atmarkit.co.jp/fdotnet/special/linqtoxml/linqtoxml_02.html

Add-Type -AssemblyName System.Xml.Linq
$ex = [System.Xml.Linq.XNamespace]"http://www.piedey.co.jp/example/linqtoxml200811"
$doc = New-Object Xml.Linq.XElement $( $ex+"person";
(("name", "Wong Fei Fong"), ("age", "18"), ("address", "Village of Lahan") |
% { New-Object Xml.Linq.XElement $($ex+$_[0]; $_[1]) })
)
$doc.ToString()


Convert-Xmlの出力もこんな感じの方が嬉しいんだけどなー

34 :名無し~3.EXE:2010/01/22(金) 00:02:58 ID:YdI+bHOF
PSだけで殆どの業務アプリが作れるような感じがしてきた。
動的言語に近いから、PL/SQLとかT-SQLの置き換えに良いと思ったりする。

35 :名無し~3.EXE:2010/01/26(火) 18:45:01 ID:ZPqGt4/y
これつい先日使い始めたばかりなんだけど、ISEの出力をウィンドウに
合わせて改行とかどうやるの?
一行200桁以上とか見にくくて困るんだけど。

36 :名無し~3.EXE:2010/01/27(水) 01:17:12 ID:47cnnfMm
これってnetrisできるの?

37 :名無し~3.EXE:2010/01/28(木) 22:38:01 ID:OITvlY5l
>>35
アウトプットペインの話ならコマンド実行した時のウインドウサイズに合わせて出力されるよ?
サイズ変更した時に追従はしないけど

38 :名無し~3.EXE:2010/01/28(木) 23:05:09 ID:mN1k0K8A
>>37
その後何回かウィンドウサイズ変えてやってみたんだけど
赤文字のエラー文てウィンドウサイズの2倍位の位置で改行されてない?
半角80文字位のウィンドウサイズ幅で
存在しないコマンド入れてEnter押した結果

用語 'a' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが
含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:2
+ a <<<<
+ CategoryInfo : ObjectNotFound: (a:String) []、CommandNotFoundExcep
tion
+ FullyQualifiedErrorId : CommandNotFoundException

改行位置は原文まま。半角157文字で改行入ってるし。
わけわからん。

39 :名無し~3.EXE:2010/01/29(金) 00:29:03 ID:gkvs4EXV
>>38
ああ、エラー文だとそうなるみたいだね

40 :名無し~3.EXE:2010/02/05(金) 00:06:50 ID:qu9FtZMu
たしかに、PowerShellのエラー表示はちょっとUnixとか汎用機のものとも違って、
ちょっとヘンテコだよね。


41 :名無し~3.EXE:2010/02/06(土) 16:32:03 ID:7MX3qEFM
1.0の時に合ったクイックリファレンスのドキュメントはどこかに行っちゃったんだな、ふむ。

42 :名無し~3.EXE:2010/02/06(土) 17:59:47 ID:0Imoozjb
>>41
インストールフォルダの中にテキストがいっぱいありますよ?

43 :名無し~3.EXE:2010/02/06(土) 18:14:39 ID:7MX3qEFM
>>42
いや俺がしたいのは1.0のquadfold.rtfに相当するドキュメントはなくなっちゃったんだねってことよ?
今でも↓から入手はできるけどね
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=B4720B00-9A66-430F-BD56-EC48BFCA154F&displaylang=en
別に取り除く必要はなかったように思うわけさ

44 :名無し~3.EXE:2010/02/06(土) 19:45:06 ID:44gaNFno
>>40
君の日本語もヘンテコだが…

45 :名無し~3.EXE:2010/02/06(土) 21:00:06 ID:RW7gxJxl
なにかのオブジェクトで、GetClosurerだったかNewClosurerみたんだけど、
高階関数つかるのこれ?

46 :名無し~3.EXE:2010/02/07(日) 00:58:26 ID:B59r12L7
>>45
GetNewClosure()というメソッドでスクリプトブロックのクロージャを生成することは出来るよ
ttp://blogs.msdn.com/powershell/archive/2009/03/27/get-closure-with-getnewclosure.aspx
別にノーマルなスクリプトブロック使っても高階関数自体は作れると思うけど


47 :名無し~3.EXE:2010/02/07(日) 22:07:12 ID:5nvhuGiB
format-tableについて教えください

コマンド結果の全プロパティを見たいとき以下のように打ったとします
PS C:\> ls | ft *

結果、省略表示されますが省略しすぎてとても何が返ってきてるのか分かりません
そこでautoオプションつけますがこれはこれで
収まらない分は削除されてしまいます。リダイレクトしてファイルに吐いても同じです。

PS C:\> ls | ft * -auto
「警告: 18 個の列が表示に収まらないため、削除されました。」

全行を省略しない形で表示できないでしょうか?

48 :名無し~3.EXE:2010/02/07(日) 22:24:20 ID:zX92p1FY
PowerShellの画面バッファ/ウインドウのサイズを十分に大きく/フォントを小さく設定/解像度の大きいモニタを使う
ls | select * | ogv として別ウィンドウに表示
ls | Export-Csv としてCSVファイルに保存してからエクセル等で表示する

の、どれか。

49 :名無し~3.EXE:2010/02/09(火) 00:51:28 ID:YNN/Dh1h
PowerShellは殆どの演算子をハイフンで始まる文字列に押し込めたから
^ とか ~ とかが何にも解釈されない文字として残ってるけど
これを利用して 3^3 で塁乗、 9~2 で累乗根、とかできるようにして
他の追随を許さない電卓言語として君臨、とかならんかな、いやならんでいいけど

50 :名無し~3.EXE:2010/02/09(火) 01:40:39 ID:kaRTV0fr
その辺はエイリアスで勝手にどうぞなんじゃない?
それよかスタティックなメンバーをカッコ書きで格納面倒だけど。

$date=[System.DateTime]::Nowとか
スクリプトだからしょうが無いかもしれないけど、名前空間とリファレンスを参照するキーワードが欲しいけな。。


51 :名無し~3.EXE:2010/02/09(火) 04:14:39 ID:8BqPaL3i
ogvが閉じるのを待ち合わせるにはどうすりゃいいの?

52 :名無し~3.EXE:2010/02/10(水) 00:00:44 ID:yDsRur2e
フォルダ内の検索オプションですが、例えば今日の20時以降に
更新・作成されたファイルをリストアップしたいのですが
標準では年月日までしか日時指定できません。

時間まで指定する方法はありますでしょうか?

53 :名無し~3.EXE:2010/02/10(水) 00:15:29 ID:LYLYPZIx
そんなことはない

54 :名無し~3.EXE:2010/02/10(水) 01:06:40 ID:Wzvkwo8/
date:>2010/02/09 20:00

55 :名無し~3.EXE:2010/02/11(木) 00:19:43 ID:uGcl0aGn
>>52

get-date 20:20

とかを試してみるべし。

56 :52:2010/02/11(木) 01:11:49 ID:LhylZmK1
>54,55

ありがとうございます。早速やってみます。

57 :名無し~3.EXE:2010/02/12(金) 00:48:23 ID:mUwODAF1
>>38
このエラーメッセージをそのまんま変数に取り出せない?
なぜか改行までしか取れないだけど

58 :名無し~3.EXE:2010/02/13(土) 00:45:36 ID:lHDHi4mb
>>48
ls | convertto-html | out-ie

59 :名無し~3.EXE:2010/02/13(土) 18:37:17 ID:gjDR5Xyk
>>58
や、俺にレスされても困るがな

60 :名無し~3.EXE:2010/02/14(日) 22:24:42 ID:OE9upvDA
>>50
PSObjectにAdd-Memberで特定の型の静的メンバをくっ付けて行くことで対処できないことはない
例えば[DateTime]を対象とすると

$typename = "datetime"
$arglimit = 20
$argtext = (1..$arglimit | % { $n = $_.ToString('00'); "`$myarg$n=(`$_iranaiko+=,'myarg$n')"} ) -join ', '

iex "`$$typename = New-Object psobject"
iex "[$typename] | gm -s -MemberType Method" |
% {
$exp = @"
{param($argtext);
Remove-Variable `$_iranaiko ;
`$argtext = (gv myarg* -Scope Local | % { '$' + `$_.Name }) -join ', '
iex "[$typename]::$($_.Name)(`$argtext)"
}
"@
$sb = iex $exp
iex "`$$typename | Add-Member ScriptMethod $($_.Name) -Value `$sb -force"
}


$datetime.DaysInMonth(2, 5)

とかそんな感じで

61 :名無し~3.EXE:2010/02/18(木) 09:28:28 ID:9EMy/ABM
 

62 :名無し~3.EXE:2010/02/23(火) 01:31:48 ID:1YrNYLaH
変数に格納した文字列をあいまい検索する場合
後からアスタリスクを追加するにはどうすれば良いでしょうか?

●作成したいスクリプト
「c:\移動元」 ディレクトリ内にOS名が付いたファイルがたくさんあります。(yyyy_Windows_xxxx.xlsとかで命名規則はバラバラです)
これを「c:\移動先」 ディレクトリの同会社名ディレクトリに選別して移動するスクリプトを作成しようとしています。
ディレクトリは↓のイメージです

C:.
├─移動元
└─移動先
├─Windows
├─Linux
・・・

●作成中のスクリプト
==============================================
$SORUCEPATH = "c:\移動元"
$DESTPATH = "c:\移動先"
$SERCHFILE = ls $DESTPATH | select-object name

foreach ($SERCHSTR in $SERCHFILE) {
$j = join-path $DESTPATH $SERCHSTR
$SERCHSTR = *$SERCHSTR* #←ココ●
ls $SORUCEPATH -include $SERCHSTR -recurse | foreach ($_) {move $_.fullname $j -whatif}
}
==============================================

結局↓のコマンドのようにしたいのですがどう記述すればよいのでしょうか?
ls c:\移動元 -include "*Windows*" -recurse | foreach ($_) {move $_.fullname $j -whatif}


63 :62:2010/02/23(火) 01:33:41 ID:1YrNYLaH
>>62
すいません。ズレてしまいましたが

「c:\移動先」ディレクトリの配下に「Windows」「Linux」ディレクトリが存在します

64 :名無し~3.EXE:2010/02/23(火) 02:20:44 ID:+27C+XO0
>>62
多分こんな感じでいいんじゃなかろうか
$DESTPATH = "R:\Dest"
$SORUCEPATH = "R:\src"
ls $DESTPATH -Name | % { cd $DESTPATH\$_; ls $SORUCEPATH\* -In *$_* | move -dest .\ }

65 :名無し~3.EXE:2010/02/23(火) 02:35:38 ID:+27C+XO0
ああいやまあ-Destの方で指定すればcdする必要ないんだけども

66 :名無し~3.EXE:2010/02/23(火) 02:49:32 ID:+27C+XO0
ふむ、タブファイラで渦中のフォルダを3分割表示して
1..10 | % { ls $DESTPATH -Name | % { ls $SORUCEPATH\* -In *$_* | move -dest $DESTPATH\$_ } ; sleep 2
move $DESTPATH\*\* -In *.txt -Dest $SORUCEPATH; sleep 2 ; }
とかやるとなかなか楽しいな、なんかのデモに使えそう

67 :名無し~3.EXE:2010/02/25(木) 03:00:10 ID:MgBHCeg/
よく見たら2回もlsする必要なかった
ls $DESTPATH | % { move $SORUCEPATH\*$_* $_.FullName }
なんかもっと短く出来そうな、出来なさそうな

68 :名無し~3.EXE:2010/02/28(日) 22:15:03 ID:XKMuyjdJ
>>64-67
ありがとうございました。以下でうまく行きました

$SORUCEPATH = "c:\移動元"
$DESTPATH = "c:\移動先"
ls $DESTPATH -Name | % { ls $SORUCEPATH\* -In *$_* | move -dest $DESTPATH\$_ -whatif}


69 :名無し~3.EXE:2010/02/28(日) 23:08:19 ID:5Re/biwD
スクリプト本体と関係ないが
soruceはわざとなのかい?

70 :名無し~3.EXE:2010/03/11(木) 23:41:41 ID:EcUmhI6o
1.0の話ってスレ違い?
誰か教えてください。

今日1.0を入れたら、PowerShell起動時に80ポートを開いて116.91.142.191と225に接続しようとしたんだけど、
これって正常な挙動?

2.0に入れ替えたらこの挙動はなくなりました。もしかしてウイルスにやられてるのかな?

71 :名無し~3.EXE:2010/03/12(金) 06:29:38 ID:0fQ7pB7I
>>70
あんたのISPはvectantだろ

72 :名無し~3.EXE:2010/03/12(金) 18:52:42 ID:nXoZFSL8
>>71
違うISPです。

73 :名無し~3.EXE:2010/03/13(土) 04:27:52 ID:dTKQVsL3
cmd.exeあたりはどこかでバッサリ捨てて欲しいな

74 :名無し~3.EXE:2010/03/13(土) 04:35:32 ID:dEw65YIY
64bit Windowsでcommand.comは消えた
cmd.exeも同じくらいの時間をかけて消えるのかもしれないね

Windows PowerShellはcmd.exeやWSHで使うVBScript、JScriptをどこまで
置き換えるんだろう

75 :名無し~3.EXE:2010/03/13(土) 08:08:20 ID:rZpSpC8V
>>73-74
WindowsMEを目指すのかwww
Windows上からDOS窓は使えたけど

telnet接続もcmdベースじゃなかったか?

76 :名無し~3.EXE:2010/03/13(土) 09:39:55 ID:jsj7aNy2
>>75

PowershellからでもSystem.Net.Sockets.TcpClientあたりを使えばいいが。

77 :名無し~3.EXE:2010/03/13(土) 13:43:45 ID:ACRf1yd6
vista x64 sp2 無印rtmから再インストールしてSP2までアップグレードした後に
PowerShell1.0をWindowsUpdateで入れてみたけどやっぱり116.91.142.191にアクセスが発生する。

クリーン環境でも発生したから結局問題なかったんだ、と思うことにします。
一晩かかって疲れた。

78 :名無し~3.EXE:2010/03/13(土) 14:55:25 ID:qtbTmgoE
>>76
クライアント側じゃなく鯖側

79 :名無し~3.EXE:2010/03/13(土) 19:03:36 ID:K8eUwN3I
>>75
CLIベースの実行ファイルをcmdベースって言ったら、それこそPowerShell自体がって話になるんでは。

80 :名無し~3.EXE:2010/03/14(日) 08:50:49 ID:Hn6lpQ4x
>>78

意味不明だ。telnet鯖は鯖だよ。

81 :名無し~3.EXE:2010/03/17(水) 00:49:46 ID:tSysGR3U
1,2,3,4,5|Export-csv -path "abc.csv"
ってやったら、
abc.csvの内容が
#TYPE System.Int32
と出ました。
どうして"1,2,3,4,5"にならないのでしょうか?


82 :名無し~3.EXE:2010/03/19(金) 01:13:11 ID:0GOIRcmZ
>>81
System.Int32型のプロパティをCSV形式にしてるから(プロパティないから改行だけになる)。
ていうか、そのやり方ではできたとしてもせいぜい
"1"
"2"
"3"
...
みたいな出力しか期待できんだろ
-join 使えばいいじゃん

83 :名無し~3.EXE:2010/03/23(火) 21:42:43 ID:lViYlT5s
 

84 :名無し~3.EXE:2010/03/24(水) 00:51:08 ID:39fJFkBP
一発ネタ
コマンドプロンプトの環境変数表記を使えるようにする
ls env: | % { iex "function $(`"%`" + $_.Name + `"%`") { `$env:$($_.Name) }" }

うん、それだけなんだ、すまない

85 :名無し~3.EXE:2010/03/28(日) 21:35:22 ID:omxsl1A9
PowerShellのTransaction系の実装には期待している。
一貫性を保障出来るならかなり良い思うんだけど。



86 :名無し~3.EXE:2010/03/29(月) 15:07:15 ID:Q1Sfkfug
ieコンポーネントを使ってgoogleを開き、キーワードを入力して検索する。
検索結果を10ページ分、名前を付けてhtml形式で保存する。
この操作をPowerShellで可能なのでしょうか?
可能であればサンプルコードを見せてもらえるとうれしいです。


87 :名無し~3.EXE:2010/03/29(月) 16:23:35 ID:c3UokA9g
一人月で開発してやるよ

88 :名無し~3.EXE:2010/03/29(月) 17:45:56 ID:SREk3yP3
生産性悪そうだから単金百円で

89 :名無し~3.EXE:2010/03/29(月) 21:43:52 ID:DGg0sZd4
仮に・・・
裏がPowerShellやDosコマンドで、UIは他言語でアプリを作るとしたら何が良いのでしょうか?VB?

90 :名無し~3.EXE:2010/03/29(月) 23:50:28 ID:SREk3yP3
UIもPowerShellで作ればええじゃないか

91 :89:2010/03/30(火) 00:10:53 ID:is44HdHL
見た目はビジュアル重視で行きたいです。

92 :名無し~3.EXE:2010/03/30(火) 00:26:39 ID:dq4fBvef
だったらVisualBasicだね

93 :名無し~3.EXE:2010/03/30(火) 01:38:29 ID:klchKT8i
Add-History は CSV 形式にすれば好きなコマンドをヒストリに追加できる
Invoke-History はコマンドを実行する前に実行するコマンドを画面に出力する

というわけでバッチファイルのように自分自身を読み上げながら実行するスクリプト思いついた
------------------------------------------------------------------------------------
(type $MyInvocation.MyCommand.Path) | select -Skip 7 | % -Begin { @'
#TYPE Microsoft.PowerShell.Commands.HistoryInfo
"Id","CommandLine","ExecutionStatus","StartExecutionTime","EndExecutionTime"
'@
} { '"0","{0}","Completed","0001/01/01 0:00:00","0001/01/01 0:00:00"' -f $_ } | ConvertFrom-Csv | Add-History
((h)[-1].Id-((type $MyInvocation.MyCommand.Path).count-8))..(h)[-1].Id | % -Begin {$i=1} { "#"*30 + ("`tBegin`tCommand:{0,3}" -f $i++) + "#"*30 ; Invoke-History -Id $_; "#"*30 + ("`tEnd`tCommand:{0,3}" -f $_) + "#"*30 }
return # ここまで7行

# 実行したいスクリプト
ls
ps
------------------------------------------------------------------------------------

まあプロンプトは出てこないから自分で装飾する必要があるんだけどもー

94 :89:2010/03/30(火) 20:35:57 ID:is44HdHL
>>92
じゃVBで行って見ます。

95 :名無し~3.EXE:2010/04/02(金) 01:16:28 ID:M7yf1HAI
PowerShellさっさとWin2008 Serverに載せてればよかったんだけど・・・
V3いつリリースされるかわからないけど、
日本じゃ、これってサーバ製品に普通に標準で乗らないと一向に普及しないよな。


96 :名無し~3.EXE:2010/04/02(金) 01:52:23 ID:mAo1182s
2008は標準搭載(ただし要有効化)、2008R2から標準インストールされてるがな

97 :名無し~3.EXE:2010/04/04(日) 18:45:51 ID:mHgJVGPO
うがー、コンソールアプリはフック効かないって分かったらここ2日くらい悩んでたのが全部無駄になった気分だ・・・
cmd.exeのマウスでコピーとかはWinAPI使わない独自実装なんかな

98 :名無し~3.EXE:2010/04/05(月) 17:31:16 ID:zMWhVMNd
バッチファイルをバックグラウンドで走らせたいのですが
$cmd={& "C:\hoge\hoge.bat"} ; Start-Job -ScriptBlock $cmd
はOKでしたが、
$bat = "C:\hoge\hoge.bat"
$cmd={& $bat} ; Start-Job -ScriptBlock $cmd
はNGでした。
うまい書き方はないですか?

99 :名無し~3.EXE:2010/04/05(月) 18:02:36 ID:zBwMa85m
Start-Process -FilePath $bat -NoNewWindow

とするか

iex "`$cmd={& $bat}"

とするか

$cmd={param($bat); & $bat}
Start-Job -ScriptBlock $cmd -ArgumentList $bat

とするかくらいだと思うよ

100 :名無し~3.EXE:2010/04/06(火) 06:19:49 ID:Q597yQV9
>>99
ありがとう。
iex "`$cmd={& $bat}"
でOKでした。

101 :名無し~3.EXE:2010/04/06(火) 21:17:25 ID:Q597yQV9
バックグラウンドでは Write-Progress の表示が見えないのですが、
フォアグラウンドのコンソールにリダイレクトする方法はありますか?


102 :名無し~3.EXE:2010/04/07(水) 07:24:13 ID:WHeSRl1y
>>101
バックグラウンド処理は別プロセスだからホスト側のプロセスには影響しない
というか、Write-Progress使うならバックグラウンドでやる意味がないと思うんだが・・・
中の処理で進行度の数値を出力してReceive-Jobで拾って、
(ホスト側の)$host.ui.rawui.windowtitleに入れてタイトルバーで表示するくらいじゃね


103 :101:2010/04/07(水) 13:52:54 ID:z101cFdY
>>102
よく考えたらバックグラウンドのプロセスが画面持ってるのはおかしいですよね
その方法で試してみます。ありがとう。

104 :名無し~3.EXE:2010/04/08(木) 17:28:16 ID:wGCuH+p3
powershellでGUI書いてみたんですが、ビジュアルスタイル?が適用されない様で困っています

PowerGUIから実行する場合は問題ないんですが、シェルからだと例えばボタンの上にカーソル持っていっても
ハイライトされないんです
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
で読み込んでるdllは同じなんですが、何が違うのか見当がつきません
有識者の方、御教示お願いします


105 :名無し~3.EXE:2010/04/09(金) 10:10:20 ID:pUS39GQq
Format-List の出力を行単位で取り出すにはどう書けばいいですか?
> Get-ChildItem .\hoge.txt | Format-List | foreach {echo "[" $_ "]" }
[
ディレクトリ: C:\hoge
]
[
Name : hoge.txt
Length : 9
CreationTime : 2010/04/09 9:59:24
LastWriteTime : 2010/04/09 9:59:48
LastAccessTime : 2010/04/09 10:03:44
VersionInfo : File: C:\hoge\hoge.txt
InternalName:
OriginalFilename:
FileVersion:
FileDescription:
Product:
ProductVersion:
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language:
]
...
この Name Length を一行ずつ取り出したいのですが。。。

106 :名無し~3.EXE:2010/04/10(土) 02:54:20 ID:s6LqoGGj
>>104
ソース見ないとなんともだな

>>105
素直に Format-List Name, Length って書けばいいだけに見える

107 :名無し~3.EXE:2010/04/10(土) 14:47:57 ID:qVX8w621
特定のアプリケーションを強制終了させて、再起動させて、特定のボタンを押す。
というのを3時間周期で行わせたいのですが、こんなことってPowerShellでできますか?
WHSのほうがいいの?

108 :名無し~3.EXE:2010/04/10(土) 21:21:06 ID:QO8LRa4k
>>107

WASP

109 :名無し~3.EXE:2010/04/10(土) 22:19:25 ID:Ii5m8hz2
MSのサーバ製品、PowerShell経由で操作するように組み換えが進んでるよな。

110 :名無し~3.EXE:2010/04/11(日) 07:40:01 ID:C/2m2OR4
>>107
後は定期実行はタスクスケジューラに登録すれば何使ってもできる


余談だけどUIAutomationがPowerShellから直接は使えないってのは2.0でも直ってないんだな

111 :名無し~3.EXE:2010/04/11(日) 09:00:14 ID:UY8Q58om
特定のボタンを押す動作を自動化する方法がわかりません。
Windowsをアクティブにして、ボタンが3個目だとしたら、TABに相当するコードを
SendMessageすると良いと思うのですが、どうコーディングすれば良いのでしょうか?

112 :名無し~3.EXE:2010/04/11(日) 09:02:00 ID:UY8Q58om
>>111
あ、少し文章が抜けてました。
「TABに相当するコードを3回Sendmessageして、クリックに相当するコードをSend」

113 :名無し~3.EXE:2010/04/11(日) 10:54:06 ID:C/2m2OR4
>>111
WASP使ってみた?
ttp://wasp.codeplex.com/Wikipage

ボタンとして認識できれば、例えばこんな感じでできるはず
Select-Window プロセス名 | Set-WindowActive | Select-Control 押したいボタンに書かれてる文字 | Send-Click


114 :名無し~3.EXE:2010/04/13(火) 11:50:44 ID:Iz73pvAK
リンク切れ

01.インストール : PowerShell V2
"セットアップファイルの入手

 セットアップファイルは下記から入手することが出来ます。

http://www.microsoft.com/downloads/details.aspx?FamilyID=c913aeab-d7b4-4bb1-a958-ee6d7fe307bc&displaylang=en"

http://hiros-dot.net/psv2/introduction/install/install1.htm

115 :名無し~3.EXE:2010/04/13(火) 15:08:10 ID:Uap0i9xz
> "a`r`nb".split("`r`n")
a

b
> "a`r`nb".split("`r`n").count
3
> "a`r`nb" -split "`r`n"
a
b
> ("a`r`nb" -split "`r`n").count
2

ハマったぜ。。。


116 :名無し~3.EXE:2010/04/13(火) 18:46:12 ID:Uap0i9xz
function f
{
Write-Host $args.length
foreach ( $i in $args)
{
write-host $i
}
}
$opt = "1 2 3"
f $opt
--
1
1 2 3

引数をばらす方法ないですか?
--
3
1
2
3


117 :名無し~3.EXE:2010/04/13(火) 22:33:14 ID:GnqUuY0v
>>115

String.Split(Char[])
である。

"`r`n"はStringではなく、Char[]として解釈され、"`r"または"`n"で文字列を区切った
String[]を返す。"`r"と"`n"の間には何もないのだから、nullとなる。

PS> "a`r`nb".split("`r`n")[1] -eq "`0"
true

118 :名無し~3.EXE:2010/04/13(火) 22:36:45 ID:6bjeZuM3
>>115
-split 演算子は String.Split ではなく Regex.Split のラッパー
[Regex]::Split("a`r`nb","`r`n" )

>>116
"1 2 3" という文字列を渡してるのにばらけるわけなかろう
$a=1,10,20 という配列を作った後、分配演算子@を使って
& { $args.Count; $args } @a というふうに渡すことはできる

119 :名無し~3.EXE:2010/04/14(水) 11:44:05 ID:rEUM1djO
>>116
iex "f $opt"


120 :名無し~3.EXE:2010/04/14(水) 14:05:36 ID:rEUM1djO
PS> function f { $args.length; $args }
PS> f -
1
-
PS> f --
0
PS> f ---
1
---
PS> f "--"
1
--

hmm...


121 :名無し~3.EXE:2010/04/14(水) 14:41:42 ID:+TjhqZdm
regular syntax
command [-options...] [--] [arguments...]

122 :名無し~3.EXE:2010/04/14(水) 15:33:48 ID:rEUM1djO
-- は渡してくれないのね
自前でオプション解析しようと思ったら - 以外を使わんといかんな


123 :名無し~3.EXE:2010/04/14(水) 22:25:29 ID:TkMKnc/G
S

124 :名無し~3.EXE:2010/04/14(水) 22:30:43 ID:TkMKnc/G
諸先輩方に変数の展開について質問です
例えばスクリプト内で以下のようにコマンドを実行させたいのですが

> java -version

このようにするとうまくいきません

> $str = "sion"
> java -ver$str

こうするとうまくいくのですが

> $str = "version"
> java -$str

なぜでしょうか?
こんな面倒なことをわざわざしたいのではなく
スクリプトの中で変数を多用しているため
結果的にそうなったということなのですが・・・

125 :名無し~3.EXE:2010/04/15(木) 09:01:24 ID:pdomDtC+
>>124

「-$str」の「-」は演算子として解釈されるからだ。

PS> $c = 2
PS> -$c
-2

文字列には「-」で行える演算がない。「-」を文字として扱いたいならば、次のようにやればいい。

PS> $str = "version"
PS> java "-$str"
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

126 :名無し~3.EXE:2010/04/15(木) 20:22:11 ID:Fg5y7IZM
>>125
ありがとうございます

> $str = "sion"
> java "-ver$str"

で解決しました.
PSは高級なバッチファイルとして使っていたいたのですが
この仕様はちょっと不便というかなんというか

バッチファイル代わりに使うことが
そもそも間違っているのかもしれないですが

127 :名無し~3.EXE:2010/04/16(金) 00:15:32 ID:Dtr+HV6k
basicではストリング変数ってa$と、$が変数名の後ろにあったはずだが、
秀丸マクロの真似したのかね?


128 :名無し~3.EXE:2010/04/16(金) 07:25:38 ID:bNu/bwoq
>>127

むしろ、Perlでわ?

129 :名無し~3.EXE:2010/04/17(土) 14:56:45 ID:iUltzkHe
awkだろ

130 :名無し~3.EXE:2010/04/17(土) 15:03:03 ID:CFCnR5aa
ふつうにshからだろ

131 :名無し~3.EXE:2010/04/17(土) 17:44:26 ID:iUltzkHe
sh変数代入で$使わない

132 :名無し~3.EXE:2010/04/18(日) 01:42:53 ID:fgav3gbL
こんなオプションあったんだねぇ
別にprofile.ps1に各自書き込むでもいいような気がするが

Missing PowerShell.exe switch
https://connect.microsoft.com/PowerShell/feedback/details/552065/missing-powershell-exe-switch



133 :名無し~3.EXE:2010/04/20(火) 22:54:55 ID:Bp+yTs8R
あれ、PowerShell ISEでもchcpコマンド有効なんだ

PS > chcp
現在のコード ページ: 932

PS > [Text.Encoding]::UTF8.GetBytes("テスト:UTF8 ON POWERSHELL")| sc -enc Byte r:\utf8.txt

PS > cmd /c 'type R:\utf8.txt'
繝・せ繝茨シ夲シオ・エ・ヲ・・・ッ・ョ ・ー・ッ・キ・・・イ・ウ・ィ・・・ャ・ャ



PS > chcp 65001
Active code page: 65001

PS > cmd /c 'type R:\utf8.txt'
テスト:UTF8 ON POWERSHELL


これだとcmd.exeみたいに表示だけじゃなく日本語入力も普通にできる

134 :名無し~3.EXE:2010/04/20(火) 23:23:01 ID:Dtic/A0c
v2で話題のpowershell面白いな
wsusを管理するコード、他言語に移植する方法が分からんし
これで行くわ
勉強不足が身にしみるこのごろ

135 :名無し~3.EXE:2010/04/21(水) 01:01:38 ID:1lMH3tjx
PowerShell面白いよな。
それからCMD.EXEしかしらないバカどもを早く一掃してほしい。

136 :名無し~3.EXE:2010/04/21(水) 01:56:08 ID:YqB6HzOq
command.comしかわかりません><

137 :名無し~3.EXE:2010/04/21(水) 07:12:49 ID:iOp7hIHN
ほんとは、追加インストールが発生しない
vbscriptの方がいいに決まってる(ような気がするが)
リモート機能も強化されたし、試してみるわ

138 :名無し~3.EXE:2010/04/22(木) 01:51:21 ID:skW+f+mH
cmdから移行中なんだけど
ps1ファイルをコマンドラインから実行するのってどうやるの?

mycmd.ps1があって
>mycmd
と打つだけで実行できるようにしたい。
とりあえずpathextには追加したけどあとがよく分からない。

139 :名無し~3.EXE:2010/04/22(木) 13:03:04 ID:BDO7j1vb
>>138

http://www.atmarkit.co.jp/fwin2k/operation/psh02/psh02_01.html

140 :名無し~3.EXE:2010/04/28(水) 12:42:10 ID:KdgEBEan
 

141 :名無し~3.EXE:2010/05/01(土) 02:28:55 ID:VnvHJTPU
RubyからScalaに乗り換えた15くらいの理由
ttp://wota.jp/ac/?date=20100426#p01

こうして見ると随分PowerShellって言語仕様充実してるんだな

142 :名無し~3.EXE:2010/05/01(土) 20:22:36 ID:Xre7Udvb
F#ってどうよ

143 :名無し~3.EXE:2010/05/01(土) 21:09:18 ID:gE8QYFFq
PowerShellはかなりいい出来だよな。
2.0になってリモートコールもできるしサーバ管理は楽になったんじゃないの
もうちょっとコマンドレットが覚えやすいといいんだけどね。

マクロの記憶じゃないけど、GUIから操作した結果をコマンドレットを取得できるような仕組みがあると良い

144 :名無し~3.EXE:2010/05/02(日) 00:35:39 ID:X4eUIgxV
Exchangeとかのサーバー製品はそんな感じだね

145 :名無し~3.EXE:2010/05/02(日) 13:12:05 ID:O3PUj0U0
Exchangeあたりのコマンドレットはオプションありすぎで、やや扱いにくい。
まぁしょうがないかもだけど

146 :名無し~3.EXE:2010/05/02(日) 13:15:15 ID:h326HOPJ
慣れの問題だよ

147 :名無し~3.EXE:2010/05/03(月) 09:30:57 ID:jR1qyiHO
ここ見てPowerShellを.NET 4.0で動くようにしてみた
ttp://stackoverflow.com/questions/2094694/launch-powershell-under-net-4

Get-ChildItemがチートされてたのと、ISEフォントが滲まなくなったので、俺大歓喜

148 :名無し~3.EXE:2010/05/03(月) 11:02:06 ID:jR1qyiHO
う〜ん、単純に↓を速度比較すると(cmd.exe起動終了のロスはあるにしても)完全に逆転してるなぁ・・・
.NET4.0おそロシア
cmd /c "dir c:\ /s/b"
[IO.Directory]::EnumerateFileSystemEntries("C:\", "*", "AllDirectories")


149 :名無し~3.EXE:2010/05/03(月) 11:47:30 ID:fnTpC8sm
.NET4に対応したPowerShellてそのうちリリースされるん?


150 :名無し~3.EXE:2010/05/03(月) 15:41:12 ID:i9nVnGyI
>>149
今の状態でも>>147にある通りレジストリ設定すれば.NET4で動くよ

151 :名無し~3.EXE:2010/05/03(月) 16:22:13 ID:WSFaNxwg
ps2って拡張子.ps2なの?

152 :名無し~3.EXE:2010/05/03(月) 16:52:05 ID:i9nVnGyI
うんにゃ、ps1のままだよ

153 :名無し~3.EXE:2010/05/03(月) 19:06:50 ID:AVtpFLY0
powershellってMacOSで言うターミナルみたいなもの?
「Windowsってコマンドプロンプトだろ?プププ」みたいなことをマカーに言われたけど、実はpsならターミナルよりすごい?


154 :名無し~3.EXE:2010/05/03(月) 19:11:01 ID:AVtpFLY0
↑に追加
ターミナルってなんと言うかtelnetとかviとかMacPortsとかいろいろ使えて、ただのシェルスクリプト環境だけじゃない総合的なCUI環境というイメージ(あくまでも使ったこと無いのでイメージ)だけど、それに匹敵するもの?
それともpowershellってシェルスクリプト部分だけがすごいの?
無知ですまんが教えてください

155 :名無し~3.EXE:2010/05/03(月) 19:30:06 ID:xcTd/iME
キャラクタベースなんて時代遅れ。
psはオブジェクトベースです。

という建前。

156 :名無し~3.EXE:2010/05/03(月) 19:30:10 ID:4lqyciuh
>>147 のはPS以外の.NETプログラム(Paint.NETとかRadeonのコンパネとか)にも
強制的にCLR4.0を使わせる物。
PowerShellだけなんとか…と思ったらこんなのがあった。
HKLM\Software\Microsoft\PowerShell\1\PowerShellEngine
の RuntimeVersion を
v2.0.50727
から
v4.0.30319
に書き換えるとPowerShellがCLR4.0を使うようになる。
でもISEは2.0のまま。どこに設定あるんだ…。

157 :名無し~3.EXE:2010/05/03(月) 19:30:46 ID:WSFaNxwg
>>152
ありがとう。

PS自体のバージョンに関係なく、言語仕様が大幅に変更され互換性が維持できなくなるまで1のままってことなのかな。
拡張子にバージョンにいれるのってあんまり意味ない気がするな。

158 :名無し~3.EXE:2010/05/03(月) 20:10:34 ID:i9nVnGyI
エイリアスフォントが使えるようになって初めてISE使ってみよっかなって思った香具師の数 ノシ
これでFixedSysが使えればもう何も文句ないな


>>156
>>147のところに併せて書いてある$psHome\powershell_ise.exe.configを作れって話で
<supportedRuntime version="v4.0.30319" />
にしたら動いたよ

159 :名無し~3.EXE:2010/05/03(月) 21:00:01 ID:W6wdXkQC
>>154
何を言ってるのかわからんが、コマンドプロンプトでもtelnetもvim(自分で入れれば)も使えるよ
yumやMacPortsのようなパッケージシステムは基本的にない
対話型シェルとしては十分高機能

160 :名無し~3.EXE:2010/05/03(月) 21:08:42 ID:4lqyciuh
>>158
なんか手法がside-by-sideみたいなやっつけ仕事的で嫌だなぁw

161 :名無し~3.EXE:2010/05/03(月) 21:45:32 ID:i9nVnGyI
>>160
試しに$psHome\powershell.exe.configを作って同じようにバージョン指定したら
powershell.exeもconfig側の設定に従うようになった
あくまでもPowerShellのデフォルトを設定するのがレジストリのPowerShellEngineなのかも、そうじゃないのかも

というかこの辺りは2,3年前に公式ブログで言っていたような気がするような、しないような

162 :名無し~3.EXE:2010/05/03(月) 23:54:48 ID:1Dncdezy
>>157
UNIXを少しでも使う人であれば
PSと言えばPostScriptを連想するはず
敵対(?)フォーマットを潰すべく
PostScriptに喧嘩を売っているような
でも実はそこまで勇気はなくて拡張子をps1としたような
なんか微妙・・・と思うのは俺だけ?

個人的には.psと紛らわしいのであんまり好きじゃない

163 :名無し~3.EXE:2010/05/04(火) 00:05:36 ID:YTxCzC0Z
Windowsで、PostScriptつかってる輩はすくないとおもうが
なんでPS1にしたんだろうね。

164 :名無し~3.EXE:2010/05/04(火) 00:34:44 ID:2Ao35uaC
PSで思い浮かぶのはPlayStationとかPS/2端子とかじゃね
PostScriptとか(TeX並みに)何年も聞いてないわ

165 :名無し~3.EXE:2010/05/04(火) 08:51:35 ID:Aze2SaAV
.psh にしろよと思ったけど既に変なアプリで使われてるのか
拡張子もwell-knownポート並みに狭苦しい世界だな

166 :名無し~3.EXE:2010/05/04(火) 08:54:34 ID:8rzEvCav
.windowspowershellscriptfile

でいいんじゃない?

167 :名無し~3.EXE:2010/05/04(火) 12:26:17 ID:2Ao35uaC
んじゃwpsで…と思ったらMicrosoft Worksですか。
# Workplace Shellとか思い浮かべたらオッサン。

168 :名無し~3.EXE:2010/05/04(火) 18:54:17 ID:+9czDxOY
.ps1の1はバージョンを指してる訳じゃないのかもしれない

169 :名無し~3.EXE:2010/05/04(火) 22:05:46 ID:+1R8fawb
powershellでMS DHCPをコントロールする方法が見つからない
フィルタをインポートするツールは落ちてるのに
PSで実施する方法が出てない
MSDNのどこかにありますか?

170 :名無し~3.EXE:2010/05/05(水) 02:13:24 ID:4NtCtyvS
みるみるの(キリッかわいいよみるみるううう

171 :名無し~3.EXE:2010/05/05(水) 02:15:04 ID:4NtCtyvS
あ、ごめん誤爆

172 :名無し~3.EXE:2010/05/11(火) 23:44:53 ID:YPiBSwhe
Group-Objectってあらゆるオブジェクトに対する重複削除にも使えるな・・・やはりGroup-Objectは素晴らしい

173 :名無し~3.EXE:2010/05/12(水) 02:09:19 ID:zUE6ikTV
GUIデバッガマダー

174 :名無し~3.EXE:2010/05/12(水) 05:35:03 ID:WwXi9ysC
Windows2008r2に付いてきてるあれは?
使った事ないけど

175 :名無し~3.EXE:2010/05/12(水) 05:43:47 ID:WwXi9ysC
Excelヘルプ並みのヘルプを付けてくれると普及すると思うんだが
開発系ツールだからダメなのか
phpとか出た当初からヘルプ見やすかったのに

176 :名無し~3.EXE:2010/05/12(水) 07:00:21 ID:68JY7Il4
結構立派なヘルプ付いてるじゃん

177 :名無し~3.EXE:2010/05/12(水) 22:12:32 ID:rHrZ7Sf7
>>175
get-help

178 :名無し~3.EXE:2010/05/14(金) 10:57:07 ID:zF+HvHO/
前スレだかにget-helpを再帰的に呼んで行ってhtmlにするスクリプトあったね

179 :名無し~3.EXE:2010/05/14(金) 21:09:36 ID:G4hJCY3A
v2からは普通にあるんだから別段作らんでもええがな

180 :名無し~3.EXE:2010/05/16(日) 20:21:17 ID:qsYFZMF1
Windows PowerShell: まずはマニュアルを書く
http://technet.microsoft.com/ja-jp/magazine/ff458353.aspx

181 :名無し~3.EXE:2010/05/17(月) 01:22:05 ID:5n7Sr2/a
/nsoftwareのPowerShell SSH Serverが個人ユースフリーになったぽい
ttp://www.powershellinside.com/powershell/ssh/

182 :名無し~3.EXE:2010/05/22(土) 14:43:03 ID:XfHQXv+A
echo 日本語 | app.exe
で日本語が???になるんだけど、どうすりゃいいの?

183 :名無し~3.EXE:2010/05/22(土) 15:27:14 ID:XfHQXv+A
できました!

184 :名無し~3.EXE:2010/05/22(土) 16:15:52 ID:wfP7yr4f
どうやってできたの?

185 :名無し~3.EXE:2010/05/22(土) 17:12:35 ID:XfHQXv+A
cmd.exe /c "echo 日本語 | app.exe"

186 :名無し~3.EXE:2010/05/22(土) 18:26:36 ID:YLwM0Qx3
$OutputEncoding = [Console]::OutputEncoding
としとくと素のままで使えると思うよ

187 :名無し~3.EXE:2010/05/22(土) 20:49:30 ID:g5B6QkZY
>>181
Free for Desktop use の意味がよくわからんかったけど
ようするにPowerShellSSHServer.exeを起動させた時の
アカウント名とそのパスワードでしか認証接続できないってことみたいだな

それはともかく日本語表示の設定誰か分かったら教えて、ターミナルはなんでもいいから

188 :名無し~3.EXE:2010/05/23(日) 14:19:36 ID:xqBacfrQ
基本的なことを教えてください
Windows 7 に標準でインストールされるPSバージョンは2.0ということで、
じっさい $PSVersionTable でも2.0が確認できるのですが、
何でv1.0というシステムフォルダにインスコされてるのでしょーか?
ずっとver1.0と思ってた・・・orz
XPは同じフォルダで1.0しかインスコされないし。

ここらへんの経緯をどなたかご教示ください

189 :名無し~3.EXE:2010/05/23(日) 14:22:20 ID:WJgx1Mvj
拡張子の.ps1同様、フォルダ変えるほどの差がない
ただの上書きバージョンアップ版って認識なんじゃねーの
知らんけど

190 :名無し~3.EXE:2010/05/23(日) 17:19:17 ID:W2D4uAW/
元はps1 v1.0 ps2 v2.0と分ける予定だったんだけど方針変更したんだろ

191 :名無し~3.EXE:2010/05/23(日) 19:01:14 ID:CuvsPWBl
>>188
俺もインストールに失敗してんじゃないかとか微妙に気になってた

192 :名無し~3.EXE:2010/05/23(日) 23:56:06 ID:5QmIWdcn
64bitになってもsystem32なんだし、気にするな。

193 :名無し~3.EXE:2010/05/24(月) 00:25:49 ID:U25k7xKb
ところでpowershell.exe -argsはどう使う?どうやってもエラーになるが

194 :名無し~3.EXE:2010/05/24(月) 00:44:20 ID:cKjgVFLg
>>193
ちゃんとPowerShellから実行してる?
powershell -Command { echo $args[0] $args[-1] } -args @(1..10)
でできたよ

195 :名無し~3.EXE:2010/05/24(月) 00:59:53 ID:U25k7xKb
さんきゅうです

196 :名無し~3.EXE:2010/05/25(火) 23:41:16 ID:bgs3trjf
コマンドプロンプトのbatファイルくらいしか分からないへたれユーザーなんですが、
業務の定型フロー(簡単なもの)を自動化してみたくてPSに興味が出てきました。

で、ちょっと触ってみたんですが、.NETフレームワークとかオブジェクト指向的考え方に不慣れで戸惑っております・・・

こんな初心者向けに良い教本とかサイトとかありますでしょうか?

197 :名無し~3.EXE:2010/05/25(火) 23:55:32 ID:RqU7Sdwv
サイトは知らんがWindows PowerShell実践システム管理ガイドは良書だと思う。
個人的にはウェブサイトよりは、良書を1回ナナメ読みをオススメするけどね。
.

198 :名無し~3.EXE:2010/05/26(水) 00:04:59 ID:RqU7Sdwv
ADとかExchangeなんかの構成を自動化するニーズはあるんだけど・・・
現実にはまだPowerShellだけで十分ではないんだよね

まだまだVBScriptのほうがネットに乗ってるのが多いし手軽いのかも。


199 :名無し~3.EXE:2010/05/26(水) 01:43:27 ID:nHSfZDXj
ありがとうございます。
現時点ではサーバー管理用途が多いんでしょうか。
PSは将来性が凄くありそうなので、どうせ学ぶならという気持ちもあるんですが、
自分みたいな初心者には、情報の多いVBの方が今の段階では良いのかもですね。
ご紹介頂いた本も探しつつ、VBも検討してみます。どうもでした!


200 :名無し~3.EXE:2010/05/26(水) 21:29:51 ID:9VJjYqhX
>>197
どういうところが良書なの?
上級者向けの良書だったら俺みたいのは
手が出ないから詳細を聞きたい

201 :名無し~3.EXE:2010/05/28(金) 03:11:28 ID:NpVekdmh
WINDOW 7 64で使おうとしてるんですが

IE 32bit版を非表示起動させるにはどうしたら書けばいいでしょうか?



202 :名無し~3.EXE:2010/05/28(金) 15:48:48 ID:K9v1827P
相談にのってけろ・・・

文字コードがeucのファイルを一括置換したいんのだけど、
powershellだとリダイレクト出力時にunicodeになってしまう・・・

out-fileコマンドレットを使うと、-encoding defaultにすると
うまく行きそうでしたけど、改行コードが\r\nに勝手に変換されてしまう・・

どうしたらいいんだろ、

203 :名無し~3.EXE:2010/05/28(金) 19:21:16 ID:IOZzcCUH
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/1012pschcode/pschcode.html
この中で改行文字を変更すればよい

204 :名無し~3.EXE:2010/06/03(木) 17:50:33 ID:NlLzN6pa
ファイル名に中カッコ([or])を含む場合、どうやって指定したらいいのん?
[Test].txtというファイルがあるとして、Test-Path "[Test].txt"だとFalseが返ってくる。
""や''でくくってもダメだし、[]を含ませるにはどう記述したらいいんでしょう?
(Get-ChildItemで返されてきた場合なんかも含む)

205 :名無し~3.EXE:2010/06/03(木) 19:44:33 ID:fFk8NoFR
>>204

-Path ではなく、 -LiteralPath を使う。

206 :名無し~3.EXE:2010/06/04(金) 00:32:22 ID:0eksM06N
>>205
記述の仕方じゃなく、オプションだったのか orz
教えてもらったオプションで、期待通りの動作をしてくれました。
どうもありがd

207 :名無し~3.EXE:2010/06/04(金) 19:36:49 ID:3xu9Ih61
すいません
wikiの
PS> $rssUrl = "http://blogs.msdn.com/powershell/rss.aspx"
PS> $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl)
PS> $blog.rss.channel.item | select title -first 8
を実行すると2行目で
値 "
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          略
" を型 "System.Xml.XmlDocument" に変換できません。エラー: "リモート サーバーがエラーを返しました: (503) サーバーを使用
できません"
発生場所 行:1 文字:62
+ $blog = [xml](new-object System.Net.WebClient).DownloadString <<<< ($rssUrl)
+ CategoryInfo : NotSpecified: (:) []、RuntimeException
+ FullyQualifiedErrorId : RuntimeException
て出てくるんですけど。
xmlとかは良く解らないんですが、解決法は有りませんか

208 :名無し~3.EXE:2010/06/04(金) 23:04:08 ID:3xu9Ih61
自分で
$a =[xml]"<aaa>ssss</aaa>"
てやったらキャスト出来たから
元のが悪いのかな??

209 :名無し~3.EXE:2010/06/04(金) 23:25:13 ID:cAvBQvci
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
とかがなんでxmlにキャストできるんだよ

210 :名無し~3.EXE:2010/06/05(土) 03:10:02 ID:YmnKnoMR
>>209
言ってる意味が解りません。


211 :名無し~3.EXE:2010/06/05(土) 03:24:48 ID:rZ1ELnDu
取得してる文字列がそもそもXML(RSS)じゃないってこと
(XHTMLでも構文エラーがなければXMLとしてパースできるかもしれないが)
実際にそのURIにアクセスしてみなよ
リダイレクトしてRSSに飛ぶから

212 :名無し~3.EXE:2010/06/05(土) 18:52:31 ID:YmnKnoMR
之でいけたけど
$enc = [System.Text.Encoding]::GetEncoding("utf-8")
$rssurl="http://headlines.yahoo.co.jp/rss/jct_dom.xml"
( [xml]$enc.getstring((New-Object system.net.WebClient).DownloadData($rssurl)) ).rss.channel.item | select title -first 8

title
-----
20代女性の6割が「猫背」  「外反母趾」や「むくみ」と関連(J-CASTニュース)
菅次期首相週明けに組閣 「反小沢色」強まる(J-CASTニュース)
FM最長寿番組「ジェットストリーム」 JALが「1社単独提供」断念(J-CASTニュース)
「相談して決めること多い」 菅代表歯切れの悪い記者会見(J-CASTニュース)
物議を醸す「ザ・コーヴ」 配給会社は「上映続行したい」(J-CASTニュース)
鳩山氏「子分に裏金」疑惑 民主代表の座カネで買う?(J-CASTニュース)
「小幅入れ替え」菅新内閣 サプライズは蓮舫議員?(J-CASTニュース)
次期首相有力の菅副総理 「イラ菅」へ戻る?「無心の境地」?(J-CASTニュース)

手間掛けさせやがって、糞wikiがww
powershellは早々に消すわw

213 :名無し~3.EXE:2010/06/10(木) 22:55:10 ID:Mm67oFQ6
PowerShellは来年ぐらいに流行るとみた。

214 :名無し~3.EXE:2010/06/11(金) 09:56:41 ID:Ik/gYtIn
すごいねみんな、こんなわけのわからんもんよく使えるね。
俺なんてパワーシェルで使ったコマンドなんてipconfig, ping, mstscぐらいだよ。

215 :名無し~3.EXE:2010/06/11(金) 20:03:12 ID:7BoDCoVI
俺はバッチファイル書ける人を尊敬する
あれは俺には難しすぎた・・・

216 :名無し~3.EXE:2010/06/11(金) 22:28:15 ID:NNhbT/to
バッチファイルって
自信ではバージョンチェックとかの機構が無いのに
forとかの制御構造が、OS毎に違った気がする
嫌になった

217 :名無し~3.EXE:2010/06/12(土) 09:52:57 ID:6Wusi+SX
想定する最低レベルの環境に合わせて書けばいいだけのこと。

218 :名無し~3.EXE:2010/06/12(土) 14:52:56 ID:ckmjuK9i
拡張機能使ったところで、インチキパイプ、クォートなどの致命的な欠点は残ったままだし。

219 :名無し~3.EXE:2010/06/14(月) 00:02:57 ID:Pwrq3a+g
212ですが
>powershellは早々に消すわw
は無しにしてください。
つい粋がって虚勢を張ってしまいました。
とり合えず今は、エロブログの画像ダウンローダーを作ってます。


220 :名無し~3.EXE:2010/06/14(月) 22:50:35 ID:Cu4c6uqs
起動のたびに nal more.com less.exe を打つのが面倒
署名をつけて自動実行させるのはもっと面倒

221 :名無し~3.EXE:2010/06/14(月) 23:15:34 ID:mF0aQWMH
powershell -NoExit "好きなコマンド"
ってしといたショートカット作ればいいんじゃね

222 :名無し~3.EXE:2010/06/15(火) 20:51:39 ID:io5tR8aY
>>221
なるほど
"好きなコマンド" のところで cat して iex することで
ファイル読み込ませることにしました

223 :名無し~3.EXE:2010/06/15(火) 22:01:46 ID:uCC7LZUO
powershellはコマンドライン用というよりはそれでソフトウェア作る用なんじゃないか
書き捨てで書き殴るには複雑すぎる

224 :名無し~3.EXE:2010/06/15(火) 23:16:49 ID:io5tR8aY
ウィンドウの幅を変えるために
$Host.UI.RawUI.WindowSize
をいじってもうまくいかなかったから、
しばらく mode.com を使っていたけれども
単に値型の罠で動いていなかっただけだったわ

225 :名無し~3.EXE:2010/06/15(火) 23:20:18 ID:io5tR8aY
# [string]::Join("`n", @(cat C:\hoge\Init-PowerShell.ps1)) | iex
sal more.com less.exe
function width([int]$w=0){
  if($w -le 0) {
    return $Host.UI.RawUI.WindowSize.Width;
  }
  $ws = $Host.UI.RawUI.WindowSize;
  $bs = $Host.UI.RawUI.BufferSize;
  $ws.Width = $w;
  $bs.Width = $w;
  if ( $w -gt $Host.UI.RawUI.BufferSize.Width) {
    $Host.UI.RawUI.BufferSize = $bs;
    $Host.UI.RawUI.WindowSize = $ws;
  } else {
    $Host.UI.RawUI.WindowSize = $ws;
    $Host.UI.RawUI.BufferSize = $bs;
  }
}
function height([int]$h=0){
  if($h -le 0) {
    return $Host.UI.RawUI.WindowSize.Height;
  }
  $ws = $Host.UI.RawUI.WindowSize;
  $ws.Height = $h;
  $Host.UI.RawUI.WindowSize = $ws;
}
function title([string]$t="") {
  if($t -eq "") {
    return $Host.UI.RawUI.WindowTitle;
  }
  $Host.UI.RawUI.WindowTitle = $t;
}

226 :名無し~3.EXE:2010/06/15(火) 23:40:00 ID:io5tR8aY
コマンドラインから改行がうまく渡す方法が分からないなあ

とりあえず Environment.NewLine で逃げてみるか
powershell.exe -NoExit -Command "[string]::Join([Environment]::NewLine, @(cat C:\hoge\Init-PowerShell.ps1)) | iex"

227 :名無し~3.EXE:2010/06/15(火) 23:52:00 ID:io5tR8aY
cat で頑張らなくても [System.IO.File]::ReadAllText なんてのがあるのね

powershell.exe -NoExit -Command "iex $([System.IO.File]::ReadAllText('C:\hoge\Init-PowerShell.ps1'))"

最初は cat hoge.ps1 |% { iex $_ } でやっていたせいでそれに引きずられちゃった

228 :名無し~3.EXE:2010/06/20(日) 01:21:27 ID:yv5OOOJL
少々質問よろしいでしょうか。

古いファイルを指定したフォルダと日付から検索するスクリプトをpowershellで組もうとして、
そこにエラーメッセージを入れようとするとうまくいかないのですが誰かわかるでしょうか。
今手元にファイルをもってなく、直接打ち込んでいるのでスクリプト誤字はご容赦ください。

function f ([Strings]$a, [datetime]$b)
{
Get-ChildItem $a | ? {$_.CreationTime -le $b}
}

こんなかんじで作ったのですが、これにif文をいれて、アドレスと日時が入力されていないときに
エラーが出るようにしよう、としたのですが…

.countを使って、
function 以下略{
if( ($a.count + $b.count) -eq 2 )
{前述のスクリプト}else{
エラーメッセージ}
}

のようにすると、
if( ($a.count + $b.count) -eq 2 )が間違いだと思うのですがエラーメッセージしか返って来ません。

function f ( $args )
if ( $args,count -eq 2)
とする場合、
前述のスクリプトの{$_.CreationTime -le $b}を{$_.CreationTime -le [Datetime]$arg[1]}
とでもすればいいのでしょうが、
こうするとdatetime形式に$arg[1]が変換できない、のようなエラーを吐かれてしまいます。
自分の腕の未熟さはわかりましたので別の条件でエラーメッセージを出すことにしたのですが、
if( ($a.count + $b.count) -eq 2 ) や [datetime]$arg[1]などはどうして間違いなのかを教えていただきたいです。

229 :[名無し]さん(bin+cue).rar:2010/06/20(日) 02:04:35 ID:vRT9KUoq
>>228
[String"s"] とか $arg"s" に対して $arg[1] だったりは
打ち込み直したから間違えただけなのか
原本でも間違えてるからエラーになってるのか分からない

function f ( $args ) はおそらく自動変数の $args を
使おうとしてるんだろうとは思うけど
自動変数だから引数で使おうとしちゃ駄目だよ

あと、その変数に .count プロパティが有るかないか
あるとしたらどんな値を返すか位は見ておかないと。

それが終わったら ISE からヘルプ開いて
about_Functions_Advanced と
about_Functions_Advanced_Parameters の Mandatory 属性のところを読むといいと思うよ


230 :名無し~3.EXE:2010/06/20(日) 08:56:11 ID:yv5OOOJL
>>229
ありがとうございました。
参考にしてもらいます。

231 :名無し~3.EXE:2010/06/20(日) 14:56:42 ID:kQIbsBAe
誰に?

232 :名無し~3.EXE:2010/06/21(月) 10:51:48 ID:6O7Jc+Lc
>>228

function f([Strings]$a, [datetime]$b){
  if(!$a -or !$b){return "パラメータを的確に入力せよ"}
  Get-ChildItem $a | ? {$_.CreationTime -le $b}
}

233 :名無し~3.EXE:2010/06/21(月) 21:13:15 ID:2HQSeV/1
>>232
ありがとうございます。

>>231
誤字です。申し訳ないです。

234 :名無し~3.EXE:2010/06/24(木) 03:23:08 ID:5SRaAOCa
$list = get-content -path list.txt
$now = get-date
$list += $now
set-content -path list.txt $list

ファイルからテキストデータを取得して
一行追加して保存するというコードを書いたところ
改行されず行の末尾にどんどんデータが追加されていってしまいます。
不思議なことにエディタを使って手動で改行してやると
次の追加からはちゃんと改行が挿入されます。

テキストファイルと文字列配列の相互変換というのはどうやるのが正しいんでしょうか。
add-contentを使うやり方はうまくいきましたが
それとは別に一旦メモリにロードして書き戻す
正しいやり方が知りたいです。

235 :名無し~3.EXE:2010/06/24(木) 06:56:52 ID:QDFSa6c3
>>234

Get-Dateの結果は「文字列」じゃないですよ。

236 :名無し~3.EXE:2010/06/24(木) 07:06:57 ID:rafA90NF
Get-Date なんてあったのか
UNIX と合わせて date のエイリアスを振っといてもらわんと存在に気付かんよ

まったく [DateTime]::Now とかしていた俺って

237 :名無し~3.EXE:2010/06/24(木) 07:24:14 ID:Rytf+gds
date で呼び出せるがな実際

238 :名無し~3.EXE:2010/06/24(木) 07:36:52 ID:rafA90NF
cmd.exe なら date があるけれども powershell に date ってある?
gcm date としても GnuWin32 の date.exe しか出てこない

239 :名無し~3.EXE:2010/06/24(木) 20:47:47 ID:VUPiF+zq
http://kazemati.blogspot.com/2008/10/powershellexcel.html

ここを参考にして、
$sheet.Cells.Item(1,1).Text
の行を
for each ($i in (1...5) {$sheet.cells.Item($i,1).text}
と書き換えて
エクセルファイルのA1〜A5を表示させることに成功したのですが、
さらにここにifや?を組み込んで特定の文字列が含まれる場合のみ表示、としたいのですが
その場合はどうすればよいでしょうか?

.textがどういうものなのかも検索してもよくわからなく、どうすればよいのか…

240 :名無し~3.EXE:2010/06/24(木) 22:15:25 ID:yPssf1TG
>>238
date って打ち込んで試せば分かることですがな
前スレでも話題になってた気がする

PS> function get-bakeratta { "バケラッタ" }
PS> bakeratta
バケラッタ

>>239
何が分からないのか良く分からないけど
文字列の比較の仕方が分からないなら
ヘルプの about_Comparison_Operators 見るといいよ

241 :名無し~3.EXE:2010/06/24(木) 22:32:20 ID:O4Gzwtog
>>240
date.exe が邪魔してるよおおおお

PS C:\> get-date; date

2010年6月24日 22:31:41
木 6 24 22:31:41 Tokyo Standard Time 2010

242 :名無し~3.EXE:2010/06/24(木) 23:01:52 ID:uEkEIR0P
>>241
うちの環境では普通にget-dateとして機能するなあ
PowerShell 2.0 / Windows 7 x64

PS C:\> get-date; date; date -displayhint time; (date).AddHours(12)

2010年6月24日 22:58:40
2010年6月24日 22:58:41
22:58:41
2010年6月25日 10:58:41

243 :名無し~3.EXE:2010/06/24(木) 23:10:52 ID:O4Gzwtog
>>242
>240のは動くんだけれどもPATHの通っているところに date.exe があるから
date を入力しても Get-Date にならずに date.exe になってしまうのよ。

PS C:\> function get-explorer{"explorer"}
PS C:\> explorer
とやると get-explorer 関数が呼ばれずに Explorer が起動しちゃう。

244 :名無し~3.EXE:2010/06/24(木) 23:38:30 ID:uEkEIR0P
なるほど、>>238でいってるGnuWin32のdate.exeが入ってるからか
そうなるとPATHを一時的に消すか、エイリアス設定するしかないんじゃね

PS C:\Users\ise> function get-explorer{"エクスプローラー"}
PS C:\Users\ise> set-alias explorer get-explorer
PS C:\Users\ise> explorer
エクスプローラー

245 :名無し~3.EXE:2010/06/24(木) 23:39:23 ID:uEkEIR0P
うお、ユーザー名orz

246 :名無し~3.EXE:2010/06/24(木) 23:42:37 ID:yPssf1TG
別に困ってるわけではなさそうだし今のままでいい悪寒
デフォルトの環境だと date は Get-Date として機能するっだけての話しだし

247 :名無し~3.EXE:2010/06/25(金) 00:17:05 ID:Lav4+jgv
暇なんでaboutとコマンドレットをhtml化するのを作ってみますた。
index.htmlのおまけ付きです。
pspのブラウザーで見ながら出きるので便利です。


$dna ="about_html"
$dnc ="Cmdlet_html"

new-item -name $dna -type directory | out-null
foreach ($a in (Get-ChildItem -path "$pshome/ja" | ? { $_.name -like "about*"})){
$base = ((Get-ChildItem "$pshome/ja/$a").OpenText()).Readtoend()
$base = "<pre>" + (($base.Replace("<","<")).Replace(">",">")) + "</pre>"
convertTo-Html -body $base -Title $a.name > ($dna+"/"+$a.name+".html")
$ind = $ind + "<A href=`""+$a+".html"+"`" >"+$a.name+"</A><br>"
}
convertTo-Html -body $ind -Title "about_index" > ($dna+"/index.html")

$base = "";$ind = ""

new-item -name $dnc -type directory | out-null
foreach ($a in (Get-Command -CommandType Cmdlet)){
$base = Get-Help $a.name -full | out-string
$base = "<pre>" + (($base.Replace("<","<")).Replace(">",">")) + "</pre>"
convertTo-Html -body $base -Title $a.name > ($dnc+"/"+$a.name+".html")
$ind = $ind + "<A href=`""+$a+".html"+"`" >"+$a.name+"</A><br>"
}
convertTo-Html -body $ind -Title "Cmdlet_index" > ($dnc+"/index.html")

248 :名無し~3.EXE:2010/06/25(金) 00:22:14 ID:Lav4+jgv
すいません
$base.Replace("<","<")).Replace(">",">")
  ↑のリプレスの二番目の引数はそれぞれ
<は&lt;
>は&gt;
です。
ごめんちゃい

249 :名無し~3.EXE:2010/06/25(金) 00:46:24 ID:xbzcwe7U
iseさん…

250 :名無し~3.EXE:2010/06/25(金) 00:47:40 ID:mSLJKvLX
PowerShell ISE さん
さすがだ

251 :名無し~3.EXE:2010/06/25(金) 20:43:54 ID:0/U66yua
ttp://journal.mycom.co.jp/column/powershell/010/index.html

-join と -ReadCount はもっと評価されるべき
type address.txt -r 5 | % { $_ -join "," }

252 :名無し~3.EXE:2010/06/27(日) 09:09:08 ID:JCAKYY/N
Get-Location と
[System.IO.Directory]::GetCurrentDirectory() は、
値違うんですね。
と言うか、PowerShellで Set-Location しても、
System.IO.Directory で管理しているカレントディレクトリは変更しない、
と言うべきかな。

IO.StreamWriter 調べていて気がついた、です。

253 :名無し~3.EXE:2010/06/27(日) 12:48:20 ID:K3nSxfR1
>>252
リネームするために FileInfo#MoveTo 使ったら痛い目にあったことあり

254 :名無し~3.EXE:2010/06/29(火) 22:56:22 ID:dyF8Lcp7
VistaのWindows UpdateにPowershell 2.0が来てる

255 :名無し~3.EXE:2010/07/06(火) 00:31:42 ID:kPA7wvIt
暇なんで、作ってみますた
[void][Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
[void][Reflection.Assembly]::LoadWithPartialName("System.Runtime.InteropServices")
function New-PType() {
$assembly_name = New-Object Reflection.AssemblyName 'PInvokeAssembly'
$dd_assembly = [AppDomain]::CurrentDomain.DefineDynamicAssembly($assembly_name, 'Run')
$dd_module = $dd_assembly.DefineDynamicModule('PInvokeModule')
return $dd_module.DefineType('PInvokeType', "Public,BeforeFieldInit")
}
function New-PMethod([string]$dllName, [Type]$returnType, [string]$methodName, [Type[]]$parameterTypes){
$ptype = New-PType
$d_method = $ptype.DefineMethod($methodName, 'Public,HideBySig,Static,PinvokeImpl', $returnType, $parameterTypes)
$constructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([string])
$attrbute = New-Object Reflection.Emit.CustomAttributeBuilder $constructor, $dllName
$d_method.SetCustomAttribute($attrbute)
$type = $ptype.CreateType()
$type = Add-Member -InputObject $type -MemberType NoteProperty -Name MethodName -Value $methodname -passthru
$invoke = {return $this.InvokeMember($this.MethodName, 'Public,Static,InvokeMethod', $null, $null, $args[0])}
Add-Member -InputObject $type -MemberType ScriptMethod -Name Invoke -Value $invoke
return $type
}
$ptc = @'
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
'@

256 :名無し~3.EXE:2010/07/06(火) 00:32:35 ID:kPA7wvIt
続き
Add-Type -TypeDefinition $ptc
$WindowFromPoint = New-PMethod "user32.dll" ([Int32]) "WindowFromPoint" @([POINT])
$PostMessage = New-PMethod "user32.dll" ([Int32]) "PostMessage" @([Int32],[Int32],[Int32],[Int32])
$GetAncestor = New-PMethod "user32.dll" ([Int32]) "GetAncestor" @([Int32],[Int32])
$pt = New-Object POINT; $ptb = New-Object POINT

while($true){
$pt.x= [System.Windows.Forms.Cursor]::Position.x
$pt.y= [System.Windows.Forms.Cursor]::Position.y
start-sleep -m 50
if(($pt.x -ne $ptb.x) -or ($pt.y -ne $ptb.y )){
$ptb.x=$pt.x; $ptb.y=$pt.y
$hwd = $WindowFromPoint.Invoke([POINT]$ptb)
$ohwd = $GetAncestor.Invoke(@([int32]$hwd ,[int32]3))
$t = Get-Process | ? { $_.MainWindowHandle -eq $ohwd}
"x="+$ptb.x+":y="+$ptb.y+" ハンドル"+$hwd+" 親ハンドル"+$ohwd+": "+$t.MainWindowTitle
#コントロールをクリック
#$PostMessage.Invoke(@([int32]$hwd ,[int32]0x201,[int32]0,[int32]0)) | out-null
#$PostMessage.Invoke(@([int32]$hwd ,[int32]0x202,[int32]0,[int32]0)) | out-null
}
}

257 :名無し~3.EXE:2010/07/06(火) 13:20:47 ID:Z4Ex5Sa1
テキストファイルの行数は.lengthで獲得できるけど
エクセルファイルで何列目の何行まで使っているか、はどうやれば獲得できるのかな

>>239みてて思った

258 :名無し~3.EXE:2010/07/06(火) 22:09:06 ID:KuRfnHZn
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{[int]$_}
は動くのに
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{[int]$_} | ogv
が動かないのをなんとかしる
select の引数をまじめに書く
[Enum]::GetValues([IO.FileAttributes]) | select @{Name="Name";Expression={$_}},@{Name="Value";Expression={[int]$_}} | ogv
は面倒だからやだ

259 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 04:50:45 ID:c2m5VYAj
$ie.document.parentWindow が null になるんだけどなんでだろう

260 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 21:36:31 ID:8wpZODee
>>258
Select-Object -Property の引数を PropertyPath の XAML 構文としてパースした場合エラーになるって言うのは
PowerShell の構文をどうにかしない限りどうしようも無いと思うが。
今回は↓で回避できるけど、Out-GridView 呼び出しまで含めてラッパ作っちゃった方が早いんじゃね。
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{,([int]$_)} | ogv

261 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 21:44:56 ID:Y0LxWDlI
>>260
エラーは出ないけれども ([int]$_) の値が表示されないよ

262 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 21:50:25 ID:8wpZODee
>>261
カンマを付け忘れてる

263 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:04:21 ID:Y0LxWDlI
おお、表示できた
難易度高いわ

264 :名無し~3.EXE:2010/07/13(火) 16:17:31 ID:viaEAdkS
>難易度高いわ
難度高いわ

265 :名無し~3.EXE:2010/07/16(金) 01:02:23 ID:nQrufqp5
>>86
とりあえず、はっときます

param($q)
[object[]]$url
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("http://google.co.jp")
while($ie.busy){start-sleep -m 50}
while($ie.Document.readyState -ne "complete"){start-sleep -m 50}
$ied = $ie.document
@($ied.getElementsByName("q"))[0].value = $q
@($ied.getElementsByName("btnG"))[0].click()
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
if( ($nav=$ied.getElementById("nav")) -ne $null){
$nav.getElementsByTagName("td") | % { if(($_.cellIndex -gt 1) `
-and ( $_.cellIndex -le (@($nav.getElementsByTagName("td")).length -2)) ){ $url += @($_.firstChild.href) }}

foreach($u in $url){
$ie.navigate($u)
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = $doc + @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
}
}
$doc = "<ol>"+$doc+"</ol>"
convertTo-Html -body $doc -Title "検索" > get2.html
$ied.write($doc)
$ie.visible = $true

266 :名無し~3.EXE:2010/07/16(金) 01:05:45 ID:nQrufqp5
100件なら 検索おぷしょんで設定した方が早いような 藁
こっちは検索数バー所運
param($q)
#qcは検索数各自書き換えてください。
$qc = 50
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("http://google.co.jp")
while($ie.busy){start-sleep -m 50}
while($ie.Document.readyState -ne "complete"){start-sleep -m 50}
$ied = $ie.document
@($ied.getElementsByName("q"))[0].value = $q
@($ied.getElementsByName("btnG"))[0].click()
while($ied.readyState -ne "complete"){start-sleep -m 50}
$qa = $ie.LocationURL
$doc = @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
$iec = $ied.getElementById("nav")
$url = @($iec.getElementsByTagName("td"))[2].firstChild.href
if($qc -gt 10){
for($i=10;$i -lt $qc; $i += 10){
$ie.navigate($url.replace("start=10","start=$i"))
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = $doc + @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
}
}
$doc = "<ol>"+$doc+"</ol>"
convertTo-Html -body $doc -Title "検索" > get.html
$ied.write($doc)
$ie.visible = $true

267 :名無し~3.EXE:2010/07/16(金) 01:28:45 ID:DGgvO4Hx
タスクバーで点滅

268 :名無し~3.EXE:2010/07/16(金) 19:58:08 ID:nQrufqp5
自分で対処してください

269 :名無し~3.EXE:2010/07/17(土) 02:33:51 ID:Cx2mEIGQ
$ie.document.focus

270 :名無し~3.EXE:2010/07/18(日) 16:19:47 ID:MD6LitbG
"1" 個の引数を指定して "write" を呼び出し中に例外が発生しました: "種類が一致しません。"

271 :名無し~3.EXE:2010/07/18(日) 19:22:55 ID:1jb4hW0g
>>259
PowerShellでは、MTAで、$ie.document.parentwindowが見えない。
ttp://scripting.cocolog-nifty.com/blog/2010/07/powershellmtaie.html

272 :名無し~3.EXE:2010/07/18(日) 23:53:42 ID:9EcxcK/O
>>271
前置きの文章の流れがつかみにくい・・・

「STAでは見えます。なので、MTAならSTAで起動し直します。」

程度に削っちゃった方が「以下のコードがそのサンプルですよ」ってことが分かりやすいんじゃないかと思う


273 :名無し~3.EXE:2010/07/19(月) 02:07:11 ID:+L9wDm12
最近日本語が不自由でプログラム言語でしかしゃべれない人が増えてるから仕方ない

274 :名無し~3.EXE:2010/07/20(火) 01:21:36 ID:Vkd1I8kA
日本語が相手にされてない

275 :名無し~3.EXE:2010/07/23(金) 00:16:24 ID:1K/4j0hr
([System.AppDomain]::CurrentDomain.GetAssemblies())[2].gettypes()|
? {($_.namespace -like "*net*") -and ($_.basetype -like "*enum*") -and ($_.IsPublic -eq $true) } |
%{@("##$_.name##")+([Enum]::GetValues((Invoke-Expression "[$_]")))} | select {$_},{,([int]$_)} | ogv

なんか、ぱわーセルのパイプは面毒せーな〜

276 :名無し~3.EXE:2010/07/23(金) 02:20:20 ID:x1KXUDuh
>>275
そんな丁寧に書かんでもいい気がするが、かえって見づらくない?
[AppDomain]::CurrentDomain.GetAssemblies()[2].gettypes() |
? { $_.namespace -like "*net*" -and $_.IsEnum -and $_.IsPublic } |
% { "##$_##"; $_.GetEnumValues()} | select {$_},{,([int]$_)} | ogv

277 :名無し~3.EXE:2010/07/23(金) 23:07:53 ID:rVRWb7I9
()で括るのは、昔からの癖です

278 :名無し~3.EXE:2010/07/25(日) 19:58:11 ID:VoWF7+QR
こんにちは、コマンドプロンプトでまともにUTF-8が利用できないため、
PowerShellに逃げてきたのですが、
同じような状態に陥っています。
UTF-8はやっぱり駄目ですかね

やったこと
・PowerShellのプロンプトでchcp 65001
・chcp 65001するとbatファイルが動かなくなる(Ruby win32のirbなどのbat経由のツールが動かない)
動かないというのはコマンドを入力して何も集力も入力もされずスルーされる感じです
・ruby -e "puts File.read('UTF-8.txt')" -Ku のようにUTF-8 BOMなし出力すると、
若干も化けで表示され以下のエラーが出る。こちらはRuby側の問題がありそう

-e:1:in `write': Bad file descriptor (Errno::EBADF)
from -e:1:in `puts'
from -e:1

これらはPowerShellだから起こっているというより、cmd.exeでも全く同様なようです
挙動がコマンドプロンプトをかわらず残念な気持ちになっています。

対処法はありませんでしょうか?


279 :名無し~3.EXE:2010/07/25(日) 20:19:30 ID:2+OhiPNv
>>278
perlだと内部的なunicodeに一度変換しないとダメだな

use Encode;

$umsg = Encode::decode('cp932',$_);
$omsg = Encode::encode('utf8',$umsg);

280 :名無し~3.EXE:2010/07/26(月) 04:04:13 ID:DF1zghAi
powershellからchcpしようが、cmd.exeが65001でファイル入力できないのは変わるはずがない

281 :名無し~3.EXE:2010/07/26(月) 04:34:09 ID:gU81Z1R6
すみません

『PowerShell V2』ってどこからダウンロードできるのでしょうか?

282 :名無し~3.EXE:2010/07/26(月) 14:40:57 ID:9hra5H3I
>>281
今ならWindows Updateで入手できるだろ。

283 :名無し~3.EXE:2010/07/27(火) 03:54:03 ID:UiJDAn1P
>>280
あ、そうなんだ

284 :名無し~3.EXE:2010/07/27(火) 07:08:39 ID:NQ1dJpVv
対話形式でないならISEでchcp実行して使うのが最善

285 :名無し~3.EXE:2010/07/27(火) 17:43:32 ID:jy1TdZPe
UTF-8にすると、なにがよいのか? 嗜好?

286 :名無し~3.EXE:2010/07/28(水) 22:55:46 ID:JFn2O9W3
パワーシェル2.0ってこれだよね?
ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=60cb5b6c-6532-45e0-ab0f-a94ae9ababf5

上インストールした後、WIN-ARCserve Replication r12.5 Service Pack 2をインストールしようとしたら、
パワーシェルがはいってませんってのでインストールできなかた。
誰か対応策わかる人いますか?

コマンドプロンプトからpowershellでPS〜〜〜って表示がでるのでインストールされているとは思うんですが。

よろしくお願いします。

287 :名無し~3.EXE:2010/07/28(水) 23:34:03 ID:rgFfRD6a
2.0でなくて1.0が必要なんでないの?

288 :名無し~3.EXE:2010/07/29(木) 01:20:20 ID:VEGuyEZw
再起動した?

289 :名無し~3.EXE:2010/07/31(土) 09:26:13 ID:0ocBVOJA
powershellって流石にアプリケーション操作したり出来ないよね?

290 :名無し~3.EXE:2010/07/31(土) 09:30:59 ID:H4e5Rs0+
>>289
ttp://wasp.codeplex.com/

86 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)