HELP さん 2007年 02月 08日 14時 10分 17秒

windows server2003です。
ActiveDirectoryのユーザ一括登録をする為に
ユーザデータ(csvファイル)の自動化が出来ないか
検討しています。
何か良い案はありませんでしょうか?

はてな さん 2007年 02月 08日 05時 45分 37秒

a3さん ありがとうございます。
教えていただいた様に、環境変数%TMP%のさす場所に一時ディレクトリが残っていました。これを削除することによりコピーすることが出来るようになりました。
吉岡 照雄さん作のZIP.VBSは実はもう参考にさせて貰っていました。今回ZIPファイルの中の個別のファイルを指定して解凍コピーしたくて色々試しているうちに、壁にぶち当たっていました。
もう少し勉強して、VBSで一時ディレクトリを削除できるようにがんばってみます。

a3 さん 2007年 02月 07日 02時 07分 48秒

> はてな さん 2007年 01月 27日 11時 06分 31秒

ZIPフォルダの件

そもそも、ZIPファイルがフォルダのように見えるのは
zipfldr.dll(Compressed (zipped) Folders Shell Extension)という
シェル拡張プログラムの機能です。XPには標準ですかね。

こいつの動きを調べてみると、以下のような感じ。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
1.ZIPファイルがクリックされる。
  ZIPファイルをフォルダに見せかけて、圧縮されている情報を
  見せかけフォルダ内にあるように見せる。

2.ZIPフォルダ内のファイルがクリックなどで操作されようとした時点で
  ユーザプロファイルのLocal Settings\Tempフォルダに
  一時フォルダを作成して、その中にZIPファイルの中身を展開。
  ※もしかすると、環境変数%TMP%のさす位置かもしれません。(未確認)

  多分、「C:\Documents and Settings\ユーザ名\Local Settings\
  Temp\test.zip の一時ディレクトリ 1」ができており、
  その中にZIPファイルが展開されているはず。

3.ZIPフォルダ内の仮想的なファイルの代わりに
  一時フォルダの内容を表示する。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
大雑把に言えばこのような仕組みです。

この一時フォルダは削除されないため、スクリプトを複数回動かすと
2の処理をするときに
「ファイルの上書きの確認」が出てしまうのですね。

なので、VBSで毎回一時フォルダを削除してしまえば
「ファイルの上書きの確認」の問い合わせは来なくなるとおもいます。
※該当の一時フォルダは「隠しファイル」属性がついていることに注意。

ご参考まで。

・・・と書き込んでいて、
   はてな さん の目的のためには、もっと参考になるもの
   (というかそのものずばり)があるのを思い出しちゃいました。

吉岡 照雄さん作のZIP.VBSです。
Vectorで「ZIP.VBS」で検索すれば出てくると思います。
付属の資料はとっても勉強になりますよ。

わからんぜ さん 2007年 02月 06日 22時 22分 37秒

HTAとvbsとbatを使って、結構なスクリプトを作ってしまったあとで、
これをネットワーク共有で使おうとしたら、
vbs・・・このファイルを開きますか?
bat&HTA・・・発行元を確認できませんでした・・・
というセキュリティの警告が出ます。
googleってみましたが、ダウンロードしたファイルの云々 と
いったものばかりで、ヒットしません。
この症状は、ダウンロードしたファイルへの保護とは似て非なる
機構だと思うのですが、回避する方法をご存知ありませんか?
cscrit \\cpu\share\test.vbs
cmd.exe \\cpu\share\test.bat
ではOKなのですが、これではソース改変が膨大なことに
なってしまいます。
ちなみにXP−SP2です。 よろしくお願いします

いりや さん 2007年 02月 06日 19時 47分 55秒

Genesis さん、

適材適所、もし UWSC がフィットするようならぜひ :)

a3 さん 2007年 02月 06日 10時 00分 00秒

> koike さん 2007年 01月 29日 12時 45分 03秒

Windows2000Server環境で以下のようなスクリプトで
情報を取得したことがあります。

WMIではなくて、ADSIスクリプトですが。
ーーーーーーーーーーーーーーーーーーーーーー
Dim objDomain
Dim strDomainName

strDomainName = "your_domain_name"

Set objDomain = GetObject("WinNT://" & strDomainName)

With objDomain
  WScript.Echo "[MinpasswordAge]    " & .MinpasswordAge / 86400
  WScript.Echo "[MaxpasswordAge]    " & .MaxpasswordAge / 86400
  WScript.Echo "[MaxBadPasswordAllowed] " & .MaxBadPasswordsAllowed
  WScript.Echo "[MinpasswordLength]   " & .MinpasswordLength
End With

Set objDomain = Nothing
ーーーーーーーーーーーーーーーーーーーーーー

Genesis さん 2007年 02月 05日 21時 13分 03秒

いりやさん、レスありがとうございました。
WSHではやはり不可能なんですかね。
umiumiの存在は全く知らなかったので、勉強してみます。

はてな さん 2007年 01月 30日 06時 04分 09秒

palazzo さん ありがとうございます。
とりあえず、次の処理に進む前に、待ち時間を入れて見ます。
それにしても、一度コピー出来なくなったZIPファイルをコピー出来るようにする方法は無いものでしょうか。スクリプト上だけでなく、エクスプローラで手動コピーも出来ないんです。少し困っています。

Jeofrey さん (jeofreybb@gmail.com) 2007年 01月 29日 21時 38分 52秒
URL:http://bb.iwant1k.info

Der Aufstellungsort s sehr Fachmann! Mach weiter so! OH- ja, eine Extraanmerkung - m ネlicherweise k マntest du mehr Abbildungen auch addieren! So gutes Glトk zu deiner Mannschaft!

Jeofrey さん (jeofreybb@gmail.com) 2007年 01月 29日 21時 14分 53秒
URL:http://bb.iwant1k.info

Der Aufstellungsort s sehr Fachmann! Mach weiter so! OH- ja, eine Extraanmerkung - m ネlicherweise k マntest du mehr Abbildungen auch addieren! So gutes Glトk zu deiner Mannschaft!

koike さん 2007年 01月 29日 12時 45分 03秒

むたぐちさん、ありがとうございます。

レジストリについてなんですが、紹介していただいたサイト(虎の巻)の情報は既にチェック済みです。
サイトの情報は XP HOMEなどの場合で、2003 server には当てはまらないようです。

レジストリが見つからないのです。
レジストリ内を"password"等で検索してもそれらしいものはありません。

とりあえず "net accouts" & "secedit"コマンドを利用して情報を引っ張ってくるつもりです。


palazzo さん 2007年 01月 29日 09時 12分 14秒
URL:http://maglog.jp/pueblo-del-script/

はてな さん 2007年 01月 27日 11時 06分 31秒

一時フォルダの件はShell.Applicationが非同期で動作することが関係あるのではないでしょうか。スクリプトのロジックが全部流れていても、COMのコピー処理の実体は動き続けている場合もありますし。COM側の処理終了の判定は私では分かりません。申し訳ないです。

管理人むたぐち さん 2007年 01月 28日 07時 47分 25秒

To: koike さん

> 管理ツール − ローカルセキュリティポリシー − パスワードのポリシー の設定内容を読み込みたいのですが、どうような方法があるでしょう?

対応するレジストリキーを読み込めばよいと思います。

XPレジストリ虎の巻:パスワードポリシーの変更
http://blog.livedoor.jp/tricube/archives/51069244.html

Reg_Binaryな値があるので、WMIの\root\default:StdRegProvを使う必要があるかも?

Microsoft Windows 2000 Scripting Guide - Reading a Binary-valued Entry
http://www.microsoft.com/technet/scriptcenter/guide/sas_reg_overview.mspx?mfr=true

# WshShell.RegReadでも読み込みは大丈夫だったかな?


To: YamaKen さん

> 特定のサイト、特定のページからの一定のパターンを持ったリンクをダウンロードしたいと思います。

基本は
Windows Script Wiki - FAQ
http://winscript.s41.xrea.com/wiki/index.php?%5B%5BFAQ%5D%5D
の、「Webからファイルをダウンロードするには?」と
「Webからテキストファイルを取得し、文字列に代入するには?」の組み合わせだと思います。
AJAXでもおなじみ、Msxml2.XMLHTTPを使います。

まず、サイトのHTMLを取ってきて、リンクを抽出します。
リンクを抽出するのは正規表現(RegExp)を使うと良いです。
正規表現のパターンは、たとえばこんなもんでいけるんじゃないでしょうか。
RegEx.Pattern = "<a href\=\""(.+?)"".*?>(.+?)<\/a>"
そのあと、抽出したリンク先のアドレスに対してMsxml2.XMLHTTP+Adodb.Streamの組み合わせで
ファイルに落とします。
デフォルトでは重複ファイル名に対しては上書きになるので、
先にFileSystemObjectでファイルの存在確認をすることになるでしょう。

YamaKen さん (rc5ntcrack@hotmail.com) 2007年 01月 28日 00時 20分 43秒
URL:http://blogs.sqlpassj.org/yamaken/

特定のサイト、特定のページからの一定のパターンを持ったリンクをダウンロードしたいと思います。
VBScript にて実現するとしたら、どのようなコンポーネントを使えばいいのでしょう? 同一ファイル名のものは上書きを想定していますが、既存ファイルに同一名のものがあればスキップすることをオプションで選べればベターですかね。

コードが出来上がったらタスクにでも登録して、定期巡回させようと考えています。

で。目的なのですが、RSS 対応していないが日次更新の mp3 ファイルを入手しようとしてます。次のサイトの MP3 ファイルですね。
http://www.un.org/radio/

いりや さん 2007年 01月 27日 13時 26分 56秒

Genesis さん、

ダイアログも中身は HTML document だと思って InternetExplorer.Application
オブジェクトの document 属性を通じて document オブジェクトを掴める
か試してみたのですができませんでした。

関連する投稿
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=472

はてな さん 2007年 01月 27日 11時 06分 31秒

palazzoさんアドバイスありがとうございます。
一応
If newfolder <> i Then
で第1引数を処理しないようにしていたのですが、うまくないですね。
あと気になることがあるのですが、
コピーの処理が終わる前に、次の処理に進むと良くないのでしょうか。
また、
ZIPフォルダからコピーが出来ない件について、いろいろ調べましたが
コピーの際に一時フォルダが作成されるようなのですが、それが残っていて
コピーできないなんてことあるでしょうか。一時フォルダの情報をクリア
する方法は無いのでしょうか。
よろしくお願いします。

Genesis さん 2007年 01月 26日 22時 08分 04秒

IEで開いたページ中のボタンを押すと現れるダイアログウィンドウ
を操作したいと思っています。
ダイアログウィンドウのIDめいたものを取得、これを通じてウィン
ドウ内のボタンを操作するような方法はありませんか?

具体的には、下記1.〜3.のうちの3.が目的です。
1.既にオープンされているIEのオブジェクトを探し出し、それを
 通じて、ページのHTMLソースを取得。
2.1.により、目的とするボタンを見つけてこれをクリック
3.(おそらくshowModalDialogによる)ダイアログウィンドウ上の
 ボタン(OK,キャンセルの2つ)のうち、OKを押したい。
 また可能ならば、ウィンドウ上の表示文字列もあわせて取得したい。

やむをえず、ダイアログウィンドウのタイトル文字列を手がかりに、
AppActivateおよびSendkeyで妥協していますが、ウィンドウ出現ま
での時間差等もあり、本質的な解決策を探しています。

http://www.microsoft.com/japan/msdn/columns/dude/dialog2.htm
を例に解説戴けると幸いです。皆様よろしくお願いします。


koike さん 2007年 01月 26日 12時 21分 55秒

windows server 2003 です。
VBScriptを使用しております。

管理ツール − ローカルセキュリティポリシー − パスワードのポリシー の設定内容を読み込みたいのですが、どうような方法があるでしょう?

WMIを使用して読み込むことなどはできないのでしょうか?
自分でも探していますが、なかなか見つかりません。

palazzo さん 2007年 01月 26日 00時 44分 30秒
URL:http://maglog.jp/pueblo-del-script/

>はてな さん 2007年 01月 23日 22時 30分 40秒

For Eachで列挙するのはマズいのではないでしょうか。第1引数の値まで取ってきてしまいますよ。やるならば、

For idx = 1 To WshArg.Count - 1

Next

のように、通常のFor文で開始インデックスを指定してあげるといいです。

はてな さん 2007年 01月 23日 22時 30分 40秒

はじめまして、ZIPファイルの解凍をVBSで行おうとして困っております。お助けください。

以下のスクリプトを作成しました。
第1引数に解凍したファイルのコピー先のパスを指定します。
第2引数以降に解凍したいZIPフォルダー内のファイルのパスを指定します。 
例;c:\terget c:\test\test.zip\test1.txt c:\test\test.zip\test2.txt

Option Explicit

Dim ObjShell, ObjTerget, ObjFso, FolderItm, ObjFolder
Dim newfolder, ipasu
Dim WshArg
Dim i, j
Set WshArg = WScript.Arguments
Set ObjShell = WScript.CreateObject("Shell.Application")
Set ObjFso = WScript.CreateObject("Scripting.FileSystemObject")

newfolder = WshArg.Item(0)
Set ObjTerget = ObjShell.NameSpace(newfolder)
For Each i In WshArg
  If newfolder <> i Then
    ipasu = ObjFso.GetParentFolderName(i)
    Set ObjFolder = ObjShell.NameSpace(ipasu)
    Set FolderItm = ObjFolder.Items
    For Each j In FolderItm
      If ObjFso.GetFileName(i) = j Then
        ObjTerget.CopyHere j
        Exit For
      End If
    Next
  End If
Next

Set ObjShell = Nothing
Set ObjFso = Nothing
Set ObjTerget = Nothing
Set WshArg = Nothing
Set ObjFolder = Nothing
Set FolderItm = Nothing

これで、実際にZIPフォルダー内の指定のファイルがコピーされたのですが、何度か行っているうちに「ファイルがあります。」のメッセージが出るようになり、コピー出来なくなりました。(コピー先にファイルがあるわけではありません。その場合は上書きの確認が出てコピー出来ます。)
ZIPフォルダの名前を変更すると、またコピー出来ます。
コピーの出来なくなったZIPフォルダーは、エクスプローラーで開いてコピーしようとしても出来ません。(解凍してからのコピーは出来ます。)
ZIPフォルダー内から直接コピーが出来ません。

上記スクリプトで問題となるのはどこでしょうか。
また、コピーできなくなったZIPフォルダーをコピー出来るように戻す方法はないでしょうか。(パソコン再起動してもだめでした。)

わかりにくい説明で長文申し訳ありません。よろしくお願いいたします。

管理人むたぐち さん 2007年 01月 09日 05時 04分 04秒

To: 初心者。。 さん

遅くなりましたが、すぐ下のとむさんのコードがそのまま使えるんじゃないでしょうか。テキストファイルをテキストストリームで読み込むのがポイントです。

テスト さん 2007年 01月 07日 07時 23分 19秒

テストです

とむ さん 2007年 01月 05日 15時 22分 02秒

管理人むたぐちさん

ご教授ありがとうございました。なんだか結果的にプログラマ1年生のような失敗でした。(恥)コーディング以前の問題ですね。しかしそれを見抜くたむぐちさんは素晴らしい推察力の持ち主ですね。助かりました。

初心者。。 さん 2007年 01月 05日 14時 56分 25秒

複数テキストファイルをひとつにまとめたいと思い、以下のようにやってみたのですが、個々にコピーされてしまいます…
どなたかご指導よろしくお願いします。

Option Explicit
On Error Resume Next

Dim objFSO
Dim strCopyFile1
Dim strCopyFile2

strCopyFile1 = "d:\Henkan\*.txt"
strCopyFile2 = "a:\"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If Err.Number = 0 Then
   objFSO.CopyFile strCopyFile1, strCopyFile2, True
   If Err.Number = 0 Then
     WScript.echo "■□ 処理が終了しました。□■"
   Else
     WScript.echo "Err " & Err.Description

   End If
Else
   WScript.echo "Err " & Err.Description
End If

Set objFSO = Nothing

管理人むたぐち さん 2006年 12月 29日 20時 18分 02秒

To: とむさん

不思議な現象ですが、よ〜く考えると分かりました。

ファイル名 : ファイルの内容(改行略)
a.txt : a
b.txt : b

とします。
まず一回目はa.txtとb.txtが結合されてresult.txtに書き出されます。

a.txt : a
b.txt : b
result.txt : ab

さて、二回目はa.txt、b.txt、result.txtが結合されて変数txtに保存されます。
したがって

変数txtの中身 : abab

です。
その後、result.txtが削除され、result.txtに変数txtの中身が書き出されます。
結果、こうなります。

a.txt : a
b.txt : b
result.txt : abab

結果的に追記と同じことになってしまうわけです。

対策としては、削除の部分をファイル結合の前に持ってくるか、
ファイル結合の際result.txtを除外するかですね。

とむ さん 2006年 12月 29日 12時 01分 22秒

WSHのファイルの入出力で質問があります。

以下コードにて任意のフォルダに存在する全てのファイルを1つに統合することを試みています。概ね良好なのですが1点、ファイルが存在すれば削除してからファイルを生成するという箇所がうまく動作しません。具体的には削除する前の内容にたいして追記になってしまいます。削除したつもりが削除できていないイメージです。しかし削除の箇所のみ切り出して実行すると正常動作します。

そのような事象でご教授いただける方よろしくお願いいたします。


↓以下コード↓

' フォルダ内のファイルを全て統合する。

Const Source = "C:\A\B\"
Dim txt

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

txt = ""

' 指定フォルダ内のファイルの内容を変数に追記格納
Set oTarget=Fs.GetFolder(Source)
For Each oFile In oTarget.Files
              
     Set ts=Fs.OpenTextFile(Source & oFile.Name,1,0)
     txt=txt & ts.ReadAll
     ts.Close
     Set ts=Nothing

     'MsgBox oFile.Name & " ** " & txt

Next

' ファイルの存在チェック
If Fs.FileExists(Source & "result.txt")=TRUE Then
     Fs.DeleteFile Source & "result.txt"
End If

' 変数の内容を一括ファイル出力
Set oTs = Fs.CreateTextFile(Source & "result.txt")
oTs.Write txt
oTs.Close

いりや さん 2006年 12月 28日 11時 50分 33秒

VBSで機器制御者さん、

わたしも自分の PC に Subversion と TortoiseSVN を入れました。

VBSで機器制御者 さん 2006年 12月 27日 23時 41分 08秒

a3さん、いりやさん
返信ありがとうございます。
WSFを利用して、作成してみようと思います。
VBSばかりが先にいってしまい、WSFまで気が回りませんでした。
ありがとうございます。

以下、駄文。
趣味でプログラミングを作成していたときは、目的が
シンプルなのでバージョン管理とかに気を遣わないでも
よかったんですけどね...。工数とかもあまり気になりませんし。

仕事となると、ちょっと動かないだけだけで腹がたって、
いらいらしてしまいます。

いりや さん 2006年 12月 27日 18時 31分 40秒

> VBSで機器制御者さん

WSF 形式で開発作業を進められるのがよいと思います。
スクリプトエンジン側で持っている機能です。

ちなみに昔に同じ話題を議論したときのメモがこちらに
あります。

http://iriyak.adam.ne.jp/wiliki/uwsc.cgi?iriyak%3aJScript%3a%a5%d5%a5%a1%a5%a4%a5%eb%a4%f2%a5%ed%a1%bc%a5%c9

ご参考まで

a3 さん 2006年 12月 27日 11時 23分 56秒

> VBSで機器制御者 さん 2006年 12月 26日 09時 22分 18秒

WSH2.0以降にあるWSFを使えば、
別ファイルをIncludeするようなことはできます。

Windows Scripting Host Laboratory
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/ の
「WSH2.0の新機能」
 4.WSFファイルタイプの追加
  ・<script>要素
が参考になるのではないでしょうか?

VBSで機器制御者 さん 2006年 12月 26日 09時 22分 18秒

大変ためになるページありがとうございます。
現在、VBSで実験装置の制御バッチを作製し、使用しています。
制御条件を頻繁に変更しなければならないため、コンパイラ言語ではない、スクリプト言語のありがたさを痛感しています。
ところで、質問なのですがVBSで簡単なライブラリを作成する事は可能なのでしょうか?
Perlでいうrequireメソッドのようなもの、ちょっと異なりますがC言語でいうincludeメソッドのようなものをVBSで使用したいです。

ネットで調べるとCOMコンポーネントの作製はできるようなのですが、そこまで凝る必要もありません。手軽さがVBSのメリットだと思っていますので...。

どなたか、ご存知の方がおられたら教えていただけたらと思います。

管理人むたぐち さん 2006年 12月 23日 07時 23分 35秒

To: VBScriptを楽しむ者 さん

このサイトの情報はたしかに古いものも多く、現在の主流の環境でおいては役に立たない記述も散見されるのが現状です。
ですが、これを一つ一つ直していく時間(と気力…)が取れないのが現状です。

ただ、XPなどの新しい環境に置いて動作しない、などの問題は、指摘があればフォローを加えています。というわけで、逐一指摘していただければ加筆訂正を加えていくということは現在でもやっております。

しかしながら、新しいテクニック等はWikiに移行していますし、VBScriptの講座に関しては@ITさんのところでまた一から書かせてもらっています。
そういう意味では旧記事に存在価値はあまりないので消してしまうというのも一つの考え方ですが、私は、一度ネットに公開された情報はたとえ情報価値が薄れようとも情報は情報、ということで残しておく派です。

そんな感じでこれからもやっていこうと思っていますので、なにかとご不便をおかけしますがよろしくお願いします。
ご意見ありがとうございました。

a3 さん 2006年 12月 22日 09時 39分 11秒

> nat さん 2006年 12月 21日 13時 44分 50秒

特定のセキュリティグループに所属するユーザだけが、
このコマンドを実行できるという意味でしょうか?
※質問の意図とちがっていたら、ごめんなさい。

もしそうなら、「このコマンド」に対して
ACL(アクセス制御リスト)を設定するだけでよいのでは?

・「このコマンド」を右クリックープロパティ選択
・プロパティダイアログが表示されるので、「セキュリティ」タブ選択。
そこから、対象グループを追加して「読み取り」「読み取りと実行」を許可すればよいかと思います。
※対象グループ以外が実行できないようにするなら
 他のユーザ・グループの実行権限をはずす必要があるかと。

コマンドでやるなら、caclsコマンドをヘルプで調べてみてください。


nat さん 2006年 12月 21日 13時 44分 50秒

WSH勉強始めました。

実現したいこと---
Active Directoryで定義されている自身のセキュリティグループを
検索し、対象のグループであればこのコマンドを実行する。

上記のような事は可能でしょうか。
どうぞ宜しくお願い致します。

VBScriptを楽しむ者 さん 2006年 12月 20日 09時 12分 10秒

>>管理人さんへ
 はじめまして。いつも本サイトの情報を一部活用させてもらっており、
管理人さんには感謝してしております。 
 さて、一つ質問があります。WSH Lab さんのサイト情報の一部はかな
り古いのですが、今後現段階における情報に切り替えていくことはない
のでしょうか?Windows 98系の情報はあっても、Windows XP系の情報が
あまり見当たらないようにも思うのですが。特に、WSHテクニック集の
項目の一部は情報として古く、Windows XPを使用している者にとっては、
全く利用できないものもあります。(Microsoftさんがコロコロ仕様を変更
してしまうので、余計に厄介なのかもしれません。)
 色々書き込みましたが、できればご返答お願い致します。

a3 さん 2006年 12月 19日 19時 07分 14秒

> vbs勉強中 さん 2006年 12月 17日 21時 49分 18秒

以下の方法で判定できます。
-------------------------------------------------------------------
msg = InputBox("メッセージを入力してください。")

If IsEmpty(msg) Then
 Msgbox "キャンセルが押されました。"
Else
 Msgbox "入力されたメッセージは[" & msg & "]です。"
End If
-------------------------------------------------------------------
キャンセルしたときに代入されるのは""ではなく、Empty値。

ただ、Empty値は文字列として取り扱われた場合、""に変換されてしまうので

『If msg = Empty Then』 とかやってしまうと、だめですね。
IsEmpty()関数で判定する必要があります。

vbs勉強中 さん 2006年 12月 17日 21時 49分 18秒

inputboxでブランクのままOKを押すと
""が返され
キャンセルでも""返される場合は
どのように処理をわければいいのでしょうか?

死者の代弁者 さん 2006年 12月 17日 04時 25分 49秒

>suzuki さん (suzuki100-100@infoseek.jp) 2006年 12月 15日 15時 47分 38秒

http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug05/hey0816.mspx
イベント ログで特定のイベントの発生を監視する方法はありますか

これのことでしょうか?

suzuki さん (suzuki100-100@infoseek.jp) 2006年 12月 15日 15時 47分 38秒
URL:イベントビュアーの特定イベントを画面のPOPアップに表示

はじめまして、勉強しながら拝見させていただいております。さて、イベントビュアーに発生した特定のイベントについてWSHで指定すると、画面のポップアップに表示されると知り合いに伺いました。(例えば イベントID28が発生したら、サーバ管理者の使用するPC画面に イベントID28が発生しました)
 これに該当するソースがMSにもないように思われます。もし、ご存知でしたら教えていただけませんでしょうか?

死者の代弁者 さん 2006年 12月 11日 18時 52分 09秒

>ぱたぱた さん (hata@alvo.co.jp) 2006年 12月 10日 17時 45分 49秒

VBScriptを使用しなくても、net localgroupというコマンドで、ご希望の操作は可能です。
書式も簡単ですから、使い方はヘルプを見てください。

しかし折角VBScriptで調べていらっしゃいますので、VBScriptで。

http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct05/hey1024.mspx
Hey, Scripting Guy! - ローカル Administrators グループからグループを削除する方法はありますか

ここに詳しい解説があります。
というか、追加のときのADDをREMOVEに変えるだけなんですけどね。

http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/local.mspx
Hey, Scripting Guy! ‐ ローカル アカウント

このあたりも参考になるでしょう。

ぱたぱた さん (hata@alvo.co.jp) 2006年 12月 10日 17時 45分 49秒

初めて投稿します。

ユーザ管理で、グループからメンバを特定のメンバを削除、追加をしたいスクリプトを考察しています。


Domain:test
GROUP :Group_A,Group_B,Group_C

Group_C に Group_A と Group_B がメンバとして存在しています。
このGroup_C から Group_B をメンバから削除と追加をスクリプトで
記載したいのですが、?部分をどのように書いてよいか判らずにいます。

Set objUser = GetObject("WinNT://" & "TEST")
if objUser.Name="Group_C" then
  ?
End if

新規にユーザ追加するscriptはMicrosoftなどのWEBで書かれておりますが
Groupのメンバから外したり、追加する場合は、どのように記載したらよいか
教えて頂けないでしょうか。もしくは、このWEBに記載されているなどのような
情報でも構いません。

よろしくお願いします。










ぱん さん 2006年 12月 08日 18時 25分 46秒

実行するとテキストボックスがある画面を表示し、常にどのウィンドウよりも最全面にする方法を知りたいです。
テキストボックスの無いダイアログボックスであればvbscriptで実装できたんですが。。。(msgboxの引数を使って)

ゆゆ さん 2006年 11月 28日 23時 40分 04秒

むたぐちさんへ

ご解答ありがとうございました。
>セキュリティ上の制約
やはりそうでしたか・・・あれからいろいろ探して、かなり厳しいことだけはわかってたんですが・・。

他の方法を検討してみます。
ありがとうございました。

管理人むたぐち さん 2006年 11月 28日 21時 43分 20秒

ブログの方に近況を上げておきました〜。
http://blogs.wankuma.com/mutaguchi/archive/2006/11/28/47454.aspx


To: ゆゆ さん

> vbスクリプトでdocument.forms[i].elements[i].click でダウンロードボタンにクリックイベントをおこさせると「ファイルの保存」ダイアログが開くのですが、このダイアログのファイル名のデフォルト値を取得し、そこにダウンロード先のフルパスを設定したいのですが、どうすれば取得できるのでしょうか??

これはセキュリティ上の制約で、できなかったと思います。
というわけでほかの手段を検討してみてください。


To: マクベの壺 さん

> 以下のようにしてIEを起動させているのですが、検索(ctrl + f)を
> して文字列検索を行い、ヒットした場所まで画面をスクロール
> させたいと思っております。

いろいろ探したんですがこんな方法で出来るようです。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200408_04080093.html
VBScriptに書き直してみました。

Set objIE = CreateObject("InternetExplorer.Application")

strSearchWord="牟田口大介" '検索する文字列

objIE.Visible = True
objIE.Navigate("http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop.htm")

Do While objIE.Busy Or objIE.ReadyState <> 4
     WScript.Sleep 100
Loop

Set Document = objIE.Document
Set Window = Document.parentWindow
Set objRange = Document.body.createTextRange
strBMK = ""

Do While objRange.findText(strSearchWord)
     If strBMK = "" Then
          strBMK = objRange.getBookmark
          objRange.execCommand "selectAll"
     End If
     objRange.collapse False
Loop

If Len(strBMK)>0 Then
     objRange.moveToBookmark strBMK
     objRange.scrollIntoView
End If


To: Katsumi さん

> それで、私自身で一から同様のツールを開発し、幾つかのβバージョンを経て、先日 ver 1.0 の公表になりましたので、お知らせいたします。

ご紹介ありがとうございます。
後ほど、リンクのページからリンクさせていただきたいと思います。

いりや さん 2006年 11月 24日 20時 54分 04秒

およよさん、

ポインタ情報ありがとうございます! 助かりました。

# ファイルの更新日付が 1998 年 2 月とか 4 月とか・・・八年くらい前のものなんですね・・・。

およよ さん 2006年 11月 24日 19時 44分 21秒

ここから。
http://download.microsoft.com/download/winscript56/Install/1.00/W98NT42KMe/JA/sct10jp.exe
ヘルプがあるけど、見るほどの内容はないと思う。

いりや さん 2006年 11月 24日 14時 24分 57秒

お久しぶりです。

最近 ScriptControl を利用するプログラムに遭遇するのですがこの COM オブジェクトの外部仕様を説明した文書はどこかにありますでしょうか。。msdn を散策したのですが見つからず Object Browser で IDL を出力させるも分からない所が多く。そもそも WSH に元々バンドルされているものかどうかさえ分かっていない、そんな状況です。

ご存知の方いらっしゃいましたらご教授いただけると幸いです。

Katsumi さん 2006年 11月 24日 14時 09分 24秒
URL:http://kandk.cafe.coocan.jp/sfcmini/

 こんにちは、以前(もう一年ほど前になりますが)DynaWrap のライセンスについてお伺いしたものです。その節は、お返事いただいて有難うございました。結局、DynaWrap を現在供給している方(Gunter Bornさん)でも、原作者の方とも連絡が取れないらしく、ライセンスが何なのか不明ということでした。

 それで、私自身で一から同様のツールを開発し、幾つかのβバージョンを経て、先日 ver 1.0 の公表になりましたので、お知らせいたします。

 DynaWrap と同様に WSH から Win32API の使用ができます。加えて、構造体を引数としてAPIに渡すことも出来ますし、EnumWindows などのコールバック関数を用いる API も使用可能です。加えて、ウィンドウプロシージャも使えますので、簡単なGUIを構築することも出来ます。詳しくは、

http://kandk.cafe.coocan.jp/sfcmini/

をご覧ください。このページからダウンロードも出来ます。ライセンスは、LGPLです。

マクベの壺 さん 2006年 11月 23日 18時 25分 48秒

IEの操作について教えてください。

以下のようにしてIEを起動させているのですが、検索(ctrl + f)を
して文字列検索を行い、ヒットした場所まで画面をスクロール
させたいと思っております。ExecWBのOLECMDID_SHOWFINDなども
試しているのですが、上手くできません。ExecWBを使わない方法
でも構いませんので、ご教授お願いいたします。

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate("URL")

ゆゆ さん 2006年 11月 22日 22時 16分 05秒

はじめまして。スクリプト超初心者のためできることとできないことの区別すらつかなくて困っています。どなたかご教授ください。

とあるWEBページにアクセスしてweb上のダウンロードボタンをクリックして規定のパスにファイルを保存したいのです。
vbスクリプトでdocument.forms[i].elements[i].click でダウンロードボタンにクリックイベントをおこさせると「ファイルの保存」ダイアログが開くのですが、このダイアログのファイル名のデフォルト値を取得し、そこにダウンロード先のフルパスを設定したいのですが、どうすれば取得できるのでしょうか??

ファイルの選択ダイアログが表示されるときは、必ずカーソルはファイル名のとこにいるものなのでしょうか??

素人質問ですがよろしくお願いします。

Return