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

Windows PowerShell初体验——.NET对象支持

[复制链接]

尚未签到

发表于 2018-9-3 09:49:49 | 显示全部楼层 |阅读模式
  我个人很少用到Linux/Unix 操作系统. 对于不少Linux/Unix管理员在系统任务操作Shell一直保持很难理解. 后来从朋友公司听说他们测试队伍中专门保留了一个脚本Scirpt Shell 测试小组. 我一时更纳闷了. 当然这个问题知道我碰到Windows PowerShell-Windows出的一套Shell工具后 才渐渐理解.
  Windows PowerShell是微软为Windows系统开发的Shell及脚本语言技术,它是一种新的命令行外壳和脚本语言,用于实现系统自动化管理。它的出现弥补了与Linux/Unix系统相比Windows在Shell方面的不足,这也就不难理解为什么微软从2004起一直在做方面努力 相继推出两个版本1.0/2.0 ,这两个版本的连续发布可以看出微软公司在马力十足的不断开发PowerShell,同时也为程序开发人员提供了一种更高效的编写脚本的工具,
  Windows 7和Windows Server 2008 R2中已经整合了PowerShell 2.0: Windows 7下集成路径在附件中:
DSC0000.png

  Windows PowerShell建立在.NET Framework 2.0/3.x的基础上, 和.NET公共语言运行时(CLR)和.NET框架上,它内部建立一个通信管道专门用来接受并返回.NET对象.
  对脚本编程接触较少,今天将采用几个实际事例来验证Windows PowerShell(2.0) 对.NET对象的内部支持.

准备工作
  在进行验证之前. 我们有必要有一个好的编译工具.俗话说”公欲善其事必先利其器.”现在的Windows PowerShell已经发布到2.0版本 ,在Windows 7已经集成. 但是集成自带的图形操作界面ISE工具 . 总体给我感觉功能太多于单一. 没有字体调整. 没有详细调试执行信息提示界面.对>NET对象API没有提示界面. 我们需要一个更好用的工具——PowerShellAnalyzer
DSC0001.png

  打开界面:
DSC0002.png

  现在EditPlus和UltraEdit都已经出了powershell的语法文件,但是对Shell脚本编程功能更强的IDE只能算是PowerShellAnalyzer,用了N多第三方控件, 在2009年6月份只能45天试用,现在已经全部免费开放这款强大的Shell脚本的IDE工具. 也是微软官方推荐第三方工具的首选.
  下载地址: Shell Tools——PowerShellAnalyzer-Tool

验证Shell——.NET对象支持
  目前采用Shell版本是2.0, 请确认本机.NET的环境在2.0/3.5版本上. Shell直接集成与。Net CLR 之上. 这就为了我们直接在Shell脚本中创建.NET对象提供了可能.powershell可以很方便的使用.net的类库。使用 New-Object 可以实例化一个.net类. 例如我们常在网页操作文件下载. 我们同样可以直接Shell脚本用简短几行代码 快速实现对固定链接文件本地下载:
  


  • $getobject = New-Object Net.WebClient
  • $downloadurl = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
  • $storepath = "$home\LocalStroeFile.zip"
  • $getobject.DownloadFile($downloadurl, $storepath )
  


通过New-Object 命令 新建一个NET.WebClient类 用来实现下载操作.  $downloadurl指定的是一个下载文件路径. 问了演示目的当前指定文件大小只有756KB.  $storepath存在在本地的路径. $home类似Web页面表达式一样在Shell脚本中自动解析到当前用户文件夹下. 最后直接调用WebClient类DownLoad方法实现对文件下载.下载结果:
DSC0003.png

  下载成功. 但是整个过程没有任何提示.而且下载时间是相对于自己网络环境而言有很大影响. 我们是否有必要做一个下载进度条来显示下载的文件总体进度.不过很遗憾,简单的DownloadFile ( )方法没有提供下载进度条控制. 但是VBScript中有一个方法恰恰在空间ServerComputer.Network下提供了下载进度条控制方法:
  


  • [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
  • $url = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
  • $local = "$home\powershellworkshop.zip"
  • $object = New-Object Microsoft.VisualBasic.Devices.Network
  • $object.DownloadFile($url, $local, '', '', $true, 500, $true, 'DoNothing')
  

  现在加载Microsoft.VisualBasic.Devices.Network 空间. New出对象,后. DownLoadFile方法参数对比:
  DownloadFile 方法 (Uri, String, String, String, Boolean, Int32, Boolean, UICancelOption)

Uri:String 或 Uri。要下载的文件的路径,包括文件名和主机地址。必选。 String 下载文件的文件名和路径。必选。 String。要进行身份验证的用户名。默认值为空字符串 ""。 String。要进行身份验证的密码。默认值为空字符串 ""。 Boolean。指定是否显示操作进度。默认为 False。 Int32。以毫秒为单位的超时间隔。默认值为 100 秒。 Boolean。指定是否改写现有文件。默认为 False。 UICancelOption。指定当用户在对话框(此对话框在 ShowUI 设置为 True 时显示)上单击“取消”或“否”时的行为。默认为 ThrowException。 执行过程中会提示出一个进度条页面:
DSC0004.png




运维网声明 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-561900-1-1.html 上篇帖子: PowerShell:打印AD组成员 下篇帖子: PowerShell:生成AD账号状态报告
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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