欢迎光临
我们一直在努力

VBScript009-list_client

' ============================================================
' IAS RADIUS 客户端信息导出脚本
' 功能:连接指定 IAS 服务器,读取本地数据存储中的 RADIUS 客户端配置,
' 并将服务器名、客户端名称、IP 地址、共享密钥导出为 CSV 文件。
' 说明:脚本使用 IAS SDO(IAS.SdoMachine)接口访问 IAS 配置。
' ============================================================

Option Explicit

' ———- 数据存储类型常量 ———-
' DATA_STORE_LOCAL 表示读取本地数据存储(非 Active Directory)
Const DATA_STORE_LOCAL = 0
' SDO 对象的名称属性
Const PROPERTY_SDO_NAME = 2

' ———- IAS 集合属性常量 ———-
' 策略集合
Const PROPERTY_IAS_POLICIES_COLLECTION = 1025
' 配置文件集合
Const PROPERTY_IAS_PROFILES_COLLECTION = 1026

' 协议集合(如 Microsoft Radius Protocol)
Const PROPERTY_IAS_PROTOCOLS_COLLECTION = 1027

' RADIUS 客户端集合
Const PROPERTY_RADIUS_CLIENTS_COLLECTION = 1029

' ———- RADIUS 客户端属性常量 ———-
' 客户端是否要求签名
Const PROPERTY_CLIENT_REQUIRE_SIGNATURE = 1024
' 客户端共享密钥
Const PROPERTY_CLIENT_SHARED_SECRET = 1026
' 客户端 NAS 厂商
Const PROPERTY_CLIENT_NAS_MANUFACTURER = 1027
' 客户端 IP 地址
Const PROPERTY_CLIENT_ADDRESS = 1028

' ———- 配置文件属性常量 ———-
' 配置文件属性集合
Const PROPERTY_PROFILE_ATTRIBUTES_COLLECTION = 1024
' 属性 ID
Const PROPERTY_ATTRIBUTE_ID = 1024
' 属性显示名称
Const PROPERTY_ATTRIBUTE_DISPLAY_NAME = 1035

' ———- 策略属性常量 ———-
' 策略约束
Const PROPERTY_POLICY_CONSTRAINT = 1024
' 策略优先级
Const PROPERTY_POLICY_MERIT = 1025
' 策略关联的配置文件名称
Const PROPERTY_POLICY_PROFILE_NAME = 1028
' 策略动作(允许/拒绝)
Const PROPERTY_POLICY_ACTION = 1029
' 策略条件集合
Const PROPERTY_POLICY_CONDITIONS_COLLECTION = 1030

' 条件文本
Const PROPERTY_CONDITION_TEXT = 1024

' ———- 变量声明 ———-
' SDO 对象:机器对象与服务对象
Dim sdoMachine, sdoServiceSDO
' 各类配置集合对象
Dim sdoCollProfiles, sdoCollProtocols, sdoCollClients, sdoCollPolicies
Dim sdoCollAttributes, sdoCollConditions
' RADIUS 协议对象
Dim sdoRADIUS
' 遍历集合时使用的临时项变量
Dim vtProfile, vtProtocol, vtClient, vtPolicy, vtAttribute, vtCondition
' 目标 IAS 服务器名称
Dim ServerName

' 文件操作相关变量
Dim strDateTime, strFileName, objFSO, objTextFile

' 交互式输入 IAS 服务器名称,为空则循环提示
'ServerName="pekw045a"
Do
ServerName = InputBox("Please input IAS server name", "Question", "PEKW045A")
Loop Until Len(ServerName) > 0

' 生成包含当前日期和时间的文件名,避免多次导出互相覆盖
strDateTime = DatePart("yyyy",Date)
' 月份补零
If DatePart("m",Date) < 10 Then
strDateTime = strDateTime & "0"
End If
strDateTime = strDateTime & DatePart("m",Date)
' 日期补零
If DatePart("d",Date) < 10 Then
strDateTime = strDateTime & "0"
End If

strDateTime = strDateTime & DatePart("d",Date) & "_"

' 小时补零
If DatePart("h",Time) < 10 Then
strDateTime = strDateTime & "0" & DatePart("h",Time)
Else
strDateTime = strDateTime & DatePart("h",Time)
End If
' 分钟补零
If DatePart("n",Time) < 10 Then
strDateTime = strDateTime & "0"
End If
strDateTime = strDateTime & DatePart("n",Time)
' 最终文件名格式:服务器名_年月日_时分.csv
strFileName = ServerName & "_" & strDateTime & ".csv"
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 创建用于保存结果的文本文件(True 表示覆盖已存在文件)
Set objTextFile = objFSO.CreateTextFile _
(strFileName, True)

' 写入 CSV 表头:服务器、交换机、IP 地址、共享密钥
objTextFile.WriteLine("""" & "Server" & """,""" & _
"Switch" & """,""" & _
"IP Address" & """,""" & _
"Shared Secret" & """")

' 连接目标 IAS 服务器并获取 IAS 服务 SDO
Set sdoMachine = CreateObject("IAS.SdoMachine")
sdoMachine.Attach ServerName
Set sdoServiceSDO = sdoMachine.GetServiceSDO(DATA_STORE_LOCAL, "IAS")

'
' 列出所有 RADIUS 客户端
'
' 先取协议集合,再定位到 Microsoft Radius Protocol
Set sdoCollProtocols = sdoServiceSDO.GetProperty(PROPERTY_IAS_PROTOCOLS_COLLECTION)
Set sdoRADIUS = sdoCollProtocols.Item("Microsoft Radius Protocol")
' 从 RADIUS 协议对象中取出客户端集合
Set sdoCollClients = sdoRADIUS.GetProperty(PROPERTY_RADIUS_CLIENTS_COLLECTION)

' 调试用:输出客户端数量(默认注释)
'WScript.Echo "On Server " & Chr(34) & ServerName & Chr(34) & " found " & sdoCollClients.Count & " client(s)."
' 遍历每个客户端,逐行写入 CSV
For Each vtClient in sdoCollClients
objTextFile.WriteLine("""" & ServerName & """,""" & _
vtClient.GetProperty(PROPERTY_SDO_NAME) & """,""" &_
vtClient.GetProperty(PROPERTY_CLIENT_ADDRESS) & """,""" &_
vtClient.GetProperty(PROPERTY_CLIENT_SHARED_SECRET) & """")

' 调试用:输出单个客户端详细信息(默认注释)
'WScript.Echo "Client Friendly Name " & Chr(34) & vtClient.GetProperty(PROPERTY_SDO_NAME) & Chr(34) &vbCRLF & "Shared Secret " & Chr(34) & vtClient.GetProperty(PROPERTY_CLIENT_SHARED_SECRET) & Chr(34) & vbCRLF & "IP Address" & Chr(34) & vtClient.GetProperty(PROPERTY_CLIENT_ADDRESS) & Chr(34)
Next 'vtClient
' 在控制台提示导出结果
WScript.Echo "On Server " & Chr(34) & ServerName & Chr(34) & " found " & sdoCollClients.Count & " client(s)."

赞(0)
未经允许不得转载:171主机测评 » VBScript009-list_client
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址