ラベル VBS の投稿を表示しています。 すべての投稿を表示
ラベル VBS の投稿を表示しています。 すべての投稿を表示

2013年1月31日木曜日

無線APへのMAC制限をコントローラ無しで一括設定

前に書いたMACリスト一括作成用のVBSツールのサンプルです。

VBSでPlink.exeに読み込ませるコマンドファイルを作成するのですが、結局 plink.exe がうまいこといかなかったのでNGですが。。書いておきます。

ここでは、MAC.log ファイルにMACアドレス一覧を一行ずつ入力しておいて、そのファイルを読み込ませてアクセスリストを作ってます。

作成したアクセスリストを plink.exe に読み込ませて、リストを一括作成!という予定だったのです。。

無線のMACアドレス制限をコントローラを使わずに、安く一括管理!という想定だったのです。

仕方ないから TeraTerm のマクロでやりますかね。。 sendkey だとあんまりかっこよくないのでやりたくなかったのです。

--------------------------------------------------------------------------------------

Dim objFS, objFolder
Dim strPath

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("..")
strPath = objFolder.Path

Set objFile = objFSO.OpenTextFile(strPath & "\MAC-Update\MAC-list\MAC.log", ForReading)

strContents = objFile.ReadAll
objFile.Close

Dim arrLines
Dim MACCount

 arrLines = Split( strContents, vbCrLf )
 MACCount = UBound(arrLines)

MsgBox("作成するMACリスト数は" & MACCount - 1 & "です。")

Dim i
  For i = 0 to MACCount - 2
outFile.WriteLine "access-list 711 permit " & arrLines(i) & "   0000.0000.0000"
Next

outfile.Close

MsgBox("テスト完了")

--------------------------------------------------------------------------------------










このエントリーをはてなブックマークに追加

VBSで自身のファイルPATHを取得するには

ファイルのあるPATHをVBSで読み込ませるサンプルです。

VBSファイルを実行しているフォルダのPATHを調べて、変数に入れて仕込んでいます。

VBSで作成したツールを渡したときに、ファイルを読み込んだり連携して動かしている場合なんかは、制御用のファイルを含んだフォルダで渡しますよね。

渡した先はどのPATHから実行するかわからないので、自身のPATHを実行前に読み込ませます。

そうすれば制御ファイルはどこへいってもOKになりますので。渡したフォルダからしっかり実行してもらえればOKになります。

サンプル
---------------------------------------------------------------------------

Dim objFS, objFolder
Dim strPath

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("..")
strPath = objFolder.Path

Set objFile = objFSO.OpenTextFile(strPath & "\MAC-Update\MAC-list\MAC.log", ForReading)

strContents = objFile.ReadAll
objFile.Close


---------------------------------------------------------------------------

このサンプルでは、VBSを実行しているフォルダPATHを  strPath に入れて、同じフォルダにある \MAC-Update\MAC-list\MAC.log ファイルを読み込んでます。









このエントリーをはてなブックマークに追加

2013年1月4日金曜日

VBSスクリプトでクライアントへソフト配布

VBSログオンスクリプトを使ってクライアントへソフトをセットアップする場合に、全てのクライアントへセットアップを実施したくないケースがあります。

最近はシンクライアントの導入も進んでいるので、1名のユーザが物理マシンと仮想マシンの両方を使用しているケースがあります。

物理マシンにはインストールしたいけれど、仮想マシンにはインストールしたくないなどの場合です。

その場合にはログインユーザ名でインストールできないので、コンピュータ名で判断するスクリプトを作成しました。

仮想マシンのコンピュータ名は末尾に「-vClient」が付きます。

なので、-vClientが末尾に付いている仮想マシンへはインストールしないようにしています。


IngServiceCount = InStr(UCase(objItem.Name), "-vClient")  の箇所です。


また、既にインストールされているかどうかは、Windowsサービスが起動しているかどうかチェックして判断しています。

「TESTSERVICE_01」という名前のサービス名が存在している場合は、既にインストール済と判断しています。


strServiceName = "TESTSERVICE_01" の箇所です。


最後にインストール対象と判断されたクライアントへは、以下を実行してインストールを開始します。


objWShell.Run "\\testdomain.local\NETLOGON\setup.exe", 0, False



★★★ 以下はサンプルVBSスクリプトです。 ★★★


On Error Resume Next
Dim objWShell
Dim objServiceList
Dim strQuery
Dim strServiceName
Dim IngServiceCount
Dim result
strComputer = "."
 
Set objWShell = CreateObject("WScript.Shell")
strServiceName = "TESTSERVICE_01"
IngServiceCount = 0

strQuery = "SELECT * FROM Win32_Service" &_
" WHERE Name ='" & strServiceName & "'"
Set objServiceList = GetObject("winmgmts:").ExecQuery(strQuery)
For Each objServiceInfo In objServiceList
  IngServiceCount = IngServiceCount + 1
Next

If IngServiceCount > 0 Then
  WScript.Quit
End If

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")  

For Each objItem in colItems
    IngServiceCount = InStr(UCase(objItem.Name), "-vClient")
Next

If IngServiceCount > 0 Then
  WScript.Quit
End If

objWShell.Run "\\testdomain.local\NETLOGON\setup.exe", 0, False
Set objServiceList = Nothing
Set objWShell = Nothing









このエントリーをはてなブックマークに追加