iK- 当前离线
列兵
'用法 cscript /nologo ics.vbs "内网适配器名称" "外网网络连接名称" "off/on" OPTION EXPLICIT DIM ICSSC_DEFAULT, CONNECTION_PUBLIC, CONNECTION_PRIVATE, CONNECTION_ALL DIM NetSharingManager DIM PublicConnection, PrivateConnection DIM EveryConnectionCollection DIM objArgs DIM priv_con, publ_con DIM switch ICSSC_DEFAULT = 0 CONNECTION_PUBLIC = 0 CONNECTION_PRIVATE = 1 CONNECTION_ALL = 2 Main() sub Main( ) Set objArgs = WScript.Arguments if objArgs.Count = 3 then priv_con = objArgs(0) '内网适配器名称 publ_con = objArgs(1) '外网网络连接名称 switch = objArgs(2) '状态切换开关 on 为打开 off 相反 if Initialize() = TRUE then GetConnectionObjects() FirewallTestByDeviceName priv_con,publ_con end if else if Initialize() = TRUE then GetConnectionObjects() FirewallTestByDeviceName "list","list" end if end if end sub sub FirewallTestByDeviceName(con1,con2) on error resume next DIM Item DIM EveryConnection DIM objNCProps DIM szMsg DIM bFound1,bFound2 WScript.echo(vbCRLF) bFound1 = false bFound2 = false for each Item in EveryConnectionCollection set EveryConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) set objNCProps = NetSharingManager.NetConnectionProps(Item) szMsg = "Name: " & objNCProps.Name & vbCRLF & _ "Guid: " & objNCProps.Guid & vbCRLF & _ "DeviceName: " & objNCProps.DeviceName & vbCRLF & _ "Status: " & objNCProps.Status & vbCRLF & _ "MediaType: " & objNCProps.MediaType if EveryConnection.SharingEnabled then szMsg = szMsg & vbCRLF & _ "SharingEnabled" & vbCRLF & _ "SharingType: " & ConvertConnectionTypeToString(EveryConnection.SharingConnectionType) end if if objNCProps.DeviceName = con1 then bFound1 = true if EveryConnection.SharingEnabled = False and switch="on" then szMsg = szMsg & vbCRLF & "Not Shared... Enabling private connection share..." EveryConnection.EnableSharing CONNECTION_PRIVATE end if if switch="off" then szMsg = szMsg & vbCRLF & "Shared... DisEnabling private connection share..." EveryConnection.EnableSharing CONNECTION_ALL end if end if if objNCProps.Name = con2 then bFound2 = true if EveryConnection.SharingEnabled = False and switch="on" then szMsg = szMsg & vbCRLF & "Not Shared... Enabling public connection share..." EveryConnection.EnableSharing CONNECTION_PUBLIC end if if switch="off" then szMsg = szMsg & vbCRLF & "Shared... DisEnabling public connection share..." EveryConnection.EnableSharing CONNECTION_ALL end if end if WScript.Echo(szMsg & vbCRLF) next if( con1 <> "list" ) then if( bFound1 = false ) then WScript.Echo( "Connection " & chr(34) & con1 & chr(34) & " was not found" ) end if if( bFound2 = false ) then WScript.Echo( "Connection " & chr(34) & con2 & chr(34) & " was not found" ) end if end if end sub function Initialize() DIM bReturn bReturn = FALSE set NetSharingManager = Wscript.CreateObject("HNetCfg.HNetShare.1") if (IsObject(NetSharingManager)) = FALSE then Wscript.Echo("Unable to get the HNetCfg.HnetShare.1 object") else if (IsNull(NetSharingManager.SharingInstalled) = TRUE) then Wscript.Echo("Sharing isn't available on this platform.") else bReturn = TRUE end if end if Initialize = bReturn end function function GetConnectionObjects() DIM bReturn DIM Item bReturn = TRUE if GetConnection(CONNECTION_PUBLIC) = FALSE then bReturn = FALSE end if if GetConnection(CONNECTION_PRIVATE) = FALSE then bReturn = FALSE end if if GetConnection(CONNECTION_ALL) = FALSE then bReturn = FALSE end if GetConnectionObjects = bReturn end function function GetConnection(CONNECTION_TYPE) DIM bReturn DIM Connection DIM Item bReturn = TRUE if (CONNECTION_PUBLIC = CONNECTION_TYPE) then set Connection = NetSharingManager.EnumPublicConnections(ICSSC_DEFAULT) if (Connection.Count > 0) and (Connection.Count < 2) then for each Item in Connection set PublicConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) next else bReturn = FALSE end if elseif (CONNECTION_PRIVATE = CONNECTION_TYPE) then set Connection = NetSharingManager.EnumPrivateConnections(ICSSC_DEFAULT) if (Connection.Count > 0) and (Connection.Count < 2) then for each Item in Connection set PrivateConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item) next else bReturn = FALSE end if elseif (CONNECTION_ALL = CONNECTION_TYPE) then set Connection = NetSharingManager.EnumEveryConnection if (Connection.Count > 0) then set EveryConnectionCollection = Connection else bReturn = FALSE end if else bReturn = FALSE end if if (TRUE = bReturn) then if (Connection.Count = 0) then Wscript.Echo("No " + CStr(ConvertConnectionTypeToString(CONNECTION_TYPE)) + " connections exist (Connection.Count gave us 0)") bReturn = FALSE 'valid to have more than 1 connection returned from EnumEveryConnection elseif (Connection.Count > 1) and (CONNECTION_ALL <> CONNECTION_TYPE) then Wscript.Echo("ERROR: There was more than one " + ConvertConnectionTypeToString(CONNECTION_TYPE) + " connection (" + CStr(Connection.Count) + ")") bReturn = FALSE end if end if Wscript.Echo(CStr(Connection.Count) + " objects for connection type " + ConvertConnectionTypeToString(CONNECTION_TYPE)) GetConnection = bReturn end function function ConvertConnectionTypeToString(ConnectionID) DIM ConnectionString if (ConnectionID = CONNECTION_PUBLIC) then ConnectionString = "public" elseif (ConnectionID = CONNECTION_PRIVATE) then ConnectionString = "private" elseif (ConnectionID = CONNECTION_ALL) then ConnectionString = "all" else ConnectionString = "Unknown: " + CStr(ConnectionID) end if ConvertConnectionTypeToString = ConnectionString end function复制代码
评分人数
TOP
lxzzr (庄生晓梦)当前离线
论坛巡查
GNU 当前离线
上尉
523066680 (消遣区)当前离线
版主