公告

关注领域: PowerShell,云计算,互联网技术发展,下一代互联网安全,软件测试,数据库设计,擅长系统分析、架构设计与软件项目管理。
个人简介:
  甘肃武威人,毕业于兰州大学,曾任职于多家IT企业,有多年软件开发、系统架构、系统运营经验。组织和参与过多个国家和部委大型信息系统的设计、开发、测试、优化和运营工作,具有多年项目管理和团队组织经验。
个人主页:
http://txj.shell.tor.hu
CSDN:
http://blog.csdn.net/fuhj02
博客园:
http://fuhj02.cnblogs.com

博客统计信息

51cto推荐博客
用户名:fuhj02
文章数:106
评论数:86
访问量:41007
无忧币:1471
博客积分:2608
博客等级:7
注册日期:2007-11-19

我最近发表的评论

新版百度地图界面.. 回复
百度的其他产品用的不多,但是百度..
51cto全站遭JS挂.. 回复
呵呵,关键是找到思路
51cto全站遭JS挂.. 回复
发文之后的第二天就已经与小废物和..
51cto全站遭JS挂.. 回复
关键是思路,相关的技术都是现成的..
51cto全站遭JS挂.. 回复
呵呵,爱信不信,这个内容确实有,..
     Windows PowerShell是微软为Windows系统开发的Shell及脚本语言技术,它是一种新的命令行外壳和脚本语言,用于实现系统自动化管理。它的出现弥补了与Linux/Unix系统相比Windows在Shell方面的不足,同时也为程序开发人员提供了一种更高效的编写脚本的工具。Windows PowerShell建立在.NET Framework 2.0/3.X的基础上,IT专业人员可通过命令或脚本来管理计算机,从而管理与维护系统,并通过系统自动化来提高工作效率。在Windows 7和Windows server 2008 R2中已经整合内置了PowerShell 2.0,并且支持图形界面操作..
2012-01-03 00:17:27
Renew 成功,连任微软最有价值专家

 昨天收到了来自微软最有价值专家项目组的邮件,成功的renew了,这一年认识了很多MVP的朋友,学到了很多东西,得到了很多机会,衷心感谢所有的朋友,感谢Sisley,感谢MVP项目组,谢谢大家。

 未来的一年里会让自己更加的努力!
 

 
       晚上无意中注意到,ie8中得隐私报告提示51cto博客中有包含第三方域名www.dachongzi.cn的js对应的cookies被限制或阻止,如下图所示:

       很奇怪,为何51cto如此大得技术类网站会包含这么一个不起眼的域名相关的cookies,这引起了我的注意,接下来一探究竟。
        立马打开fiddle,看看可能是那个js包含的内容里被注入了,刷新51cto博客,在fiddle中搜索可疑的域名dachongzi.cn搜索到一条记录,如下图所示,

     然后从这条记录往前看,想必是前面的某个js中包含了加载这个域名的内容,往上看到一个路径为http://logs.51cto.com/rizhi/count/count.js的js,通过ie访问这个js,打开之后发现这个js的最后赫然写着document.write("<img src=\"http://www.dachongzi.cn/index.asp\" width=\"0\" height=\"0\"/>");

js挂马,通过一个宽度和高度都为0的图片将自己主页加载,51cto的流量还是相当大得,如果有这么一个站挂上自己的页面,那流量也是相当牛逼的了,流量SEO的好手段呀,想着我不禁流口水了。根据这个js的功能可以判断这是一个站点访问统计相关的js,估计51cto里面不少的子站都在使用这个脚本来统计流量。那接下来就需要看看51cto里面有多少子站可能被挂马了,上百度,搜索domain:51cto.com返回了约10,700,000个查询结果,看关键的子站域名,发现包括51cto主站、网络安全频道、开发者频道、论坛、网络频道、读书频道、操作系统频道、博客频道、下载频道、数据库频道、移动频道、新闻频道、java频道、服务器频道、虚拟化频道、技术频道、系统应用频道、家园频道、技术频道在内的大大小小21个左右的域名所对应的站点均被挂上了这个站点的看不见的页面,也就是说51cto中所有包含http://logs.51cto.com/rizhi/count/count.js这个js的页面 接受访问时都会访问http://www.dachongzi.cn/index.asp这个页面,被JS挂马的51cto相关二级域名包括:

http://www.51cto.com/

http://netsecurity.51cto.com/

http://developer.51cto.com/

http://bbs.51cto.com/

http://network.51cto.com/

http://book.51cto.com/

http://os.51cto.com/

http://blog.51cto.com/

http://down.51cto.com/

http://fellow.51cto.com/

http://database.51cto.com/

http://cloud.51cto.com/

http://mobile.51cto.com/

http://training.51cto.com/

http://news.51cto.com/

http://developer.51cto.com/java/

http://server.51cto.com/

http://virtual.51cto.com/

http://sysapp.51cto.com/

http://home.51cto.com/index.php?s=/Home/index

http://tech.51cto.com/

        那看看这个www.dachongzi.cn域名指向的是哪个站点呢?打开一看吓一跳居然跟51cto的下载站高仿,只不过站点的名字换成了“大虫子在线共享 - 技术资料免费下载 - 中国大学下载联盟”高仿呀,真假美猴王?再看看logo除了抹去了down.51cto.com的字样以外”51cto通行证“换成了“大虫子通行证”,“我们共分享了250638个技术资源。 今日新增526个,17677人正在下载。”比起当前51cto下载频道“我们共分享了250655个技术资源。 今日新增527个,17856人正在下载”总公分享的技术资源假美猴王比真美猴王少17个,今日新增的少一个,正在下载的人数少百十来个,六耳猕猴跟大圣的本事差不多呢。

         反过来一想http://www.dachongzi.cn/这个站点是不是51cto接下来要推广的一个站点呢,别写完这篇文后被大家喷了,先去百度查一查,别人有没有发现这个假的美猴王呢?发现一条记录2011-09-30 06:38:00名为feitat的网友曾经在51cto的意见反馈栏目里举报过这个网站

“你好,我刚刚发现了一个跟51cto下载中心非常相似的山寨网站:http://www.dachongzi.cn”

管理员回复:“您好!非常感谢您的举报,我们会通过合法渠道联系对方,要求停止侵权。”

但时至今日,不见这个网站侵权停止,转而愈演愈烈的时直接将冒牌货以隐藏的形式 堂而皇之的藏在孙大圣的虎皮裙里,不得不让我瞠目结舌,此时我感觉到失态有点严重了,马上给邵程程发QQ消息提醒

接下来看看这个域名到底是谁所有,去查whois信息,如下图:
 
类别:未分类|阅读(179)|回复(4)|(5)阅读全文>>
     SOAP的请求在Web Service是无处不在的,像WCF服务和传统ASMX asp.net的web Service。如果要测试SOAP服务是否好用通过web编程来实现就显得太过于复杂了,下面的脚本片段(snippet)将会轻而易举的完成通过powershell测试和调用SOAP服务:

 


function Execute-SOAPRequest
(
[Xml] $SOAPRequest,
[String] $URL
)
{
write-host "Sending SOAP Request To Server: $URL"
$soapWebRequest = [System.Net.WebRequest]::Create($URL)
$s..
 


据Bitkom协会调查,21%的受访者担心云计算会产生数据丢失。20%的人拒绝使用云服务,因为他们对数据安全心怀疑虑。
2月27日,Google电子邮件服务“Gmail”一度发生故障导致部分用户无法访问。一些Gmail用户昨天声称,他们莫名其妙地失去了邮箱内的电子邮件、文件夹和联系人列表。谷歌最初估计,在2亿Gmail用户中,有0.29%受到影响;但该公司很快又将这一数字下调至0.02%,即大约4万个账户。
Gmail事件进一步引起了人们对云计算数据安全的担忧,也给了我们一个启示——确保数据安全是云计算取信于用户..
     今天,云计算已经变得炙手可热,云的形式带来的全新的应用方式,企业用户部署大型应用既不再需要斥巨资修建自己的数据中心了,也不需要考虑设备的选型和采购了,甚至都不需要有自己的运维人员24小时的进行运维了,只需要花极少的钱就可以购买到相应的云计算服务,剩下的复杂而纷繁的数据中心选址,搭建,运营,维护等任务都交给微软来做。
微软为大家提供了完整而全面的云计算解决方案,让用户真正感受到云就在身边,而不是遥不可及的,可以让用用最熟悉的工具和语言,方便、可靠、快捷的迁移、使用云,..
如果计算机中有多个网络适配器,在Windows原有的cmd下配置其属性很困难,用户必须确保配置了适当的适配器并确认要禁用的不是正在使用中的网络适配器。本节介绍在处理多个网络适配器时可能出现的问题及其解决方法。 (1)检测多个网络适配器 对于Windows系统来说,操作系统会将无线网络放在所有网络连接中优先级最高的网络使用。这对于普通用户可能是很方便的,一旦周围有无线网络就可以自动连接到无线网络中,便捷而有效。但是对于网络管理员来说这个特性可能会带来麻烦,甚至是安全问题。如出差在外的人员无法通过所在地的有线网络..
在处理所有适配器的状态后,还可以查询每个网络适配器的详细配置信息。可以通过选择“控制面板”|“网络和共享中心”|“网络连接”选项,打开“网络连接”窗口。在其中显示每个适配器的详细信息并做相应调整,如图1所示。 image 图1 在“网络连接”窗口中查看每个适配器的详细信息 创建名为“GetNetAdapterConfig.ps1”的脚本收集特定网络适配器的用于排错的详细信息,并且通过指定关键字仅返回有关网络适配器的特定配置信息,其代码如下: param($computer="localhost",$query,$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: GetNetAdapterConfig.ps1 Produces a listing of network adapter configuration information on a local or remote machine. PARAMETERS: -computer Specifies the name of the computer to run the script -help prints help file -query the type of query < ip, dns, dhcp, all > SYNTAX: GetNetAdapterConfig.ps1 -computerName WebServer Lists default network adapter configuration on a computer named WebServer GetNetAdapterConfig.ps1 -computerName WebServer -query IP Lists IPaddress, IPsubnet, DefaultIPgateway, MACAddress on a computer named WebServer GetNetAdapterConfig.ps1 -computerName WebServer -query DNS Lists DNSDomain, DNSDomainSuffixSearchOrder, DNSServerSearchOrder, DomainDNSRegistrationEnabled on a computer named WebServer GetNetAdapterConfig.ps1 -computerName WebServer -query DHCP Lists Index,DHCPEnabled, DHCPLeaseExpires, DHCPLeaseObtained, DHCPServer on a computer named WebServer GetNetAdapterConfig.ps1 -computerName WebServer -query ALL Lists all network adapter configuration information on a computer named WebServer GetNetAdapterConfig.ps1 -help ? Prints the help topic for the script "@ $helpText exit } if($help) { "Printing help now..." ; funHelp } $class="win32_networkadapterconfiguration" $IPproperty="IPaddress, IPsubnet, DefaultIPgateway, MACAddress" $dnsProperty="DNSDomain, DNSDomainSuffixSearchOrder, ` DNSServerSearchOrder, DomainDNSRegistrationEnabled" $dhcpProperty="Index,DHCPEnabled, DHCPLeaseExpires, ` DHCPLeaseObtained, DHCPServer" if($query) { switch($query) { "ip" { $query="Select $IPproperty from $class" } "dns" { $query="Select $dnsProperty from $class" } "dhcp" { $query="Select $dhcpProperty from $class" } "all" { $query = "Select * from $class" ; ` Get-WmiObject -Query $query | format-list * ; exit } DEFAULT { $query = "Select * from $class" ; ` Get-WmiObject -Query $query ; exit } } } ELSE { $query = "Select * from $class" ; ` Get-WmiObject -Query $query ; exit } Get-WmiObject -query $query | format-table [a-z]* -AutoSize 该脚本使用param语句定义了3个参数,即-computer、-query及-help。其中设置-computer的默认值为localhost。如果用户未指定计算机,则默认返回本地计算机的网络配置。 接下来针对帮助信息创建的funhelp函数用于输出帮助信息,当用户未输入参数或输入错误的参数时,调用该函数提示输入的错误及正确的输入。脚本中使用if语句检查$help变量是否存在,因为只有用户在调用脚本时指定了-help参数,该变量才会存在。随后初始化用于WMI查询的变量,这些变量的存在是为了便于在后面对命令行应用中实现灵活调用。在用户输入的参数中包括-query参数时,脚本将会调用switch语句判断$query变量值。并执行相应的操作,输出ip、dns、dhcp和所有条目的信息。在$query变量无输入的情况下还特别使用ELSE语句将WMI对象中的所有属性发送给Get-WmiObject cmdlet查询,在控制台输出当前计算机中的所有网络连接的信息。在代码的最后将Get-WmiObject cmdlet查询的结果通过管道传递给Format-Table cmdlet格式化输出,在使用Format-Tables时需要指定符合Get-WmiObject cmdlet输出代码格式的参数。该脚本的执行结果如图2和图3所示。 image 图2 查询当前主机DHCP信息 image 图3 未指定检索项默认会输出所有的网络适配器信息 作者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归作者和51cto共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/[/img]..
本文将会介绍如何使用PowerShell管理网络,包括设置和TCP/IP堆栈有关的选项;通过不同脚本提供网络适配器的状态信息,网络适配器的连接状态及属性;设置静态IP、启动DHCP及配置DNS服务器;获取防火墙设置信息并设置有关选项以启用远程管理,以及远程共享文件等。 Windows Vista开始在网络功能方面有了很大改善,包括新的防火墙服务及IPv6协议的增强支持等。同时从Windows Vista开始WMI中增加了很多用于操作防火墙和IPv6的新特性和计数器,可以显示和使用IPv6地址。 Windows Vista和Windows Server 2008中包括强大的网络功能,允许用..
网络故障对于用户来说是很复杂的问题,因为它可能涉及很多方面的知识,不容易查找和解决。 为检查网络故障,创建名为“GetActiveNicAndConfig.ps1”的脚本,其代码如下: param($computer = $env:computername, [switch]$full, [switch]$help) function funline ($strIN) { $strLine= "=" * $strIn.length Write-Host -ForegroundColor yellow $strIN Write-Host -ForegroundColor darkYellow $strLine } function funHelp() { $helpText=@" DESCRIPTION: NAME: GetActiveNicAndConfig.ps1 Displays ..
硬件问题并不一定都和硬件有关,只要工作负荷在设计的范围内,大部分电子设备都可以使用相当长的一段时间。为了硬件正常工作,需要安装相应的驱动程序。硬件厂商会为其驱动程序添加数字签名,添加数字签名的驱动都是厂商经过大量测试后通过的,可使设备高效运转的驱动;未经签名的驱动程序可能是导致硬件问题的主要原因。 为了检查硬件是否运行厂商认证的驱动程序,创建名为“CheckSignedDeviceDrivers.ps1”的脚本,其代码如下: param( $computer="localhost", [switch]$unsigned, [switch]$full, [switch]$help ..
在Windows中有些服务随系统启动,如果其中的某个服务无法启动,则可能导致系统不稳定或其他不可预知的结果。如果服务出错,首先需要检查服务。将其按照启动类型排列。然后查找所有停止自动运行的服务,如图1所示。 image 图1 检查未启动的自动运行服务是排错的基本步骤 为了便于在脚本中查询未启动的自动运行服务,创建名为“AutoServiceNotRunning.ps1”的脚本,其代码如下: param($computer="localhost", [switch]$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: AutoServicesNotRunning.ps1 Displays a listing of services that are set to automatic, but are not presently running PARAMETERS: -computer The name of the computer -help prints help file SYNTAX: AutoServicesNotRunning.ps1 -computer WebServer Displays a listing of all non running servicesthat are set to automatically start on a computer named WebServermunich AutoServicesNotRunning.ps1 Displays a listing of all services that are set to automatic, but are not presently running on the local machine AutoServicesNotRunning.ps1 -help ? Displays the help topic for the script "@ $helpText exit } if($help){ "Obtaining help ..." ; funhelp } $wmi = Get-WmiObject -Class win32_service -computername $computer ` -filter "state <> 'running' and startmode = 'auto'" if($wmi -eq $null) { "No automatic services are stopped" } Else { "There are $($wmi.count) automatic services stopped. The list follows ... " foreach($service in $wmi) { $service.name } } 该脚本使用Get-WmiObject cmdlet查询Win32_Service WMI类,通过自定义仅返回设置为自动运行服务器的当前状态,输出信息说明其是否正常。通过指定-computername参数选择本地或远程计算机,使用-filter参数减少返回的Win32_Service类的实例数量。因为只需要知道启动类型设置为自动,但未运行的服务。需要判断查询WMI结果,如果$wmi变量值为空,则表示自动运行的服务正常;如果有未运行自动启动的服务,则输出其数量,然后使用foreach语句输出其名称。此脚本的执行结果如图2所示。 image 图2 执行结果 作者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归作者和51cto共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/[/img]..
       设备驱动和服务功能类似,可以自动运行并提供一定功能。只是设备驱动更接近于硬件底层,并不像服务那样容易发现和检查。设备驱动一旦出现问题,往往伴随某种设备功能的失灵,所以对于系统管理员来说检查设备驱动也很重要。 创建用于检查硬件驱动的脚本CheckDeviceDrivers.ps1,其代码如下: param($computer="localhost", $a="h", [switch]$help) function funHelp() { $helpText=@" DESCRIPTION: NAME: CheckDeviceDrivers.ps1 Displays a listing of system..
Windows中的系统服务具有依存性,如果一个服务未启动,可能导致更多依赖于它的服务均无法启动。以Base Filtering Engine服务为例,其基本筛选引擎(BFE)是一种管理防火墙和 Internet 协议安全(IPsec)策略及实施用户模式筛选的服务,停止或禁用BFE服务将大大降低系统的安全,并造成IPsec管理和防火墙应用程序产生不可预知的行为。在Windows Server 2008中,这个服务依赖于Remote Procedure Call(RPC)服务,而IKE and AuthIP IPsec Keying Modules、Internet Connection Sharing(ICS)、IPsec Policy Agent、Routing and Remote Ac..
如果Windows Vista和Windows Server 2008无法正常启动,则可以检查引导配置文件是否出现错误;另外可以检查启动服务及其依存性。Windows中的一些服务依赖于其他服务、系统驱动程序和组件的加载顺序。如果系统组件被停止或运行不正常,则依赖于它的服务会受到影响。 (1)检查引导配置文件 检查运行Windows Vista和Windows Server 2008的计算机引导配置文件通常可以为用户解决引导有关的问题,提供很多有价值的信息。类似引导分区、引导目录,以及Windows目录等信息往往都对排除故障很有用,大多数情况下通过VBS脚本获取这些信息需要..
1 处理磁盘分区 PC通常只会有一个磁盘,Windows的管理策略会以分区形式管理磁盘,这样即可将物理硬件从操作系统中抽象出来。分区概念对于高效率地维护系统和文件很有好处,用户可以在“计算机管理”的“磁盘管理”工具中查看磁盘和磁盘分区之间的关系,如图23所示。 image 图1 输出磁盘信息 image 图2 磁盘和磁盘分区的关系 创建名为“ReportDiskPartition.ps1”的脚本,用于获取系统中存在的分区属性。其中将检查变量$args的值,以判断执行脚本时是否传递参数。如果不存在该变量,则表明在运行脚本时未提供参数。此时脚本会作为本地计算机处理,即传递localhost给$args变量。如果传递问号给脚本,则返回当前脚本的帮助信息,该脚本的代码如下: if(!$args) { Write-Host -foregroundcolor green ` 'Querying localhost ...' $args = 'localhost' } if($args -eq "?") { " ReportDiskPartition.ps1 DESCRIPTION: This script can take a single argument, computer name. It will display drive configuration on either a local or a remote computer. You can supply either a ? or a name of a local machine. EXAMPLE: ReportDiskPartition.ps1 remoteComputerName reports on disk partition information on a computer named remoteComputerName The script will also display this help file. This is done via the ? argument as seen here. ReportDiskPartition.ps1 ? " } Get-WmiObject -Class Win32_DiskPartition ` -computer $args 其中使用Get-WmiObject cmdlet及-class参数搜索Win32_DiskPartition WMI类,并获得磁盘分区的配置信息和值。如果使用$args参数提供了要查询磁盘分区信息的计算机名,则可使用-computer参数为Get-WmiObject提供计算机名,执行结果如图24所示。 image 图3 执行结果 2 匹配磁盘和分区 匹配驱动器和分区之后,还需要相应处理磁盘和分区的脚本,因为有时需要特定驱动器的分区信息。创建名为“ReportSpecificDiskPartition.ps1”的脚本来获取硬盘特定分区的配置信息,其代码如下: param($computer="localhost",$disk="磁盘 #0,分区 #0",$help) if($computer) { Write-Host -foregroundcolor green ` "Querying $computer ..." } if($disk) { Write-Host -foregroundcolor green ` "Querying $disk for partition information ..." } if($help) { " ReportSpecificDiskPartition.ps1 DESCRIPTION: This script can take a multiple arguments, computer name, drive number and help. It will display partition configuration on either a local or a remote computer. You can supply either help, drive and name of a local or remote machine. EXAMPLE: ReportSpecificDiskPartition.ps1 -computer remoteComputername reports on disk partition on drive 0 on a computer named remoteComputerName ReportSpecificDiskPartition.ps1 -computer remoteComputername -disk '磁盘 #0,分区 #0' reports on disk partition on drive 1 on a computer named remoteComputerName ReportSpecificDiskPartition.ps1 -help y Prints out the help information seen here. " Exit } Get-WmiObject -Class Win32_DiskPartition ` -computer $computer | Where-Object { $_.name -match $Disk } | format-list [a-z]*
在执行更名主机或添加域操作后,为了使设置生效需要重启计算机。为此需要使用Win32_OperatingSystem WMI类的shutdown()和reboot()方法,要执行的操作由向脚本传递的参数-a确定,值为s则关机;为r则重启。为了顺利地关机或重启所用账户必须具有相应的权限,将EnablePrivileges的属性设置为$true。 需要注意的是如果执行关机和重启操作的主机是本机,则需要两次定义Get-WmiObject,分别为出示凭据和不需要使用凭据的情况。如果操作的主机不是本机,则需要使用备用凭据,此脚本的代码如下: param( $computer="localhost", ..
Windows系统性能计数器是操作系统支持用于应用和组件发布性能数据的特殊对象,并且支持其他应用获取和分析这些已发布的数据。Windows中的性能计数器很多,包括针对磁盘、网络和TCP等计数器,用户能够使用这些性能计数器提供的数据确定程序瓶颈和系统性能。通过运行perfmon.msc启动性能计数器数据,如图1所示。用户可以通过右击计数器清单添加其他计数器,在添加的过程中显示如图2所示的“添加计数器”对话框。 image 图1 系统性能计数器 image 图2 “添加计数器”对话框 其中包括性能计数器名,如%Processor Time和Handle Count等,以及计数器对应的范例。当需要获取处理器相关的性能计数器数据时,默认以处理器命名。如果有多个处理器,则为计数器分别添加类似于#1、#2和#3这样的后缀。如果需要处理多个实例,则在添加计数器的过程中制定相应的实例。 5.1 Consuming Counter Data PowerShell没有内置的cmdlet用于获取性能计数器的值,所以必须使用.NET的类。为此创建System.Diagnostics.PerformanceCounter的实例,配置其中的属性并不断调用NextValue()方法来获取相应的值。在开始操作性能计数器之前,需要首先配置用户权限为管理员权限。然后创建脚本用于监视CPU的使用率,将脚本命名为“Monitor-CpuUsage.ps1”。将会用性能计数器获取并显示当前CPU每秒的占用率,这个脚本会一直循环执行下去;除非用户按Ctrl-C终止。其代码如下: $counter = New-Object Diagnostics.PerformanceCounter $counter.CategoryName = "Processor" $counter.CounterName = "% Processor Time" $counter.InstanceName = "_Total" while ($true) { $value = $counter.NextValue() Write-Host "CPU: $value" sleep 1 } 其中涉及的计数器名和实例名都可以很容易地从“添加计数器”对话框中找到,Monitor-CpuUsage.ps1脚本的执行结果如图20所示。 clip_image002[4] 图3 执行结果 从图中可以看到此时的CPU负载并不重,只达到10%左右,用户可以用类似的方法获取其他性能计数器的数据。 5.2 监视程序 当使用程序时发生不正常的情况时,通常都会造成占用大量的系统资源而导致系统重启。这时使用性能计数器可以监控程序的运行情况,即在运行程序的同时启动监视脚本。该脚本会实时获取和分析性能数据,当发生异常时会向用户发出警告。 针对意外终止的应用程序创建一个监视脚本Monitor-Crashes.ps1,脚本将会启动外部进程。当程序意外退出时,脚本会将重启5次应用程序之后停止尝试,其代码如下: function Start-Process { Write-Host "Starting process..." .\UnpredictableCrash.exe } for ($i = 0; $i -lt 5; $i++) { Start-Process Write-Host "Process exited $($i + 1) times." } Write-Host "Program restart limit exceeded." 该脚本的执行结果如图21所示。
Windows Vista和Windows Server 2008的电源计划有大量改进,可以针对使用电池或交流电供电的情况分别设置。如果当前计算机正在使用电池,那么续航时间是个需要关心的问题。而在某些情况下,计算机的性能才是最重要的。例如,如果电力会在几分钟之后恢复,则不必为延长电池使用时间而降低性能。在不同的电源计划下显示器、磁盘及CPU的电力消耗也不同,在Windows Server 2008系统中可以创建自定义的电源计划,如图1所示。 image 图1 创建自定义的电源计划 创建名为“SetPowerConfig.ps1”的脚本用于设置电源计划,代码如下: param($c, $t, $q, $help) function funline ($strIN) { $num = $strIN.length for($i=1 ; $i -le $num ; $i++) { $funline += "=" } Write-Host -ForegroundColor yellow `n$strIN Write-Host -ForegroundColor darkYellow $funline } function funHelp() { $helpText=@" DESCRIPTION: NAME: SetPowerConfig.ps1 Sets power config on a local machine. PARAMETERS: -c(hange) <mp,mb,dp,db,sp,sb,hp,hb> -q(uery) detailed query of current power plan -t(ime out) time out value for change. Required when using -c to change a value -help prints help file SYNTAX: SetPowerConfig.ps1 Displays error message. Must supply a parameter SetPowerConfig.ps1 -c mp -t 10 Sets time out value of monitor when on power to10 minutes SetPowerConfig.ps1 -c mb -t 5 Sets time out value of monitor when on battery to 5 minutes SetPowerConfig.ps1 -c dp -t 15 Sets time out value of disk when on power to 15 minutes SetPowerConfig.ps1 -c db -t 7 Sets time out value of disk when on battery to 7 minutes SetPowerConfig.ps1 -c sp -t 30 Sets time out value of standby when on power to 30 minutes SetPowerConfig.ps1 -c sb -t 10 Sets time out value of standby when on battery to 10 minutes SetPowerConfig.ps1 -c hp -t 45 Sets time out value of hibernate when on power to 45 minutes SetPowerConfig.ps1 -c hb -t 15 Sets time out value of hibernate when on battery to 15 minutes SetPowerConfig.ps1 -q c Lists detailed configuration settings of the current power scheme SetPowerConfig.ps1 -help ? Displays the help topic for the script "@ $helpText exit } if($help){funline("Obtaining help ...") ; funhelp } $computer = (New-Object -ComObject WScript.Network).computername if($q) { funline("Power configuration on: $($computer)") powercfg -query exit } if($c -and !$t) { $(Throw 'A value for $t is required. Try this: SetPowerConfig.ps1 -help ?') } switch($c) { "mp" { powercfg -CHANGE -monitor-timeout-ac $t } "mb" { powercfg -CHANGE -monitor-timeout-dc $t } "dp" { powercfg -CHANGE -disk-timeout-ac $t} "db" { powercfg -CHANGE -disk-timeout-dc $t } "sp" { powercfg -CHANGE -standby-timeout-ac $t } "sb" { powercfg -CHANGE -standby-timeout-dc $t } "hp" { powercfg -CHANGE -hibernate-timeout-ac $t } "hb" { powercfg -CHANGE -hibernate-timeout-dc $t } DEFAULT { "$c is not allowed. Try the following: SetPowerConfig.ps1 -help ?" } } 该脚本首先使用param语句定义了4个参数,即-c、-t、-q和-help。其中-q指定查询,-help指定输出帮助。-c和-t必须同时使用,因为-t值指定修改电源计划的参数超时值,如果该值为空,脚本执行将出错。该脚本使用WScript.Network对象获得本机的计算机名,因此可以使用New-Object cmdlet配合-comobject参数。通过小括号将这些内容括起作为一个对象,使用ComputerName属性并将结果保存在$computer变量中。 如果在脚本执行时提供了参数-q,那么会出现$q变量。这样可使用funline函数将计算机名作为标题输出,并使用Powercfg工具提供参数-query,从而得到本机当前的详细电源计划。 如果提供了参数-c,则必须使用参数-t。这是因为$t变量中包括的是时间信息,需要为-c参数中指定的操作指定有限的超时时间,这样才不会无限期地等待。如果仅有$c变量,则使用throw语句输出红色的错误信息,并停止脚本执行。 接下来脚本根据-c参数值匹配switch语句中的分支,如果值为mp,则使用包括在$t变量值作为交流电情况下的显示器超时时间的分钟数;如果值为mb,并且计算机在使用电池供电,则会使用$t变量值设置显示器的超时时间;如果值为db,则配置当前电源计划在达到$t变量设定的分钟数后关闭驱动器;如果值为sp,则在使用交流电的情况下当空闲时间超过$t变量设定的分钟数后计算机将会进入待机状态;如果需要计算机休眠,则使用hp,并修改用于交流电下休眠的电源计划值;如果使用hb,则为电池模式下的休眠值。 此脚本在Windows Server 2008和Windows XP下通过-q参数查询电源方案的结果如图2和图3所示。 image 图2 在Windows 2008中列出当前系统电源计划的详细方案 image 图3 在WindowsXP中获取到的电源计划的信息 作者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归作者和51cto共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/[/img]..
便携式计算机的供电是个很重要的问题,因其直接关系到便携式设备的可移动性。Windows有多个组件与电源管理的配置策略相关,在Windows Server 2008中的电源策略设置界面如图1所示。 image 图1 Windows Server 2008中的电源策略设置界面 创建名为“ReportPowerConfig.ps1”的脚本,根据用户提供的如下参数提供相应的电源配置信息。 a:当前主机中活动的电源设置。 l:当前主机中的所有电源配置。 q:当前主机中的所有可用休眠状态。 w:当前主机中的上次唤醒事件。 d:当前主机中的所有的设备。 dv:当前主机中的所有设备的详细信息。 dwa:当前主机中已配置且可唤醒当前主机的设备。 dwp:当前主机中所有配置为可从睡眠中唤醒计算机的设备。 该脚本的代码如下: param($a="a", $help) function funline ($strIN) { $num = $strIN.length for($i=1 ; $i -le $num ; $i++) { $funline += "=" } Write-Host -ForegroundColor yellow `n$strIN Write-Host -ForegroundColor darkYellow $funline } function funHelp() { $helpText=@" DESCRIPTION: NAME: ReportPowerConfig.ps1 Prints power config on a local machine. PARAMETERS: -a(ction) action to perform <a(ctive scheme), l(ist), q(uery), d(evice), dv(evice verbose), dwa(evice wake armed), dwp(evice wake programable)> -help prints help file SYNTAX: ReportPowerConfig.ps1 Lists power configuration on local computer ReportPowerConfig.ps1 -a a Lists active power configuration on local computer ReportPowerConfig.ps1 -a l Lists all power configuration on local computer ReportPowerConfig.ps1 -a q Lists all available sleep states on local computer ReportPowerConfig.ps1 -a w Lists last wake event on local computer ReportPowerConfig.ps1 -a d Lists all devices on local computer ReportPowerConfig.ps1 -a dv Lists all devices on local computer - verbose ReportPowerConfig.ps1 -a dwa Lists devices configured to wake the local computer ReportPowerConfig.ps1 -a dwp Lists devices that are user confiurable to wake the computer from sleep on local computer ReportPowerConfig.ps1 -help ? Displays the help topic for the script "@ $helpText exit } if($help){funline("Obtaining help ...") ; funhelp } $computer = (New-Object -ComObject WScript.Network).computername funline("Power configuration on: $($computer)") switch($a) { "a" { POWERCFG -GETACTIVESCHEME ; "`r"} "l" { powercfg -LIST } "q" { powercfg -AVAILABLESLEEPSTATES } "w" { powercfg -lastwake } "d" { powercfg -devicequery all_devices } "dv" { powercfg -devicequery all_devices_verbose } "dwa" { powercfg -devicequery wake_armed } "dwp" { powercfg -devicequery wake_programmable } } 在脚本中首先使用param语句定义了两个命令行参数-a和-help,-a指定脚本执行的操作,默认值为a;-help指定显示帮助信息,包括描述、参数及语法范例。要强调的是这个脚本无法在远程执行。 获取计算机名称时可以使用WScript.Network COM对象,并使用New-Object cmdlet创建该对象,然后提供-comobject参数。选择ComputerName属性,计算机名自动保存在$computer变量中。该脚本中的大部分的逻辑控制在switch语句中完成,这些语句通过判断命令行中的$a变量值选择相应的分支。如果值为a,则使用Powercfg工具获取当前电源计划。执行结果如图2和图3所示,可以看到当前计算机可以由网卡远程唤醒。需要强调的是由于Windows XP和Windows Server 2008的powercfg工具的工作环境不同,所以将-a参数的a或q选项传递给脚本使将会抛出“参数无效,键入"/?"得到帮助”的提示信息。 image 图2 列出当前系统中可用的电源计划 image 图3 获取可从睡眠中唤醒计算机的设备 作者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归作者和51cto共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/[/img]..
 <<   1   2   3   4   5   >>   页数 ( 1/6 )

MVP

Microsoft MVP(PowerShell)

订阅我的博客


google reader 鲜果 QQ邮箱 有道 抓虾