随笔- 108
文章- 0
评论- 262
12 2010 档案
PowerShell 2.0管理事件日志(一)查看和读取事件日志
摘要: 事件日志是操作系统用来保存本身及其他程序信息的工具,本文将会介绍如何通过PowerShell脚本阅读事件日志并创建新的日志条目。Windows系统中包含多种事件日志,在Windows XP系统中包括4种主要的事件日志。即应用程序、系统、安全性及Internet Explorer日志,如图1所示。这样用户可以方便地从系统中提取和查看日志,从而了解系统的当前运行情况。本文将会介绍如何通过PowerSh...阅读全文
PowerShell 2.0之使用WMI管理Windows(五)生成WMI代码
摘要: WMI的优点是能从海量的数据中抽取信息,问题是信息量过大,解决这个问题最好的方法是有个集成开发环境或者代码生成器。在Internet上有多种免费工具可列举所有类及其属性,并生成用于查询对象实例和访问的属性代码。这样便于用户对任何未知的对象进行脚本编程,可以生成VBScript代码,然后转换为PowerShell。也可以从生成代码中找到要用到的对象,然后在PowerShell中使用即可。1 通过Scriptomatic生成WMI代码Scriptomatic工具是微软推出的首个WMI编程辅助开发工具,可以列出所有WMI类并生成获取所有对象实例,同时打印所选对象的代码。Scriptomatic能生成阅读全文
PowerShell 2.0之使用WMI管理Windows(四)获取软硬件信息
摘要: 管理大型的异构网络非常繁琐,而在本地计算机上用不同的自动化接口,如PowerShell、COM对象,甚至基于.NET的程序管理单独的程序和服务则容易得多。关键是存在于混合网络中的分布式系统,即如何操作防火墙后面的设备。如果它只是一种硬件设备,如路由器,则使用WMI(Windows Management Instrumentation)即可。WMI是协同工作的一系列技术,可以提供网络对象的统一访问形式。并且用其查询服务信息,尤其是各种形式的数据、触发命令,以及改变配置选项1 查询硬件设备与Windows内核紧密结合允许于WMI操作多种设备,获取不同计算接和硬件配置的信息,例如,可以通过查询Win阅读全文
PowerShell 2.0之使用WMI管理Windows(三)对WMI对象的语言支持
摘要: 管理大型的异构网络非常繁琐,而在本地计算机上用不同的自动化接口,如PowerShell、COM对象,甚至基于.NET的程序管理单独的程序和服务则容易得多。关键是存在于混合网络中的分布式系统,即如何操作防火墙后面的设备。如果它只是一种硬件设备,如路由器,则使用WMI(Windows Management Instrumentation)即可。WMI是协同工作的一系列技术,可以提供网络对象的统一访问形式。并且用其查询服务信息,尤其是各种形式的数据、触发命令,以及改变配置选项。在第2个PowerShell版本中针对WMI对象增加了很多语言增强功能,允许用户使用类似URL的字符串作为WMI对象的别名。阅读全文
PowerShell 2.0之使用WMI管理Windows(二)PowerShell操作WMI
摘要: 在PowerShell发布之前,标准的操作方法是使用编程脚本API调用一系列COM对象。调用COM客户端代码可以在各种语言中都能使用,只是典型的WMI客户端脚本代码使用VBScript编写,因为这样简单易行。代码会获取CIM对象的实例,并通过WQL查询和获取信息。结果是用标准的foreach循环获得的集合。下例为使用VBS获取winword.exe进程id的winword_pid.vbs脚本,代码...阅读全文
PowerShell 2.0之使用WMI管理Windows(一)WMI基础
摘要: 管理大型的异构网络非常繁琐,而在本地计算机上用不同的自动化接口,如PowerShell、COM对象,甚至基于.NET的程序管理单独的程序和服务则容易得多。关键是存在于混合网络中的分布式系统,即如何操作防火墙后面的设备。如果它只是一种硬件设备,如路由器,则使用WMI(Windows Management Instrumentation)即可。WMI是协同工作的一系列技术,可以提供网络对象的统一访问形...阅读全文
PowerShell2.0之与COM对象交互(五)与脚本宿主代码协同工作
摘要: 网络中存在大量由VBScript和Jscript或者其他Windows脚本宿主相关的语言编写的代码,其中相当一部分用对应语言实现很简短,而且有部分代码甚至不能转换为PowerShell代码。丢弃所有这些代码并且完全使用PowerShell重写很不明智,因此需要在PowerShell中有一种重用Jscript和VBScript脚本的代码方法。 MSScriptControl这个COM对象可以作为脚...阅读全文
PowerShell2.0之与COM对象交互(四)IE自动化
摘要: 上一篇文章主要介绍了powershell中通过COM操作Excel,本篇文章中将会着重介绍powershell中通过COM操作IE达到自动化管理的目的。 Internet Explorer浏览器提供基于COM的富对象模型,可以用来编写网站的自动化测试脚本模仿用户操作,如输入文字和单击按钮等并用浏览器创建提交信息的脚本。 能够编程控制Internet Explorer的仍然是applicatio...阅读全文
PowerShell2.0之与COM对象交互(三)Excel自动化
摘要: 上一篇文章主要介绍了powershell中通过COM操作Word,本篇文章中将会着重介绍powershell中通过COM操作Excel达到自动化管理的目的。 Microsoft Excel的ProgID是Excel.Application,用其创建对象后即可获取Workbook对象,使用文档的Workbooks集合。Workbooks有多个WorkSheet对象通过Worksheets属性起作用...阅读全文
PowerShell2.0之与COM对象交互(二)Word自动化
摘要: 上一篇文章主要描述了COM模型的基础知识,以及在powershell中如何调用COM,本篇文章中将会着重介绍powershell中通过COM操作Word达到自动化管理的目的。COM主要用于与其他程序的自动化,是高级用户、管理员,以及开发人员的不二选择。软件产品通常会以COM对象的形式向外提供应用服务,这样即可从其他语言中调用该项功能。作为COM对象最佳的实例莫过于Microsoft Office工具,在这个工具集中的所有程序都以COM对象的形式向外提供程序对象、文档,以及其他服务,用户可以使用这些对象创建和操作文档和各类数据对象。Word通过word.Application唯一地标识ProgI阅读全文
VS2010快捷键
摘要: 有人发了VS2010的快捷键,不够全,那才哪到哪呀,我来发个完整的 吧,后附VS2008的快捷键Ctrl+E,D ----格式化全部代码Ctrl+E,F ----格式化选中的代码CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图 F12 转到定义CTRL + F12转到声明CTRL + ALT + J对象浏览 CTRL + ALT + F1帮助目录 CTRL 阅读全文
PowerShell2.0之与COM对象交互(一)COM基础
摘要: COM(Component Object Model,组件对象模型)是Windows下广泛使用的模型,允许不同的软件部分交互。由于已经封装,所以这些交互在不需要知道该软件模块具体实现方法的情况下完成,它已经变为程序交互使用的重要手段。这项技术始于1993年,并于1997年前后逐渐流行。COM对象流行的原因在于可以很方便地用在在自动化接口及扩展。有些程序,如Microsoft Office用其为脚本作者向外提供对象模型;另外一些程序,如Internet Explorer和Windows Media Player用其向外提供了用户界面。这样即可嵌入到其他的程序中,甚至是网页中。COM能够扩展为DC阅读全文
Windows PowerShell 2.0之输入输出
摘要: 由程序生成的数据通常会比生成它的程序有更长的存活期,文本文件能够很容易地从一个系统传输到另一个系统。本文将探讨PowerShell操作文件的机制、如何读取不同的数据格式并生成自己的数据,以及如何使用正则表达式从文本块中获取数据。 1 读取内容 在PowerShell中,Get-Content和Set-Content这两个cmdlet分别用于获取和设置原始二进制文件。默认情况下,这两个命令用于操...阅读全文
Windows PowerShell 2.0之服务管理
摘要: 当操作服务时,PowerShell传递System.ServiceProcess.ServiceController对象,获取一个或多个对象的简单方法是使用Get-Service cmdlet。当不带参数调用时会返回当前系统中注册的所有服务,这样即可用这个cmdlet生成快速报告。下例获取当前运行的所有服务: PS C:\PowerShell> Get-Service | where {$_.S...阅读全文
Windows PowerShell 2.0之进程管理
摘要: 进程在操作系统中用于处理数据和进程间的交换,PowerShell的进程和服务管理机制能分析进程信息,并且直接操作进程实例指向的对象。这样对象化的命令为用户在提取数据及修改状态方面提供了方便,管道命令的优点结合对象化的进程和服务可以简化复杂的命令。本文将讲解如何操作进程及其属性,包括启动和终止进程,以及查询并显示进程信息。 在PowerShell中所有与进程相关的操作均由5个cmdlet来实现,即...阅读全文
通过PowerShell操作事件日志
摘要: 管理员能够获取信息的主要来源是事件日志,PowerShell中有专门的Get-EventLog cmdlet处理事件日志。为了获取已存在的事件日志,需要使用-list参数以返回System.Diagnostics.EventLog类型的对象集合。获取这些对象后即可实现任何与系统日志相关联的操作,如下所示: 从下例的输出能够看到当前系统中存在的日志条数: PS C:\PowerShell\Appe...阅读全文
PowerShell 2.0远程管理之隐式远程管理
摘要: 在前面的文章里关于持久远程线程的讨论中,曾经介绍了如何在本地主机上进入远程线程并执行命令。如果没有显式的终止线程的情况下,用户能在本地计算机上执行远程主机的命令,而PowerShell的提示符能够直接反映当前所使用线程的状况。在本章将会介绍PowerShell的内置特性,这些特性能够使用户在远程主机上运行命令和脚本。 通过使用交互式远程管理可以克服使用Invoke-Command的一些缺点,然而...阅读全文
PowerShell 2.0远程管理开发使用CredSSP处理多跳授权
摘要: 在本文中中将会介绍如何使用CredSSP解决PowerShell远程管理中多跳(Multi-hop)授权的问题。本质上来讲,CredSSP和多跳支持本身并不是PowerShell 2.0或PowerShell远程管理的特性。凭据安全服务提供者(CredSSP,Credential Security Service Provider)是全新的安全服务提供者,用于将用户凭据委派到应用程序中,以实现从客户端到目标服务器的认证。Windows 远程管理(WinRM,Windows Remote Management)支持的多跳(Multi-hop)使用CredSSP实现认证。从PowerShell 2阅读全文
PowerShell 2.0解析、格式化及显示远程输出
摘要: 由于PowerShell 2.0远程管理的传输是在网络上进行,而对象是不能通过网络进行传递的,为了能够继续将PowerShell所具有的面向对象的优点进行继续保持,PowerShell2.0远程管理传输的过程中是将对象序列化为XML后进行传输,在达到目标主机后在进行反序列化解包,在客户端实现远程到本地端对端的对象传递,然而对象传递的过程中很有可能远程对象的格式化配置文件在本地并不存在,这就可能使传...阅读全文
PowerShell 2.0语言远程管理之理解线程配置
摘要: PowerShell远程管理被启用后,将会会有默认的线程配置文件被创建和注册。同时Invoke-Command,Enter-PSSession和New-PSSession cmdlet都有一个-ConfigurationName参数可以用来指定不同的线程配置文件,这就给用户定制不同的执行环境带来了极大的方便,用户可以定制好不同的环境并保存在配置文件中,在需要的时候就能方便的调用了。 在本文中将会...阅读全文
PowerShell 2.0如何将远程线程保存在本地
摘要: 在上篇文章里,介绍了如何用Import-PSSession cmdlet将远程命令导入到本地来直接执行,如同在本地直接管理多台主机。当然这样的技术能在持久线程存活的情况下使用,如果使用Remove-PSSession杀死了线程或线程过期后,隐式远程线程也会同时被终止。 在本文中将会讨论如何将远程线程保存到本地硬盘,这样就可以不必在每次执行命令前,显式的创建PS线程到远程主机上执行命令了,直接导入本...阅读全文
PowerShell 2.0在远程主机上运行命令和脚本
摘要: 在前面的文章里关于持久远程线程的讨论中,曾经介绍了如何在本地主机上进入远程线程并执行命令。如果没有显式的终止线程的情况下,用户能在本地计算机上执行远程主机的命令,而PowerShell的提示符能够直接反映当前所使用线程的状况。在本章将会介绍PowerShell的内置特性,这些特性能够使用户在远程主机上运行命令和脚本。 通过使用交互式远程管理可以克服使用Invoke-Command的一些缺点,然而这...阅读全文
PowerShell 2.0远程管理之交互式远程线程
摘要: 本文将会介绍PowerShell 2.0的交互式远程管理以及如何使用Enter-PSSession、Exit-PSSession以及Get-PSSession操作线程的相关属性,以及在交互式远程管理中对持久线程的使用。通过交互式远程管理,用户可以在本地输入命令就能实时看到远程主机的执行效果,如果需要共享前后几次交互式线程的变量和数据就需要使用持久线程的方式创建线程,这样PowerShell会代替用...阅读全文
PowerShell 2.0 远程管理之启用和执行命令
摘要: PowerShell 2.0的远程管理功能很强大,为了方便读者学习这里首先介绍学习环境的设置,便于读者在理解原理的同时有相对形象的体验。在本文中,将会分别介绍了如何启用和禁用powershell的远程管理,以及如何在工作组和混合域环境下配置计算机。以及如何使用Invoke-Command cmdlet用于在远程主机上执行命令,创建持久线程,在多个命令间同一线程传递的变量和参数。用户还可以在执行较费...阅读全文
初探 Windows PowerShell 2.0 远程管理应用
摘要: PowerShell 2.0最重要和值得人兴奋的特性就是其具有的远程管理的能力,PowerShell远程管理可以通过远程管理计算机,远程管理是通过WinRM(Windows Remote Management)起作用的,而WinRM是基于微软的WS-Management协议的。 在PowerShell 2.0中这个特性是作为统一代码执行模型(UCEM,Universal Code Executio...阅读全文
PowerShell 使用PowerTab加强Tab键自动补全
摘要: Windows 2000及其以后版本为cmd命令增加了基本的Tab自动补全功能的支持,PowerShell是微软第1个实现为文件、函数、变量和命令提供了该支持的产品,并且还可以根据需要定制化。在PowerShell中支持通过Tab自动补全功能,以及使自定义函数提供Tab键自动补全名称支持。PowerTab也采用这种方式,并且增加了很多高级特性。 PowerTab是由微软公司名为“Marc van ...阅读全文
PowerShell操作文件的机制探讨
摘要: 由程序生成的数据通常会比生成它的程序有更长的存活期,文本文件能够很容易地从一个系统传输到另一个系统。本文将探讨PowerShell操作文件的机制、如何读取不同的数据格式并生成自己的数据,以及如何使用正则表达式从文本块中获取数据。 1 读取内容 在PowerShell中,Get-Content和Set-Content这两个cmdlet分别用于获取和设置原始二进制文件。默认情况下,这两个命令用于操...阅读全文
Win PowerShell2.0之PSEventing——.NET事件
摘要: PowerShell提供了对所有.NET对象的支持,用其使得订阅事件处理程序成为可能。脚本块能以委托方式传递给.NET对象,问题在于进程中包含多个复杂的调用,如线程同步和垃圾回收。用户可能需要管理对象的生存周期,而遍历所有脚本也未发现事件,因为它已经被作为垃圾回收;另外,当需要有管理多线程中挂起事件的管理机制时,PowerShell未提供任何支持,从而在执行时很容易导致整个Shell崩溃。 ...阅读全文
如何用帮助系统获取PowerShell可用命令信息
摘要: 真正能让读者尽快掌握一门语言的文档应该是官方的帮助文档,利用帮助文档,并且理解好每个技术细节中存在的编程思想,能让用户遇到任何问题举一反三,最终解决问题。 PowerShell中的帮助系统是一个互交式的环境,其中所有的一切均以对象形式出现。可以根据命令任何部分的字面意思找出其所有的属性和方法原型,而忽略其是否为Shell、.NET、COM或者其他部分。本文将介绍如何在PowerShell中获取任...阅读全文
Windows PowerShell 2.0系列文章索引目录页
摘要: 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,并且支持图阅读全文
Windows PowerShell 2.0语言之扩展类型系统
摘要: 本文将简要介绍PowerShell的类型系统,以及内置的类型适配器和类型扩展如何协同工作,以实现所有代码中存在的类型。这里的扩展类型系统不仅仅是对于标准的.NET、COM和WMI对象类型的扩展,也对所有未知扩展公开。可以为活动对象添加属性和成员或者修改类型定义,这样所有该类型的对象都会自动添加新的成员,从而通过为目标对象添加自定义属性和方法来个性化定义运行环境。在学习如何修改对象和类型之前,通常会创建一些操作对象的常用函数,所以必须为函数名添加前缀或后缀以便于辨别函数操作的对象。如果将这些函数改成方法作为扩展类型,即可得到更短的类型名,从而不必记忆过多的函数名。 PowerShell可以灵活阅读全文
Windows PowerShell 2.0语言开发之脚本签名
摘要: 脚本签名用来保护代码在发布之后,用户使用之前不被篡改。数据源发送方使用自己的私钥加密数据校验和其他与数据内容有关的变量,完成对数据的合法“签名”;数据接收方则利用对方的公钥来解密收到的“数字签名”。并将结果用于数据完整性检验,以确认签名的合法性。 1 代码签名如何工作 签名代码确保程序对目标用户无害,其背后存在复杂而严密的操作来保证签名的有效性。当处理可执行代码签名时存在代码的完整性和来源的有...阅读全文
Windows PowerShell 2.0 代码调试并排除bug
摘要: 没有任何脚本或程序能够保证在任何情况下毫无错误地执行,在外界条件变化的情况下,需要预防可能出错之处。本文将着重讲解如何调试PowerShell代码,即查找并排除bug,这是每个开发人员都应该熟练掌握的技术。在本文将介绍PowerShell提供的解决方法,以及诊断和预防错误的方法,以使程序更加健壮和稳定。 大多数编程语言和环境提供了完整调试特性的系统,可以逐步跟踪程序的执行,保证所有的执行过程符合预...阅读全文

