设为首页 收藏本站
查看: 1286|回复: 0

巧用PowerShell维护Win2008服务器作业

[复制链接]
YunVN网友  发表于 2018-9-3 09:58:15 |阅读模式
  http://windows.itwaka.com/
  在日常工作中,管理员经常需要与操作系统进行交互。虽然交付的方式有很多种,对于对于服务器的维护来说,通过PowerShell来进行交互,是首选的方 式。通常情况下,PowerShell可以提供强大的本地脚本语言。也即是说,脚本可以被移植到所有巴本的Windows操作系统中。由于大部分企业并不 是很纯的2008应用环境。如可能只有一个域控制使用的是2008操作系统,其他服务器以及客户端采用的是其他低版本的操作系统,甚至采用的是非  Windows操作系统。在这种情况下,通过PowerShell对应用环境进行维护,是首要的选择。在这篇文章中,笔者就谈谈这个PowerShell  工具的使用技巧。

  一、cmdlet来实现自定义的功能。
  Cmdlet是Powershell的核心工具之一。这个工具跟传统的CLI  Shell有点类,也是一种内置的命令。不过在可扩展性方面有本质的不同。Cmdlet通过将NET类编译为动态链接库,并在实际运行时加载到  PowerShell工具中来实现。这也就是说,其实并没有固定的Cmdlet类。只要管理员有这个能力并且拥有相关的权限,就可以使用  PowerShell的软件开发包来编写自定义的Cmdlet,从而实现自定义的功能。
  由于不同的企业其应用环境千差万别。为此系统工程师往往可以通过这个工具来编写一些常用的管理命令。在需要使用时,直接调用即可。而不需要重新编写。对于一些带有很多参数的命令,或者命令脚本,就显得非常的方便。在使用这个功能时,笔者认为管理员需要注意如下内容。
  一是语法上面的问题。Cmdlet始终以动词和名词来进行命名。注意,在动词与名词之间有连字符号来进行分隔。通常情况下,动词说明这个命令所 需要执行的操作,而名词则代表的是操作的对象。举一个简单的例子:get-process。get是动词,表示取得;而Process是操作的对象,表示 进程。
  二是参数的问题。跟普通的CMD命令一样,在PowerShell中也可以带一些参数,来实现特定的功能,或者对显示的结果进行过滤。在实际工 作中,通过参数可以简化显示的结果。而且PowerShell在参数这方面的功能比较强大,如其中的很多参数还可以使用通配符。如Get-Process  W*。这表示显示所有以W开头的进程。
  三是需要注意Cmdlet工具的一个局限性。当Cmdlet在执行命令时,一次只执行一个单独的命令。如果某个功能(如将某个文件复制到其他一 个地方,然后再对这个原文件进行重命名)可能需要通过多个动作来完成,此时必须要通过两个命令来完成。不过有些功能的动作有可能有十几个命令构成,此时如 果使用Cmdlet来实现的话,并不是很合适。在这种情况下,可能需要用到我们下面要介绍的脚本功能。
  二、脚本执行批量的维护工作。
  在谈到Cmdlet这个工具时,笔者强调过,其一次性只可以执行一个命令。如果要执行多个命令的话,则需要通过脚本来实现。其实这里谈的脚本, 就是存放在硬盘中的一个文件。而这个文件中可能有多个Cmdlet指令。通过调用这个文件,可以让系统一次性同时执行多个命令,以完成特定的维护任务。
  PowerShell指的脚本是一个以.PSL为扩展名的文件。系统工程师在需要时可以随时进行访问。这个脚本可以运行于PowerShell   会话中。这里值得一提的是,制作好的脚本,还可以运行在普通的Cmd环境中。也就是说,脚本与Windows操作系统传统的CMD具有很好的兼容性。不过 在调用掉本时,CMD环境还是有点区别。如果要从CMD命令提示符下运行PowerShell脚本,需要先做一个工作。即使用CD命令来更改脚本所在的目 录位置,或者将这个脚本文件复制到特定的位置中。然后使用命令参数并制定要运行的脚本以运行PowerShell可执行文件。虽然如此,但是在大部分情况 下,笔者还是建议在Powershell中来调用脚本。这可以避免路径不对的烦恼。在运行某个脚本时,系统工程师可以根据需要,决定是否需要使用参数。
  三、函数可以对当前实例进行维护。
  在其他编程语言中,都会有过程或者函数的方法。通过这种方式,可以实现某个特定的任务。如定期更新某组数据等等。在PowerShell中的函 数,其实起到的也是这方面的作用。PowerShell的函数,提供了给命令列表分配名称的途径。在掌握这个功能时,笔者认为需要注意如下几点。
  一是需要注意,函数与脚本之间的区别。函数也可以同时执行多个命令。他们两个之间的区别,主要对于实例的依赖关系。一般来说,每个Shell脚 本都会自动启动Shell的新实例。而函数只会运行在同一个Shell的当前实例中。简单的说,就是一个脚本对应一个实例。而多个函数对应于一个实例。在 实际工作中,这是系统工程师判断使用脚本还是函数的重要依据。另外,在有效性上也有所区别。命令行中定义的函数只会在当前的PowerShell会话期间 有效,并且只处于局部作用域中。对于后续新的会话,并不生效。也就是说,如果要在所有会话中(特别是后续新添加的会话中也有效的话),就需要使用脚本,而 不是函数。
  二是重复利用的问题。虽然在命令行上定义的函数是在PowerShell环境中动态创建一系列命令集合的有效方法。但是需要注意,这些函数通常 情况下只保存在内存中。当PowerShell关闭后者重新启动后会自动删除这些函数。这也就是说,函数并不会独立的保存在硬盘上,为此其可重复利用性比 较差。在实际工作中,虽然有可能动态的创建复杂函数,但是我们往往不这么做。有经验的系统工程师会将函数保存在脚本文件中。然后通过调用脚本文件来调用自 定义的函数。这就可以提高函数的可用性。
  在使用函数这个功能时,主要是需要关注与脚本文件之间的差异,并明确函数是一次性的。当Powershell关闭时函数也就不存在了。在实际工作中,通常是将函数与脚本文件结合使用。通过文件的形式将函数固化下来,以实现重复调用的目的。
  四、本地命令来调用系统的外部程序。
  用过Cmd的用户知道,Cmd可以分为内部命令与外部命令。虽然外部命令不经常使用,但是其功能还是很强大的。在遇到一些特定的需求时,使用外 部命令能够迅速的解决问题。其实在Powershell中,将程序分为内部程序与外部程序。如果需要调用外部程序的话,则需要通过本地命令来调用。本地命 令包含操作系统可以运行的外部程序。在使用本地命令来调用外部程序时,需要注意如下内容。
  一是运行本地命令的话,系统必须要创建新的进程。此时可能会影响系统的性能。如果进程数达到饱和的话,系统工程师还无法调用外部程序。故大部分情况下,这个命令并没有其他类型的PowerShell命令来的有效。
  二是对于参数的理解问题。这里需要注意,在调用外部程序时,也可以带参数。但是这些参数通常与PowerShell的参数不同。通常的  Powershell命令,虽然不同的命令带有不同的参数。但是只要参数的名字相同,其含义也基本相同。可是外部程序则不同。这主要是因为外部程序并没有 统一的管理规范,其可能是由不同的专家根据特定的功能来编写。此时不同的外部程序可能会遇到参数名字相同的情况。而不同的专家会赋予其不同的含义。为此系 统工程师需要注意,参数含义的理解问题。
  http://windows.itwaka.com/


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561906-1-1.html 上篇帖子: PowerShell下设置IP地址 下篇帖子: 使用powershell建立恢复存储组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表