Board logo

标题: [公告][原创]欢迎大家的到来暨PowerShell初步印象 [打印本页]

作者: tigerpower     时间: 2006-5-1 08:28    标题: [公告][原创]欢迎大家的到来暨PowerShell初步印象
这里刚刚成立,欢迎大家的到来!
由于正值五一假期,估计今后几天没有时间写文章,但也不希望这里是空荡荡的,所以就先简单的跟大家聊一聊PowerShell。

先申明一点,如果您是初学者,下面说的内容您并不是全懂,或者说,您对于命令行根本是个门外汉,但却对它很有兴趣,那么请您随时关注我们这个版块,我们将为初学者编写循序渐进的教程,使之能逐步掌握和使用。教程具体撰写工作将在节后逐步展开。
敬请期待!

PowerShell是微软下一代Windows命令行工具,它是一个全新的命令行,我粗略地读了一下它的手册页,并简单地试了几条命令,给我最强烈的感觉是“这个新工具的用法太像python了”(python是一种面向对象的脚本语言)。

我们知道,传统的shell-比如windows XP中的cmd.exe,它的输入输出都是文本,当我们用管道或者重定向连接几个命令时,我们所传递的都是文本。而PowerShell与之完全不同,它的输入输出都是对象。您可能没有面向对象的编程经验,这不要紧,我们先来看几个例子:
今天是2006年5月1日,我现在只想要年份,在cmd.exe中,我们可以

C:\> echo %date:~0,4%
2006

用切片的方法获得前4个字符。但这种方法有一个问题,那就是其他民族可能用的是05/01/2006的月/日/年的书写习惯,所以当系统的“区域和语言选项”设置不同时,变量date前4个字符未必就是年份。

而在PowerShell中的做法是:

PS C:\> ::now.year
2006

作为一个对象有属性now,now自身又有属性year。(属性其实类似于变量)
于是我们用上面的方法得到了年份。

如果我们要得到昨天日期,可以在PowerShell中:

PS C:\> ::now.adddays(-1)
2006年4月30日 7:29:00

只要昨天日期中的月份:

PS C:\> ::now.adddays(-1).month
4

adddays称为now的方法(方法其实类似于函数)
如果要把这个月份保存在变量中以便以后使用:

PS C:\> $yestoday=::now.adddays(-1).month
PS C:\> $yestoday
4

如果windows XP下的cmd要做同样的事(假设不借助第三方软件),一般先将年、月、日各自切片存入变量,然后再自己编写算法,由于要考虑一个月中有28天、30天、31天,还要考虑闰年,所以算法并不是很简单的。


可能您会问,究竟什么是属性,什么方法,它们要怎么使用?
举个例子:男生小明是体育委员,女生小玲是班长
小明作为一个对象他就有性别这个属性,这个属性的值就是男。
小明.性别 ->男
所以当在命令行里出现“小明.性别”,系统会自动计算出“男”。
类似的我们可以用“小玲.姓名”,系统会自动计算出“小玲”。
由于小玲是班长,在上下课时可以发送“起立”的指令。所以小铃就有“起立”这个方法,使用这个方法的结果就是全班同学站起。
小玲.起立() ->全班同学站起

又比如把"this is a string"转换成大写

PS C:\> "this is a string".ToUpper()
THIS IS A STRING

只要是字符串,就一定有ToUpper()这个方法。
"this is a string".ToUpper()返回的仍然是一个字符串对象,我们还可以用字符串的方法继续下去。

PS C:\> "this is a string".ToUpper().ToLower()
"this is a string"

关于PowerShell,今天就先谈到这里。

Last edited by tigerpower on 2006-5-2 at 12:50 ]

作者: doscc     时间: 2006-5-2 18:18
支持

作者: doscc     时间: 2006-5-2 18:20
新的命令行.用的是对象.不错.
就像在VB家族一样.也是用对象.

作者: wl00560     时间: 2006-5-2 19:49
问一下楼主,powerShell哪儿有下载的?我想学学,就是不要太难了,呵呵。

作者: tigerpower     时间: 2006-5-2 20:35
安装Windows PowerShell您需要
1. Windows XP/2003/Vista的操作系统
2. .NET Framework Version 2.0 RTM

微软官方2006年4月25日发布Windows PowerShell预览版(RC1),它的最终正式版有望在今年第四季度发布。
点击进入Windows PowerShell RC1下载页面(需注册)

同一页面上有关于PowerShell帮助文档的链接(“Windows PowerShell RC1 Documentation Pack”)
以及.NET Framework Version 2.0 RTM的链接(“More .NET Framework Downloads”)
除了32位的版本,它还有x64、ia64的版本。

Last edited by tigerpower on 2006-5-2 at 20:58 ]

作者: wl00560     时间: 2006-5-2 21:04
原来还在测试啊,那就先等等。

作者: electronixtar     时间: 2006-5-3 21:46
支持~~~~太象Bash了~~

作者: namejm     时间: 2006-6-9 08:12
  今天才看到微软的下一代命令行用法,感觉这个工具真是强大啊——不知道下个版本的操作系统还支持xp下的所有cmd命令不。

作者: IceCrack     时间: 2006-7-13 07:44
呵呵 暂时还用不上。很多命令,现在的机子应该是不支持的。那个支持对像真的很不错

作者: willsion     时间: 2006-7-31 13:11
功能强大,不错。

感觉有点像C语言的“结构”部分。

Last edited by willsion on 2006-7-31 at 13:20 ]

作者: shayulei     时间: 2006-10-6 09:29
Windows PowerShell的帮助文件不会用,所以Windows PowerShell不会用

作者: electronixtar     时间: 2006-10-8 05:44
和楼上的有同感。不过现在 Power Shell 已经作为 微软 Script Center 的一部分了,足以可见PowerShell的重要性

作者: lxmxn     时间: 2006-10-8 06:18
顶一下先``
下一代的命令提示功能更强大了,支持~~~

作者: 6622186     时间: 2007-4-25 10:54
我下了, 还要 .net 的支持, .net 要二十二 M, 看了帮助, 不太懂, 就是什么对象, 还有什么别名, 后来不知怎么 .chm 文件 受限用户无法打开, 就把 .net 卸载了.

作者: lxmxn     时间: 2007-4-28 18:12
汗,先下载.net然后安装Powershell就行了啊,不用管.NET的,Powershell可以直接用。

作者: shijianxin     时间: 2007-5-5 03:06
只是知道不懂得东西是越来越多
感慨