Board logo

标题: [转载教程] [PowerShell教程][01]初识PowerShell [打印本页]

作者: wankoilz    时间: 2011-5-22 09:36     标题: [PowerShell教程][01]初识PowerShell

[PowerShell教程][01]初识PowerShellhttp://bbs.bathome.net/thread-12415-1-1.html
[PowerShell教程][02]PowerShell基础知识之一http://bbs.bathome.net/thread-12416-1-1.html
[PowerShell教程][03]PowerShell数据类型之整型http://bbs.bathome.net/thread-12417-1-1.html
[PowerShell教程][04]PowerShell面向对象基础之一http://bbs.bathome.net/thread-12418-1-1.html
[PowerShell教程][05]PowerShell面向对象基础之二http://bbs.bathome.net/thread-12419-1-1.html
[PowerShell教程][06]PowerShell中格式化命令和输出命令http://bbs.bathome.net/thread-12420-1-1.html
[PowerShell教程][07]PowerShell中Write族cmdlet的介绍和使用http://bbs.bathome.net/thread-12421-1-1.html
[PowerShell教程][08]字符串字面值http://bbs.bathome.net/thread-12422-1-1.html
[PowerShell教程][09]PowerShell中的数组使用http://bbs.bathome.net/thread-12423-1-1.html
[PowerShell教程][10]PowerShell中的HashTable的使用http://bbs.bathome.net/thread-12424-1-1.html
[PowerShell教程][11]PowerShell中的加法运算http://bbs.bathome.net/thread-12425-1-1.html

说明:教程转自 http://bbs.winos.cn/thread-35543-1-1.html


作者: Edengundam(马涛)


PowerShell的概念性介绍我不太想说得太多, 简单概括几点:

  1. 微软Windows操作系统最初的设计目标是面向非技术用户, 甚至是对计算机不感兴趣的人群, 因此, 真正自动化, 强大的Shell一直不是微软公司所关心的问题. 随着Windows开拓市场, 用户的反馈等, 微软意识到, 通过图形化工具管理一台计算机或许是最完美的手段, 但是随着需要管理的计算机数量提升, 就必须依靠能够有效自动化计算机配置的工具, 这是开发PowerShell的一个重要原因.

  2. 为什么不使用已有的shell或扩展cmd.exe呢? 我们熟知的bash, ksh是为unix, linux系统设计的, 优化的shell, 从这些操作系统内核提供的system call来看, shell将内核的特性真正表现出来. 但是, Windows操作系统和unix, linux是完全不同的, Windows将大部分管理通过面向对象的方式进行管理, 提供了诸如COM, WMI等概念. 传统的shell输出信息都是字符串, 这样有利于统一的处理, 但是字符串也是你唯一能够操作的对象. PowerShell开发队伍为了能够为Windows提供更好的优化, 因此选择了重新创建一门新的语言.

  3. PowerShell最初的蓝本是Posix的shell标准, 并借鉴了大量的Perl语言中精华, 提供了一个基于对象的脚本环境. PowerShell v1(版本1.0)希望使用者与对象交互, 但没有真正提供面向对象创建的语法(但是, 借助PowerShell的机制, 可以自己实现这套语法). 并且大量特性与C#语言相同, 因此C#到PowerShell的转换是非常容易的.

  4. PowerShell有一些核心的特性, 这些特性是比较复杂的, 他们的存在是为了让传统shell用户能够尽量获得相似的用户体验. 对于普通用户, 你不需要理解, 掌握这些复杂的特性, 但是对于想深入理解, 掌握PowerShell的朋友, 这些特性对你将会产生巨大的帮助.

综上所述, 如果你用bash, perl, .Net, WMI, COM, VBscript的相关知识, 那么学习PowerShell的过程就会更短. 但是对于掌握bash, ksh的用户, 最困难的步骤是对问题的处理方式, 思维方式转变. 因为PowerShell中不仅仅有字符串, 因此, 尝试使用更加丰富的手段去处理问题, 往往阻挠大家的前进, 不过只要你有信心, 那么你一定能克服这些不是困难的困难. 祝大家在学习PowerShell的过程中, 能够举一反三, 从软件工程等多种角度, 更好的理解计算机科学.

下面, 简单的贴出简单的语法及解释.
  1. PS C:\> 5 + 100
  2. 105
复制代码
在PowerShell中, 进行数学运算相当的简单, 将需要计算的表达式输入, 结果就会输出, 这里根本不需要什么打印语句, 执行的结果不会被丢弃掉, 而是将结果输出(以后, 我们会看到如何将结果丢弃).
  1. PS C:\> "hello world!"
  2. hello world!
复制代码
学习任何语言, 第一个代码总会是hello world, 和上面的数学计算一样, 直接输入即可.
  1. PS C:\> (5 + 23 * 2) / 23
  2. 2.21739130434783
复制代码
对于, 四则混合运算, PowerShell也支持的很好, 能够使用()来修改运算符的优先级和结合性. 这里注意, PowerShell支持几种不同的数据类型, 如: int, float, double等. 大多数时候, 我们会在后面对类型转换等做一些介绍.
  1. PS C:\> (2+2)*3/7 > c:\foo.txt
  2. PS C:\> type c:\foo.txt
  3. 1.71428571428571
复制代码
除了将运算结果输出到显示器, 我们可以将结果存储到临时文件, 然后用type命令将文件的结果取回. 怎么样? 是不是和shell很相似呢?
  1. PS C:\> $n = (2+2)*3
  2. PS C:\> $n
  3. 12
  4. PS C:\> $n / 7
  5. 1.71428571428571
复制代码
除了将运算结果存储到文件, 我们可以通过变量赋值, 将运算结果存储到变量中, 并使用该变量进行后续的计算.
  1. PS C:\> $files = dir
  2. PS C:\> $files[3]
复制代码
  1.     Directory: Microsoft.PowerShell.Core\FileSystem::C:\
  2. Mode LastWriteTime Length Name
  3. ---- ------------- ------ ----
  4. d-r-- 2007-7-26 21:25 Program Files
复制代码
PowerShell是一个支持对象的语言, 我们可以简单的将命令返回的结果赋值给变量, $files中包含了但前目录下的目录项的对象集合, 使用普通数组访问语法, 就可以获得该该位置的对象. 例子中显示了Program Files目录. 注意PowerShell中的数组下标是从0开始的. 这点与.Net Common Language Runtime完全一致.
大家在学习PowerShell时, 希望大家能坚持到最后. 坚持就是胜利!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2