Windows PowerShell 2.0 Part2at WIN
Windows PowerShell 2.0 Part2 - 暇つぶし2ch2:名無し~3.EXE
09/12/18 12:15:07 H2dW8sR1
PowerShell の起動を高速化する
URLリンク(flamework.net)
URLリンク(powershell.hiros-dot.net)

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

コマンドプロンプト・ UNIX系OSのシェルとのコマンド対応表
URLリンク(marxsoftware.blogspot.com)
URLリンク(en.wikipedia.org)

VBScript コマンドから Windows PowerShell コマンドへの変換
URLリンク(www.microsoft.com)

キーバインド変更
XKeymacs
URLリンク(www.cam.hi-ho.ne.jp)
窓使いの憂鬱
URLリンク(mayu.sourceforge.net)

コマンドレットオンラインヘルプ作成 ver2
URLリンク(blogs.wankuma.com)

Windows Server 2008 のサーバーコアに PowerShell をインストール
PowerShell on Server Core
URLリンク(dmitrysotnikov.wordpress.com)

3:名無し~3.EXE
09/12/18 12:16:47 H2dW8sR1
■エディタとかIDEとか
PowerShell Analyzer (45日間試用可能)/ PowerShell Plus (個人使用無料)
URLリンク(www.powershell.com)
PowerGUI
URLリンク(www.powergui.org)
Admin Script Editor (45日間試用可能・ フォームデザイナ)
URLリンク(www.adminscripteditor.com)

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

■その他
タブ補完機能強化ツール - PowerTab
URLリンク(thepowershellguy.com)
・Visio 2007 用 Windows PowerShell スクリプト生成ツール
URLリンク(www.visio.jp)
・WSH から PowerShell を利用する - ActiveX PowerShell(ActiveXPoSH)
URLリンク(www.primalscript.com)

4:名無し~3.EXE
09/12/18 14:57:56 ZTSryej3
>>1

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

6:名無し~3.EXE
09/12/19 11:11:41 qOfdkuAO
>>1おつ

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

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

Windows 管理フレームワーク (Windows PowerShell 2. 0、WinRM 2. 0、および BITS 4. 0)
URLリンク(support.microsoft.com)

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



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

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

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

10:名無し~3.EXE
09/12/27 22:14:14 BdtTg34B
どこまでできたの?

11:9
09/12/27 22:25:48 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
09/12/27 22:54:02 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
09/12/28 00:09:21 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
09/12/28 14:29:52 UrzeYzpP
powershell.exe -file "%1" %*
で駄目な例は?

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

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

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

もしくは↓みたいにBase-64でエンコードした文字列を-EncodedCommandの引数として渡すとか
Base64形式のエンコードされたコマンドを実行する
URLリンク(handcraft.blogsite.org)


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

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

猫科研究所(felid labo) - コマンドプロンプトのエスケープ仕様
URLリンク(www.up-cat.net)

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

確かにできてるね

20:名無し~3.EXE
10/01/02 23:24:11 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
10/01/09 22:07:55 06hUKofY
文法は面白いけどもっさり過ぎる
dirするだけでどんだけCPUパワー食ってんのかと
CPUが後2、3世代進んでから乗り換えるわ

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

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

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


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

24:名無し~3.EXE
10/01/11 11:14:40 KTNXxzfc
>>21

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

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

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

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

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

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

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

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

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

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

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


33:名無し~3.EXE
10/01/19 00:58:11 YuVXv+9y
Xml.Linqって便利だね、[xml]$xml = ... とかやるよりずっと楽
URLリンク(www.atmarkit.co.jp)

Add-Type -AssemblyName System.Xml.Linq
$ex = [System.Xml.Linq.XNamespace]"URLリンク(www.piedey.co.jp)"
$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
10/01/22 00:02:58 YdI+bHOF
PSだけで殆どの業務アプリが作れるような感じがしてきた。
動的言語に近いから、PL/SQLとかT-SQLの置き換えに良いと思ったりする。

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

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

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

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

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

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

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

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


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

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

43:名無し~3.EXE
10/02/06 18:14:39 7MX3qEFM
>>42
いや俺がしたいのは1.0のquadfold.rtfに相当するドキュメントはなくなっちゃったんだねってことよ?
今でも↓から入手はできるけどね
URLリンク(www.microsoft.com)
別に取り除く必要はなかったように思うわけさ

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

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

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


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

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

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

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

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

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

の、どれか。

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

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

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


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

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

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

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

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

55:名無し~3.EXE
10/02/11 00:19:43 uGcl0aGn
>>52

get-date 20:20

とかを試してみるべし。

56:52
10/02/11 01:11:49 LhylZmK1
>54,55

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

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

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

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

60:名無し~3.EXE
10/02/14 22:24:42 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
10/02/18 09:28:28 9EMy/ABM
 

62:名無し~3.EXE
10/02/23 01:31:48 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
10/02/23 01:33:41 1YrNYLaH
>>62
すいません。ズレてしまいましたが

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

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

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

66:名無し~3.EXE
10/02/23 02:49:32 +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
10/02/25 03:00:10 MgBHCeg/
よく見たら2回もlsする必要なかった
ls $DESTPATH | % { move $SORUCEPATH\*$_* $_.FullName }
なんかもっと短く出来そうな、出来なさそうな

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

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


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

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

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

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

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

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

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

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

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

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

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

76:名無し~3.EXE
10/03/13 09:39:55 jsj7aNy2
>>75

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

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

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

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

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

80:名無し~3.EXE
10/03/14 08:50:49 Hn6lpQ4x
>>78

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

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


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

83:名無し~3.EXE
10/03/23 21:42:43 lViYlT5s
 

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

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

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



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


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

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

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

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

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

92:名無し~3.EXE
10/03/30 00:26:39 dq4fBvef
だったらVisualBasicだね

93:名無し~3.EXE
10/03/30 01:38:29 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
10/03/30 20:35:57 is44HdHL
>>92
じゃVBで行って見ます。

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


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

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

98:名無し~3.EXE
10/04/05 17:31:16 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
10/04/05 18:02:36 zBwMa85m
Start-Process -FilePath $bat -NoNewWindow

とするか

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

とするか

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

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

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

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


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


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

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

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


105:名無し~3.EXE
10/04/09 10:10:20 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
10/04/10 02:54:20 s6LqoGGj
>>104
ソース見ないとなんともだな

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

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

108:名無し~3.EXE
10/04/10 21:21:06 QO8LRa4k
>>107

WASP

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

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


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

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

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

113:名無し~3.EXE
10/04/11 10:54:06 C/2m2OR4
>>111
WASP使ってみた?
URLリンク(wasp.codeplex.com)

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


114:名無し~3.EXE
10/04/13 11:50:44 Iz73pvAK
リンク切れ

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

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

URLリンク(www.microsoft.com)"

URLリンク(hiros-dot.net)

115:名無し~3.EXE
10/04/13 15:08:10 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
10/04/13 18:46:12 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
10/04/13 22:33:14 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
10/04/13 22:36:45 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
10/04/14 11:44:05 rEUM1djO
>>116
iex "f $opt"


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

hmm...


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

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


123:名無し~3.EXE
10/04/14 22:25:29 TkMKnc/G
S

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

> java -version

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

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

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

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

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

125:名無し~3.EXE
10/04/15 09:01:24 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
10/04/15 20:22:11 Fg5y7IZM
>>125
ありがとうございます

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

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

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

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


128:名無し~3.EXE
10/04/16 07:25:38 bNu/bwoq
>>127

むしろ、Perlでわ?

129:名無し~3.EXE
10/04/17 14:56:45 iUltzkHe
awkだろ

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

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

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

Missing PowerShell.exe switch
URLリンク(connect.microsoft.com)



133:名無し~3.EXE
10/04/20 22:54:55 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
10/04/20 23:23:01 Dtic/A0c
v2で話題のpowershell面白いな
wsusを管理するコード、他言語に移植する方法が分からんし
これで行くわ
勉強不足が身にしみるこのごろ

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

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

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

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

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

139:名無し~3.EXE
10/04/22 13:03:04 BDO7j1vb
>>138

URLリンク(www.atmarkit.co.jp)

140:名無し~3.EXE
10/04/28 12:42:10 KdgEBEan
 

141:名無し~3.EXE
10/05/01 02:28:55 VnvHJTPU
RubyからScalaに乗り換えた15くらいの理由
URLリンク(wota.jp)

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

142:名無し~3.EXE
10/05/01 20:22:36 Xre7Udvb
F#ってどうよ

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

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

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

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

146:名無し~3.EXE
10/05/02 13:15:15 h326HOPJ
慣れの問題だよ

147:名無し~3.EXE
10/05/03 09:30:57 jR1qyiHO
ここ見てPowerShellを.NET 4.0で動くようにしてみた
URLリンク(stackoverflow.com)

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

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


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


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

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

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

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


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

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

という建前。

156:名無し~3.EXE
10/05/03 19:30:10 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
10/05/03 19:30:46 WSFaNxwg
>>152
ありがとう。

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

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


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

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

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

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

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

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

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

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

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

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

166:名無し~3.EXE
10/05/04 08:54:34 8rzEvCav
.windowspowershellscriptfile

でいいんじゃない?

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

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

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

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

171:名無し~3.EXE
10/05/05 02:15:04 4NtCtyvS
あ、ごめん誤爆

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

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

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

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

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

177:名無し~3.EXE
10/05/12 22:12:32 rHrZ7Sf7
>>175
get-help

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

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

180:名無し~3.EXE
10/05/16 20:21:17 qsYFZMF1
Windows PowerShell: まずはマニュアルを書く
URLリンク(technet.microsoft.com)

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

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

183:名無し~3.EXE
10/05/22 15:27:14 XfHQXv+A
できました!

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

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

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

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

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

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

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

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

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

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

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

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

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

195:名無し~3.EXE
10/05/24 00:59:53 U25k7xKb
さんきゅうです

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

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

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

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

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

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


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


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

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

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



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

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

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

どうしたらいいんだろ、

203:名無し~3.EXE
10/05/28 19:21:16 IOZzcCUH
URLリンク(www.atmarkit.co.jp)
この中で改行文字を変更すればよい

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

205:名無し~3.EXE
10/06/03 19:44:33 fFk8NoFR
>>204

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

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

207:名無し~3.EXE
10/06/04 19:36:49 3xu9Ih61
すいません
wikiの
PS> $rssUrl = "URLリンク(blogs.msdn.com)"
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
10/06/04 23:04:08 3xu9Ih61
自分で
$a =[xml]"<aaa>ssss</aaa>"
てやったらキャスト出来たから
元のが悪いのかな??

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

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


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

212:名無し~3.EXE
10/06/05 18:52:31 YmnKnoMR
之でいけたけど
$enc = [System.Text.Encoding]::GetEncoding("utf-8")
$rssurl="URLリンク(headlines.yahoo.co.jp)"
( [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
10/06/10 22:55:10 Mm67oFQ6
PowerShellは来年ぐらいに流行るとみた。

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

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

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

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

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

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


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

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

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

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

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

225:名無し~3.EXE
10/06/15 23:20:18 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
10/06/15 23:40:00 io5tR8aY
コマンドラインから改行がうまく渡す方法が分からないなあ

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

227:名無し~3.EXE
10/06/15 23:52:00 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
10/06/20 01:21:27 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
10/06/20 02:04:35 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
10/06/20 08:56:11 yv5OOOJL
>>229
ありがとうございました。
参考にしてもらいます。

231:名無し~3.EXE
10/06/20 14:56:42 kQIbsBAe
誰に?

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

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

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

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

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

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

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

235:名無し~3.EXE
10/06/24 06:56:52 QDFSa6c3
>>234

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

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

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

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

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

239:名無し~3.EXE
10/06/24 20:47:47 VUPiF+zq
URLリンク(kazemati.blogspot.com)

ここを参考にして、
$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
10/06/24 22:15:25 yPssf1TG
>>238
date って打ち込んで試せば分かることですがな
前スレでも話題になってた気がする

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

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

241:名無し~3.EXE
10/06/24 22:32:20 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
10/06/24 23:01:52 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
10/06/24 23:10:52 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
10/06/24 23:38:30 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
10/06/24 23:39:23 uEkEIR0P
うお、ユーザー名orz

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

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

249:名無し~3.EXE
10/06/25 00:46:24 xbzcwe7U
iseさん…

250:名無し~3.EXE
10/06/25 00:47:40 mSLJKvLX
PowerShell ISE さん
さすがだ

251:名無し~3.EXE
10/06/25 20:43:54 0/U66yua
URLリンク(journal.mycom.co.jp)

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

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

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

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

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

255:名無し~3.EXE
10/07/06 00:31:42 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
10/07/06 00:32:35 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
10/07/06 13:20:47 Z4Ex5Sa1
テキストファイルの行数は.lengthで獲得できるけど
エクセルファイルで何列目の何行まで使っているか、はどうやれば獲得できるのかな

>>239みてて思った

258:名無し~3.EXE
10/07/06 22:09:06 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:名無しさん@そうだ選挙に行こう
10/07/10 04:50:45 c2m5VYAj
$ie.document.parentWindow が null になるんだけどなんでだろう

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

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

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

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

264:名無し~3.EXE
10/07/13 16:17:31 viaEAdkS
>難易度高いわ
難度高いわ

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

param($q)
[object[]]$url
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("URLリンク(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
10/07/16 01:05:45 nQrufqp5
100件なら 検索おぷしょんで設定した方が早いような 藁
こっちは検索数バー所運
param($q)
#qcは検索数各自書き換えてください。
$qc = 50
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("URLリンク(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
10/07/16 01:28:45 DGgvO4Hx
タスクバーで点滅

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

269:名無し~3.EXE
10/07/17 02:33:51 Cx2mEIGQ
$ie.document.focus

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

271:名無し~3.EXE
10/07/18 19:22:55 1jb4hW0g
>>259
PowerShellでは、MTAで、$ie.document.parentwindowが見えない。
URLリンク(scripting.cocolog-nifty.com)

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

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

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


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

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

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

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch