2009年4月23日星期四
用bootrec.exe工具修复vista的启动问题。
2009年4月2日星期四
Windows Server 2003 中的FSMO角色
2009年3月25日星期三
windows 2003 DNS的新增内容之存根区域(Stub Zone)
- 委派区域的起始授权机构 (SOA) 资源记录、名称服务器 (NS) 资源记录和粘附 A 资源记录。
- 可用来更新存根区域的一个或多个主服务器的 IP 地址。
2009年3月4日星期三
利用vbs脚本获得局域网内PC的配置信息
我们单位使用DELL和LENOVO的品牌电脑,DELL电脑BIOS提供序列号用于报修,所以这里查询了主机型号、序列号、生产厂家和总内存大小等等,可以更加情况添加相应的内容。我建立info.vbs脚本内容如下:
On Error Resume Next
'从参数输入电脑ip或者电脑名:
Set objArgs = WScript.Arguments
strComputer = objArgs(0)
'主机名、电脑型号和内存总量:"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set sysInfo = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objSysInfo in sysInfo
WScript.Echo "主机名: " & objSysInfo.Name
WScript.Echo "生产厂家: " & objSysInfo.Manufacturer
WScript.Echo "型号: " & objSysInfo.Model
Next
'获得主机序列号:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
For Each objItem In colItems
WScript.Echo "出厂序列号: " & objItem.SerialNumber
Next
'获得CPU信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor", , 48)
For Each objItem In colItems
WScript.Echo "CPU型号: " & Trim(objItem.Name)
Next
'获得内存容量
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem", , 48)
For Each objItem In colItems
WScript.Echo "总内存:" & CStr(Int(objItem.TotalPhysicalMemory / 1048576)) & "M"
Next
'收集硬盘基本信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive", , 48)
For Each objItem In colItems
WScript.Echo "硬盘:" & Trim(objItem.Caption) & " 容量为:" &CStr(Int(objItem.Size/1000000000)) & "G"
Next
'收集软驱信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_FloppyDrive", , 48)
For Each objItem In colItems
WScript.Echo "软驱:" & Trim(objItem.Caption)
Next
'收集CDROM信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive", , 48)
For Each objItem In colItems
WScript.Echo "光驱: " & Trim(objItem.Name)
Next
'收集显卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController", , 48)
For Each objItem In colItems
WScript.Echo "显卡: " & Trim(objItem.Caption) & Trim(objItem.VideoModeDescription)
Next
'收集网卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter", , 48)
For Each objItem In colItems
WScript.Echo "网卡: " & Trim(objItem.Description) & (objItem.MACAddress)
Next
'收集声卡信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_SoundDevice", , 48)
For Each objItem In colItems
WScript.Echo "声卡: " & Trim(objItem.ProductName)
Next
WScript.Echo " "
以上内容保存为info.vbs脚本,获得单个主机的配置信息的方法是开始--运行--cmd--回车,在cmd窗口中输入cscript info.vbs xxx,其中xxx为目标机器的ip或者主机名。
因为以上脚本可以从命令行获得参数,所以可以方便的加入批处理中执行。例如我公司内有多个VLAN,对其中一个VLAN22(IP范围为10.8.22.10到10.8.22.200),查询所有主机的配置信息的批处理如下:
for /L %%1 in (10,1,200) do @ping -n 1 10.8.22.%%1 丨find "timed" >nul 2>nul && echo 10.8.22.%%1_is_inexistent 丨丨 cscript /nologo info.vbs 10.8.22.%%1 >> 22.txt
该批处理首先判断一个IP是否存在,然后获取活动主机的电脑配置信息,保存在22.txt中以备查。(因无法显示,注意将换为丨换为英文的,即普通键盘上的"shift+\"键)
前提是你是所有PC的管理员,最好在域环境下使用。
关于VBS脚本使用请参考微软的相关文档:
http://www.microsoft.com/china/technet/community/scriptcenter/default.mspx
2009年3月3日星期二
用脚本自动配置IE代理服务器
自动配置IE代理的脚本,用户根据不同的网络环境自动配置IE代理服务器。
把以上代码另存为proxy.pac的文件,如:c:\proxy.pac,然后在IE的菜单里"工具"->"INTEL选项"->"连接"->局域网设置
把使用自动配置脚本选上,然后在地址栏填入file://c:/proxy.pac,注意file后是两斜杠,要使设置生效,需要关闭IE再重新打开.
现在我们介绍下这个proxy.pac脚本文件,脚本的语法是js语法,js的内置函数可以使用,要实现自动配置代理,需要实现FindProxyForURL这个函数,其参数url代表要访问的连接,host代表要访问连接的主机名,该函数有三个返回参数
direct:直接连接
proxy IP:PORT
socket IP:PORT
返回结果大小写不敏感
PAC脚本另外一个重要的应用是多台代理服务器并存的情况下,通过pac脚本的控制:
- 用户随机选择使用多台代理服务器中的任意一台来达到流量负载均衡的目的;
- 管理员通过PAC脚本控制用户使用和不使用某台代理服务器,这样可以空出时间对代理服务器进行维护;
- 让服务器工作在主备模式,当主服务器宕机时,会自动切换到其它备用服务器而不会中断服务;
- 根据访问目的地的不同,自动选择最佳代理服务器。
下面列举几个PAC的实例,顺便学习下它的语法
a、isPlainHostName(host),本例演示判断是否为本地主机,如http://myservername/
的方式访问,如果是直接连接,否则使用代理
b、dnsDomainIs(host, "")、localHostOrDomainIs(host, ""),本例演示判断访问主机是否属于某个域和某个域名,如果属于.company.com域的主机名,而域名不是
www.company.com和home.company.com的直接连接,否则使用代理访问。
c、isResolvable(host),本例演示主机名能否被dns服务器解析,如果能直接访问,否 则就通过代理访问。
d、isInNet(host, "", ""),本例演示访问IP是否在某个子网内,如果是就直接访问,否则就通过代理,例子演示访问清华IP段的主页不用代理。
e、shExpMatch(host, ""),本例演示根据主机域名来改变连接类型,本地主机、*.edu、 *.com分别用不同的连接方式。
f、url.substring(),本例演示根据不同的协议来选择不同的代理,http、https、ftp、
gopher分别使用不同的代理。
g、dnsResolve(host),本例演示判断访问主机是否某个IP,如果是就使用代理,否则直接连接。
h、myIpAddress(),本例演示判断本地IP是否某个IP,如果是就使用代理,否则直接使用连接。
i、dnsDomainLevels(host),本例演示访问主机的域名级数是几级,就是域名有几个点, 如果域名中有点,就通过代理访问,否则直接连接。
j、weekdayRange(),本例演示当前日期的范围来改变使用代理,如果是GMT时间周三到周六,使用代理连接,否则直接连接。
k、最后一个例子是演示随机使用代理,这样可以好好利用代理服务器。
访问量统计: