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

简介:

我个人很少用到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下集成路径在附件中:

Windows PowerShell建立在.NET Framework 2.0/3.x的基础上, 和.NET公共语言运行时(CLR)和.NET框架上,它内部建立一个通信管道专门用来接受并返回.NET对象.

对脚本编程接触较少,今天将采用几个实际事例来验证Windows PowerShell(2.0) 对.NET对象的内部支持.

<1>准备工作

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

打开界面:

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

下载地址: Shell Tools——PowerShellAnalyzer-Tool

<2>验证Shell——.NET对象支持

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


 
 
  1. $getobject = New-Object Net.WebClient   
  2. $downloadurl = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar' 
  3. $storepath = "$home\LocalStroeFile.zip" 
  4. $getobject.DownloadFile($downloadurl, $storepath )  
通过New-Object 命令 新建一个NET.WebClient类 用来实现下载操作.  $downloadurl指定的是一个下载文件路径. 问了演示目的当前指定文件大小只有756KB.  $storepath存在在本地的路径. $home类似Web页面表达式一样在Shell脚本中自动解析到当前用户文件夹下. 最后直接调用WebClient类DownLoad方法实现对文件下载.下载结果:

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


 
 
  1. [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')    
  2. $url = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'   
  3. $local = "$home\powershellworkshop.zip"   
  4. $object = New-Object Microsoft.VisualBasic.Devices.Network    
  5. $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
执行过程中会提示出一个进度条页面:



本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/764633

相关文章
|
3月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
1月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
83 9
|
22天前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
19 0
|
22天前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
2月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
117 10
|
1月前
|
安全 Shell Linux
内网渗透测试基础——Windows PowerShell篇
内网渗透测试基础——Windows PowerShell篇
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
151 3
|
3月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
3月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
3月前
【Azure Developer】使用PowerShell Where-Object方法过滤多维ArrayList时候,遇见的诡异问题 -- 当查找结果只有一个对象时,返回结果修改了对象结构,把多维变为一维
【Azure Developer】使用PowerShell Where-Object方法过滤多维ArrayList时候,遇见的诡异问题 -- 当查找结果只有一个对象时,返回结果修改了对象结构,把多维变为一维

热门文章

最新文章