Windows PowerShell vs UNIX Shell
- qiang_liu8183
- 论坛版主
- 帖子: 10701
- 注册时间: 2006-09-10 22:36
- 系统: Arch Debian
- 来自: 北京
-
- 论坛版主
- 帖子: 21308
- 注册时间: 2007-08-02 20:29
- 系统: 窓辺とうこ
Re: Windows PowerShell vs UNIX Shell
不止叫了,还是Power
-
- 帖子: 1513
- 注册时间: 2009-09-25 20:19
Re: Windows PowerShell vs UNIX Shell
從Shell的字面意思來說,確實是shellqiang_liu8183 写了:这玩意儿也配叫shell?!

-
- 帖子: 1513
- 注册时间: 2009-09-25 20:19
Re: Windows PowerShell vs UNIX Shell
這個Power是相對於原來的Windows Command Shell(也就是cmd.exe)而言的,Windows Command Shell也是源於DOS Command Shell,同門兄弟還有OS/2 Command Shell。JiangHui 写了:不止叫了,还是Power
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: Windows PowerShell vs UNIX Shell
不如把 python 上面加点 m$ 自己的东西。
ps:纯文本 + 管道 + 正则 是王道。
ps:纯文本 + 管道 + 正则 是王道。
- raine
- 帖子: 22
- 注册时间: 2009-11-05 21:11
Re: Windows PowerShell vs UNIX Shell
Unix的shell是完全的命令解释–文本处理这种流程来走的,将命令的输出文本进行有机加工,抽取有用的信息,再反馈到更多的命令使用中去,最后达到几乎是所有能想到的目的, 但是文本字符串也是你唯一能够操作的对象。
而PowerShell将命令的返回对象化了,也就是把命令返回的结果当作对象,进而调用或输出对象另外的方法或属性。Shell也能OO起来!好处是可以得到最精确最严谨的结果,而不会因为文本块的切割联合等问题费脑筋,也不会因为漏算某些情景导致奇怪操作结果。而坏处则是把用户的问题转给了cmdlet的开发商,一个适用性强的cmdlet是要设计者付出很大的心思才能做好的。
欢迎排砖, 对比两种shell的优缺点。。。
而PowerShell将命令的返回对象化了,也就是把命令返回的结果当作对象,进而调用或输出对象另外的方法或属性。Shell也能OO起来!好处是可以得到最精确最严谨的结果,而不会因为文本块的切割联合等问题费脑筋,也不会因为漏算某些情景导致奇怪操作结果。而坏处则是把用户的问题转给了cmdlet的开发商,一个适用性强的cmdlet是要设计者付出很大的心思才能做好的。
欢迎排砖, 对比两种shell的优缺点。。。
- raine
- 帖子: 22
- 注册时间: 2009-11-05 21:11
Re: Windows PowerShell vs UNIX Shell
JiangHui 写了:不止叫了,还是Power
纠结于名称无意义。
- raine
- 帖子: 22
- 注册时间: 2009-11-05 21:11
Re: Windows PowerShell vs UNIX Shell
在PowerShell 中工作时,所使用的是 .NET 对象。但是随着经验的增加,您会发现自己使用的是对象,甚至用对象进行思考。 从技术上讲,.NET 对象是 .NET 类的实例,包含数据以及与该数据关联的操作,可以将对象视为具有属性和方法的数据实体。 例如,在PowerShell 中获取服务时,实际上是获取表示该服务的对象。查看有关服务的信息时,所查看的是其服务对象的属性,启动服务时,所使用的是服务对象的方法。类型相同的所有对象都具有相同的属性和方法,但是对象的每个实例可能具有不同的属性值。例如,每个服务对象都具有 Name 和 Status 属性。但是,每个服务都可以具有不同的名称和不同的状态。
使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递到另一命令)容易得多。通信通常需要字符串操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。
PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。
在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。
PS> ipconfig | findstr "Address"
IP Address. . . . . . . . . . . . : 172.28.21.5
IP Address. . . . . . . . . . . . : 172.30.160.225
由于脚本可以用于传播恶意代码。因此PowerShell 中的安全策略允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。PowerShell包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。
使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递到另一命令)容易得多。通信通常需要字符串操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。
PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。
在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。
PS> ipconfig | findstr "Address"
IP Address. . . . . . . . . . . . : 172.28.21.5
IP Address. . . . . . . . . . . . : 172.30.160.225
由于脚本可以用于传播恶意代码。因此PowerShell 中的安全策略允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。PowerShell包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。
-
- 帖子: 1831
- 注册时间: 2009-04-03 15:10
Re: Windows PowerShell vs UNIX Shell
由着他折腾去吧……还“向服务器领域迈出一大步”……一个运行于服务器的系统最重要的是核心的强大……而不是shell有多么power……
-
- 帖子: 1831
- 注册时间: 2009-04-03 15:10
Re: Windows PowerShell vs UNIX Shell
不过话又说回来,他这么做可能会使服务器管理的门槛降低许多,估计目标在于抢占低端服务器市场,也许过几年一个8、9岁的小屁孩学了两三天的就可以在网上开个服务器叫嚣了…… 

- raine
- 帖子: 22
- 注册时间: 2009-11-05 21:11
Re: Windows PowerShell vs UNIX Shell
dshbusiness 写了:由着他折腾去吧……还“向服务器领域迈出一大步”……一个运行于服务器的系统最重要的是核心的强大……而不是shell有多么power……
要pk 两种系统的内核可再开一贴,

-
- 帖子: 1831
- 注册时间: 2009-04-03 15:10
Re: Windows PowerShell vs UNIX Shell
回楼上,linux的内核和unix的内核有多么强大我有幸见识过一点点,至于win的……我还没有幸见到……(我指的是源码级别的分析)所以pk两种系统内核的帖子不开也罢…… 

- untitled
- 帖子: 611
- 注册时间: 2008-12-18 11:47
Re: Windows PowerShell vs UNIX Shell
那些软粉不是鼓吹GUI万能么,微软真他妈不给面子,扒粉丝遮羞布啊。raine 写了:PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离. PowerShell的前身命名为Monad, 在2006年4月25日正式发布beta版时更名为PowerShell.
大多数 shell(包括 Cmd.exe 以及 SH、KSH、CSH 和 BASH UNIX shell)的运行方式是在新进程中执行命令或实用工具,然后将结果以文本形式显示给用户。经过数年的发展,许多文本处理实用工具(如 sed、AWK 和 PERL)现已发展为支持此交互。这些 shell 还具有内置到 shell 中并在 shell 进程中运行的命令.
Windows PowerShell 有很大不同。
Windows PowerShell 不处理文本。相反,它处理基于 .NET Framework 平台的对象。
Windows PowerShell 附带了具有一致界面的大量内置命令。
所有的 shell 命令都使用同一命令分析程序,而不是每个工具使用不同的分析程序。
面对CUI,微软还是从了啊~
远程桌面太蛋疼了。
- ChloeRei
- 帖子: 1021
- 注册时间: 2007-11-23 9:49
Re: Windows PowerShell vs UNIX Shell
这个看不出来有多对象阿raine 写了:
PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。
在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。
PS> ipconfig | findstr "Address"
IP Address. . . . . . . . . . . . : 172.28.21.5
IP Address. . . . . . . . . . . . : 172.30.160.225
跟
ifconfig | grep 'addr'
差不多?
ruby的irb还更对象一点

(`ifconfig`).each_line{|line| puts line if line.include?("addr")}