纠正了原作者书写时格式的错误。总的来说,脚本导入对ISA来说还是很方便的,毕竟新建的服务器,一下子导入众多需要被禁止访问的网站,还是真是一件难事。就拿我们现在用的SQUID来说,也是一个TXT文件中记录很多禁止访问的关键字、URL、域名,都是多年工作积攒出来的成果。如果改用ISA,一个一个的再重新添加,无疑增加了很多工作量。如果用脚本的话,拿来以前SQUID使用的TXT文件,用VBS指向它,也就点一下鼠标的时间。真的很不错。没想到ISA跟VBS也会有联系,没看此贴之前一点都不到,可见微软的良苦用心!

原文开始:

作为一个网管,相信有领导叫你限制员工上网的情况,例如只限制员工访问某些网站。在禁止的网站数量少的时候,添加URL集或者域名集是一件很简单的事情,如果禁止的网站数量多达1500个呢?如果再使用ISA Server的管理控制台来添加,相信你只会无语到极点。放心,在ISA Server 2004中,已经考虑到了这点。利用它提供的编程接口,你可以很轻松的完成这项任务。你只需要将这些域名集或者URL集放在一个文本文件中,然后其他的事情,可以放心的交给脚本去做。

建立导入脚本

下面是一段脚本,这段脚本的功能是导入“urls.txt”文件中的URL集到ISA Server中定义的“Urls”对象中。将下列代码复制到一个文件中,然后另存为 ImportURLs.vbs。

< ------------------Start with the line below this one----------------------- >

Set Isa = CreateObject("FPC.Root")

Set CurArray = Isa.GetContainingArray

Set RuleElements = CurArray.RuleElements

Set URLSets = RuleElements.URLSets

Set URLSet = URLSets.Item("Urls")

Set FileSys = CreateObject("Scripting.FileSystemObject")

Set UrlsFile = FileSys.OpenTextFile("urls.txt", 1)

For i = 1 to URLSet.Count

URLSet.Remove 1

Next

Do While

UrlsFile.AtEndOfStream <> True

URLSet.Add UrlsFile.ReadLine

Loop

WScript.Echo "Saving..."

CurArray.Save

WScript.Echo "Done"

< ------------------End with the line above this one----------------------- >

×××高亮显示的项你可以根据你自己的需要进行替换,

这行:

Set URLSet = URLSets.Item("Urls")

你可以修改Urls为你在ISA Server中建立的URL集;

这行:

Set UrlsFile = FileSys.OpenTextFile("urls.txt", 1)

你可以将urls.txt修改为你的URL集文本文件名。

下面一段脚本将domains.txt文件中的域名集导入到ISA Server中的Domains对象中,将这段代码复制到一个文件中,另存为ImportDomains.vbs。

< ------------------Start with the line below this one----------------------- >

Set Isa = CreateObject("FPC.Root")

Set CurArray = Isa.GetContainingArray

Set RuleElements = CurArray.RuleElements

Set DomainNameSets = RuleElements.DomainNameSets

Set DomainNameSet = DomainNameSets.Item("Domains")

Set FileSys = CreateObject("Scripting.FileSystemObject")

Set DomainsFile = FileSys.OpenTextFile("domains.txt", 1)

For i = 1 to  DomainNameSet.Count

DomainNameSet.Remove 1

Next

Do While

DomainsFile.AtEndOfStream <> True

DomainNameSet.Add

DomainsFile.ReadLine

Loop

WScript.Echo "Saving..."

CurArray.Save

WScript.Echo "Done"

< ------------------End with the line above this one----------------------- >

×××高亮显示的项你可以根据你自己的需要进行替换,

这行:

Set DomainNameSet = DomainNameSets.Item("Domains")

你可以修改Domains为你在ISA Server中建立的域名集;

这行:

Set DomainsFile = FileSys.OpenTextFile("domains.txt", 1)

你可以将domains.txt修改为你的URL集文本文件名。

使用导入脚本

在使用导入脚本之前,要在ISA Server中建立对应的URL集和域名集对象。

执行以下步骤建立名为URLs的URL集:

在ISA Server管理控制台,展开服务器,点击防火墙策略;

在防火墙策略,点击任务面板上的工具箱,然后点击网络对象标签;

在网络对象标签,点击新建,然后选择URL集;

在新建URL集规则元素对话框,在名字文本框中输入URLs,然后点击确定;

使用脚本来导入URL集和域名集

此时,在网络对象的URL集中显示出了新建立的URLs;

使用脚本来导入URL集和域名集

下一步我们建立名为Domains的域名集,注意,我们建立这样的名字只是为了和脚本文件中的名字对应。执行以下步骤:

在ISA Server管理控制台,展开服务器,点击防火墙策略;

在防火墙策略,点击任务面板上的工具箱,然后点击网络对象标签;

在网络对象标签,点击新建,然后选择域名集;

在新建域名集规则元素对话框,在名字文本框中输入Domains,然后点击确定;

使用脚本来导入URL集和域名集

此时,在网络对象的域名集中显示出了新建立的Domains;

使用脚本来导入URL集和域名集

在防火墙策略面板点击应用以保存修改和更新防火墙策略。

现在我们需要建立两个文本文件 urls.txt 和 domains.txt,这是在脚本中使用的默认文件名

在这个例子中,domains.txt 文件包含以下内容:

stuff.com

blah.com

scumware.com

urls.txt 文件包含以下内容:

http://www.cisco.com

http://www.checkpoint.com

http://www.sonicwall.com

接下来,将这两个文件放在那两个脚本文件相同的目录下,我们在此复制到C盘的根目录。

双击 ImportURLs.vbs 文件,你会看见如下的显示“ Saving...”的对话框,点击OK;

使用脚本来导入URL集和域名集

根据你导入URL数量的多少,几秒后你会看见如下的对话框,显示导入已经完成,点击 OK。

使用脚本来导入URL集和域名集

同样的,双击 ImportDomains.vbs 完成从Domains.txt文件中导入域名集。

如果此时ISA Server控制台已经打开了,关闭它后再次打开(或者在ISA Server管理控制台上点击刷新),此时,你可以在工具箱的网络对象里看见导入的URL集和域名集。

使用脚本来导入URL集和域名集

使用脚本来导入URL集和域名集

如果导入的时候已经有相同的URL或者域名,ISA Server并不会建立重复的项,会保留原来的项。

 

再加一个用VBS在ISA中添加端口范围的脚本

ISA默认只允许TCP 443端口的https协议,其它端口都不允许通过。但有的网站会改变默认端口,这时就需要下面的解决方法:
在ISA用“记事本”新建一个文本,保存为扩展为为vbs的文件。文本文件内容如下:
set isa=CreateObject("FPC.Root")
set tprange=isa.GetContainingArray.ArrayPolicy.WebProxy.TunnelPortRanges
set tmp=tprange.AddRange("SSL 8443", 8443,8443)
tprange.Save
这里需要注意的地方是第3行小括号里的三个数字,意义是名称,端口上限,端口下限。在这里需要访问的是TCP的8443。保存退出,双击运行该脚本,在运行的时候没有提示,如果再次运行,会提示设置已经存在。
运行该脚本后,从“服务”中重新启动ISA Server服务,然后将TCP的8443端口添加到策略中、允许“内网”以TCP的8443端口访问“外网”即可。