Windows PowerShell 2.0 Part2at WIN
Windows PowerShell 2.0 Part2 - 暇つぶし2ch200:名無し~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