zoukankan      html  css  js  c++  java
  • PowerShell入门(一):PowerShell能干什么?

      PowerShell能干什么呢?就像序言中提到的那样,PowerShell首先是个Shell,定义好了一堆命令与操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序;第二,PowerShell允许将几个命令组合起来放到文件里执行,实现文件级的重用,也就是说有脚本的性质;第三,PowerShell能够能够充分利用.Net类型和COM对象,来简单地与各种系统交互,完成各种复杂的、自动化的操作。

      一、与文件系统交互、运行应用程序

      就像在Dos中一样,在PowerShell的交互界面上键入"dir"并回车,会显示当前文件夹下的子文件夹和文件信息。

    PS D:\Projects\Practise\PowerShell> dir
        Directory: D:\Projects\Practise\PowerShell
    
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    d----         1/23/2013  12:35 PM            d1
    d----         1/23/2013  12:35 PM            d2
    -a---         1/21/2013   8:38 PM      36314 alias.tx
    -a---         1/21/2013   8:32 PM     241530 cmdlets.
    -a---         1/18/2013  10:18 AM        888 errors.t
    

       像这样的命令很多,比如echo "Hello", cd ..等等。从这里看来它就是一个命令行,实现了原来命令行的功能。但PowerShell是命令行的加强版吗,是命令行的超集吗?这个真不是,以后会专门说这个问题。

      就像在命令行里运行应用程序一样,可以在PowerShell的交互窗口中运行应用程序,如下:

    PS C:\Users\v-lukez> notepad
    PS C:\Users\v-lukez>
    

     如果想更好地控制应用程序,可以使用start命令,如下:

    PS C:\Users\v-lukez> start notepad -WindowStyle Maximized
    PS C:\Users\v-lukez>
    

     以上结果可以实现Notepad窗口的最大化。其实类似的命令还有很多,而且更多的参数意味着更精细地控制。

      二、创建脚本

      任务的自动化是以程序文件或者可执行脚本文件为基础的,PowerShell也支持将命令列表做成脚本文件来执行。以下是Hello.ps1脚本文件的内容:

    $a = "Hello"
    $a
    echo $a > a.txt
    dir a.txt
    

     Hello.ps1脚本文件的执行情况结果如下:

    PS E:\> D:\Projects\Practise\PowerShell\Hello.ps1
    Hello
        Directory: E:\
    Mode                LastWriteTime     Length   Name                                                                      
    ----                -------------     ------ ----                                                                      
    -a---         1/30/2013   4:56 PM         16 a.txt                                                                    
    

     你可能发现了,PowerShell脚本文件是以.PS1为扩展名的。以上这个脚本非常简单:先定义了一个变量,然后输出这个变量的结果,再将这个变量的值写入文件a.txt,最后输出这个文件的属性信息。仅从这一点看,PowerShell脚本很像Batch文件。但是实际上,PowerShell可以做得更多。

      PowerShell脚本支持自定义函数,就像我们在编程语言中做得那样。funcDemo.ps1给出了一个在PowerShell脚本中编写函数的示例:

    #funcDemo.ps1
    function SayHello ($name)
    {
        echo "hello $name"
    }
    
    SayHello "Luke"
    

    脚本的运行结果是“Hello Luke”。

    此外,关于PowerShell脚本内部语句的运行顺序,这里要做个简单说明:除了函数定义,脚本中的命令或者函数调用(其实也相当于执行命令)会顺序执行;函数中的语句只有在函数被调用的时候才会被执行。

      三、利用.Net类型和COM对象

      能够利用.Net类型和COM对象是PowerShell的最大特点,这让PowerShell能够最大限度的利用现有资源,并且很容易把.Net和COM程序员招徕到自己麾下。

      简单类型:

    [int]$a = 10
     [String]$b = 10
    

       .Net类型

    $Message = new-object Net.Mail.MailMessage("me@source.com","you@destination.com", "Subject", 
      "Here is some email")

       COM对象

    $myWord = new-object -comobject Word.Application
    

      创建了.Net或者COM的对象以后,就可以利用这些对象的属性和方法,来完成更加复杂的操作。

      作为本篇结束,用一句话总结,PowerShell吃得很少,干活很多,是Windows管理员日常必备的工具之一。走过路过,千万不要错过啊。。。

  • 相关阅读:
    【转】【SEE】基于SSE指令集的程序设计简介
    【转】【Asp.Net】asp.net服务器控件创建
    ControlTemplate in WPF ——ScrollBar
    ControlTemplate in WPF —— Menu
    ControlTemplate in WPF —— Expander
    ControlTemplate in WPF —— TreeView
    ControlTemplate in WPF —— ListBox
    ControlTemplate in WPF —— ComboBox
    ControlTemplate in WPF —— TextBox
    ControlTemplate in WPF —— RadioButton
  • 原文地址:https://www.cnblogs.com/ceachy/p/WhatCanPowerShellDo.html
Copyright © 2011-2022 走看看