質問者
グループポリシー ログオン MACアドレス取得

質問
すべての返信
-
フォーラムオペレーターの栗下 望です。
ruykwqef さん、ご投稿いただきありがとうございます。ご質問いただいた内容について回答とは無関係で恐縮ですが
以下スレッドは ruykwqef さんの投稿されたスレッドでしょうか?・グループポリシー ログオン MACアドレス取得
https://okwave.jp/qa/q9402617.htmlもしそうでしたら、複数の場所で同一内容のスレッドを投稿されますと、
回答が寄せられた際に、情報が分散してしまいますので、
どちらか1つのスレッドに絞っていただければ幸いです。どうぞよろしくお願いいたします。
MSDN/TechNet Community Support 栗下 望
-
-
ご返信ありがとうございます。
ご指摘のとおり、書き込み可能なパスへ変更し、書き込みを確認後、次のようにメッセージされます。
上記の現在のディレクトリで CMD.EXE を開始しました。
UNC パスはサポートされません。Windows ディレクトリを既定で使用します。
C:\Windows>・ソfor /f "tokens=1,2,3 delims=," %i in ('getmac /v /fo csv ') do ( echo hostname,%i,%k ) 1>>\\hostname\pass1\filename.txt
'・ソfor' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。ソfor・・・と出ている部分が気になります。
よろしくお願いいたします。
-
次のサンプルスクリプトを検索いたしました。
出力される内容としては期待どおりなのですが、
グループポリシーのログオンへ当て込みたいので、書出し先をSYSVOL配下にしたいためパスの指定方法、
加えて、UAC管理者パスのステップを外すにはどのようにアレンジすべきかご指導のほどお願いいたします。
Option Explicit
'
' 管理者権限に昇格
'
Dim wmi
Dim os
Dim shapp
Dim val
do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7
' OSのチェック
Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set os = wmi.ExecQuery("SELECT *FROM Win32_OperatingSystem")
For Each val in os
if left(val.Version, 3) < 6.0 then
exit do 'Exit if not vista
End If
Next
' 管理者権限で実行
Set shapp = CreateObject("Shell.Application")
shapp.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas"
WScript.Quit
loop
'
' 取得したい情報の変数定義
'
'
Dim oClassSet ' クラスセット
Dim oLocator ' ロケーター
Dim oService ' サービス
Dim oClass
Dim strNow ' 日付取得
Dim strProduct ' 型名
Dim strSerial ' BIOSシリアル番号
Dim strComputer ' コンピュータ名
Dim strNICInfo '
Dim strSubnet ' サブネットマスク
Dim strGateway ' デフォルトゲートウエイ
Dim strDNS ' DNS
Dim strTmp
' 日付情報取得
strNow = Now
' ローカルコンピュータに接続する
'Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
'Set oService = oLocator.ConnectServer
strComputer = "."
Set oService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
' Win32_ComputerSystemProductクラスを使う
Set oClassSet = oService.ExecQuery("Select * From Win32_ComputerSystemProduct")
' 型名を取得する
For Each oClassSet in oClassSet
strProduct = Trim(oClassSet.Name)
Next
Set oClassSet = Nothing
' Win32_BIOSクラスを使う
Set oClassSet = oService.ExecQuery("Select * From Win32_BIOS")
'コレクションを解析し、シリアル番号を取得する
For Each oClass In oClassSet
strSerial = Trim(oClass.SerialNumber)
Next
Set oClassSet = Nothing
'Win32_OperatingSystemクラスを使う(オペレーティングシステム)
Set oClassSet = oService.ExecQuery("Select * From Win32_OperatingSystem")
'コレクションを解析し、コンピュータ名を取得する
For Each oClass In oClassSet
strComputer = Trim(oClass.CSName)
Next
Set oClassSet = Nothing
' Win32_NetworkAdapterConfigurationクラスを使う(ネットワークアダプターの属性と動作)
Set oClassSet = oService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration")
For Each oClass In oClassSet
If oClass.IPEnabled = True Then ' IPアドレス無効は、無視する
' サブネット
If isNull(oClass.IPSubnet) Then
strSubnet = ""
Else
strSubnet = oClass.IPSubnet(0)
'strSubnet = Join(oClass.IPSubnet, ",")
'strSubnet = Replace(strTmp, ",", "/")
End If
' デフォルトゲートウエイ
If isNull(oClass.DefaultIPGateway) Then
strGateway = ""
Else
strGateway = Join(oClass.DefaultIPGateway, ",")
End If
' 優先DNS、代替DNS
If isNull(oClass.DNSServerSearchOrder) Then
strDNS= ""
Else
strDNS = Join(oClass.DNSServerSearchOrder, ",")
End If
' NIC名称、MACアドレス、IPアドレス
If strNICInfo = "" Then
' 最初
strNICInfo = Trim(oClass.Description) & "," & Trim(oClass.MACAddress) & "," & _
oClass.IPAddress(0) & "," & strSubnet & "," & strGateway & "," & strDNS
Else
' 2つ目以降
strNICInfo = strNICInfo & "," & Trim(oClass.Description) & "," & Trim(oClass.MACAddress) & "," & _
oClass.IPAddress(0) & "," & strSubnet & "," & strGateway & "," & strDNS
End If
End If
Next
'使用した各種オブジェクトを解放する
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing
'
' CSVファイルへの保存
'
Dim fso
Dim tso
Dim strOpenFile
Dim strScriptPath
' ファイルの読み書きモードの指定(追加書き込みを使う)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
' ファイルシステムオブジェクトを使う
Set fso = CreateObject("Scripting.FileSystemObject")
' スクリプトのあるパスを取得する
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
' 保存するCSVファイル名を合成する(スクリプトのあるパスに保存)
strOpenFile = fso.BuildPath(strScriptPath,"inventory.csv")
' ファイルを開く
Set tso = fso.OpenTextFile(strOpenFile, ForAppending, true)
' 情報を書き込む(追加書き込みモード)
tso.Write(strNow & "," & strProduct & "," & strSerial & "," & strComputer & "," & strNICInfo & vbCrLf)
' ファイルを閉じる
tso.Close
'使用した各種オブジェクトを解放する
Set fso = Nothing
Set tso = Nothing