欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

PowerShell 学习笔记(5): 浅谈使用.Net对象

本文在ITECN首发,未经许可严禁转载。 

  

  首先要使用.net对象的话,我们需要一个详细的资料库,无疑MSDN是最好的。诸位可以通过以下地址进行访问。

 

http://msdn2.microsoft.com/zh-cn/library/ms229335(VS.80).aspx

 

  打开之后不要吓一跳,里面的东西的确是很丰富,不可能是短时间内全部都掌握的,我们先大致浏览下里面的东西。

  首先我们天天和系统打交道,所以System理所应当是我们应该关注的。翻动列表的时候我们会发现“System.DirectoryServices.ActiveDirectory”,呵呵,这个大家肯定很熟悉,活动目录嘛,不过点击“+”号展开后又是一堆东西,这下大家明白PowerShell V1.0没有提供AD相关的cmdlets的原因了吧,把这些东西都完美的整合到PowerShell里面是需要时间的,我们期待PowerShell的后继版本的改进,而目前我么可以使用Quest公司提供的扩展包(笔记4中有提到)。

  然后我们就看到“System.Net”显而易见这是和网络相关的类,我们点击“+”号展开,呵呵我们面前再次出现一大堆东西。不过我们耐心点看的话会发现一个叫WebClient的类,顾名思义,网络客户端。看来里面有好东西啊。我们点击“+”,我们就会看到如下图一样的列表。

image

  我们会发现一个叫DownloadFile的方法,我们再单击“+”展开,看看这个方法具体如何使用。

  有两个参数,第一个是URI,第二个是filename,分别代表网络文件路径,和下载文件的本地存放路径。因此假设我们要下载ITECN的logo的话,我们可以使用以下两行代码

$webclient = New-Object system.Net.WebClient

$webclient.downloadfile("http://blogs.itecn.net/Themes/default/images/common/title.gif","title.gif")

  新建对象,然后执行下载。这里要注意的是如果本地文件路径不填写完整,文件将被下载到 [System.Environment]::CurrentDirectory 中的路径而不是你当前提示符“>”前的路径,如果你需要修改的话可以使用[System.Environment]::set_CurrentDirectory('x:\powershell')进行修改

image

  当然,你还会看到下面有一个DownloadString的方法,这个比较简单,我们试试就知道了。

  比如我们输入下面的语句(已创建$webclient对象)

$webclient.DownloadString("http://www.google.com")

输出结果

image

  然后还有个比较有用的就是“System.Net.NetworkInformation.Ping”,这个在笔记3里出现过,要想在PowerShell里面使用的话,我们可以输入以下代码

$ping = New-Object System.Net.NetworkInformation.Ping

$ping.send("192.168.1.1")

  这比使用WMI的Win32_PingStatus简洁多了,当然你要是问为什么不使用直接使用Ping(还有比如dir,del,findstr 等Windows Native Command)呢?

  这里再推荐一个国内的PowerShell blog (这里还有部分PowerShell的基础知识,不熟悉的朋友也可以再阅读下,加深理解)http://blog.chinaunix.net/u1/42924/showart_353355.html

  在这篇blog里阐述的比较详细,主要是出于效率的原因所以不推荐使用Native Command

  原创测试:http://bbs.winos.cn/viewthread.php?tid=20150 by Anders@winos

  总结一下的话,在PowerShell使用.Net对象只需用 New-Object 新建.Net对象,而想要确定具体.Net对象的话则需要查阅MSDN的相关文档,我们需要关注的是继承层次结构中黑体标注的部分。这是我们新建对象时需要用到的。然后具体方法的使用则需要查阅文档。

image

  当然不是所有.Net 对象都能像例子中的那样很简单的就可以使用。New-Object的帮助里面还有几个比较简单的例子,诸位也可看下。

  最后,本文只是非常非常简单的说了下关于在PowerShell中使用.Net,希望给诸位起个抛砖引玉的作用。

已发表 2007年9月15日 18:16 作者 ghjconan
归档在:

评论

# re: PowerShell 学习笔记(5): 浅谈使用.Net对象

2007年9月15日 22:56 by anders

2.0要面世了,期待中。。。调用类库更加简单化了

# re: PowerShell 学习笔记(5): 浅谈使用.Net对象

2007年9月15日 23:06 by anders

http://blog.chinaunix.net

呵呵,原来是马哥的BLOG,推荐下,入门非常不错~~~

# re: PowerShell 学习笔记(5): 浅谈使用.Net对象

2007年9月16日 1:03 by anders

ghjconan 大哥写的很详细~~~顶下

在纯PS1.0中调用类库确实头大,期待2.0的发布。。。

# re: PowerShell 学习笔记(5): 浅谈使用.Net对象

2007年9月16日 7:14 by ghjconan

如果使用PowerGUI或者PowerTab的话,那还可以,它们都支持动态提示

禁止匿名发表评论