Windows PowerShell - 命令行外壳和脚本系统管理工具 (Command, CMD)

创建时间:
2014-07-04 23:42
最近更新:
2018-11-13 02:42

Resource - Official

.NET 开发人员的命令行外壳和脚本系统管理工具。
Microsoft Script Center Home Page (脚本中心) - Official Entrance of Windows PowerShell

Resource

  1. PowerShell 中文博客 - 收集和分享 Windows PowerShell 相关教程、技术和最新动态
  2. PowerShell 在线教程
  3. http://www.cnblogs.com/ceachy/tag/PowerShell/
  4. 如何在 PowerShell 中连续执行命令
  5. 三种运行 Powershell 代码的方法
  6. PowerShell 入门 - 变量、赋值、算术运算、类型转换、数组、注释

Syntax

  • 变量名均以 $ 开头,后续字符可以是数字、字母、下划线,变量名大小写不敏感。
  • 赋值操作符为 =,几乎可以把任何数据赋值给一个变量,甚至一条 cmdlet 命令。
  • 调用操作符 &
  • 一个脚本块可以包含许多的 Powershell 命令和语句。它通常使用大括号定义。最小最短的脚本块就是一对大括号,中间什么也没有。

网摘

  • PowerShell 脚本文件的扩展名为 .PS1
  • PowerShell 不能执行任何 cmd.exe 命令,至少不能直接执行。这是因为,PowerShell 不是 cmd.exe 的新版本或者加强版什么的,只是它的有些命令从长相到功能都跟 cmd.exe 命令很相似而已。
  • PowerShell 可以做为一个应用程序在 cmd.exe 中运行,其运行方式有点像在 cmd.exe 中运行 SQLCmd 或者 Nslookup,在没有明确 exit 退出之前,一直是应用程序的运行环境,一切的输入,包括命令和数据,都由应用程序来接受和处理。
  • cmd.exe 也可以在 PowerShell 中作为应用程序运行,其运行方式与在cmd.exe 中运行 PowerShell 相似。
  • PowerShell 脚本内部语句的运行顺序: 除了函数定义,脚本中的命令或者函数调用 (其实也相当于执行命令) 会顺序执行;函数中的语句只有在函数被调用的时候才会被执行。

别名

PowerShell 通过 Alias 这个特性,可以让使用者以 cmd.exe 风格来使用 PowerShell 命令。这样做的好处是让用户在刚接触 PowerShell 的时候,就像在使用 cmd.exe 一样亲切、熟悉。坏处是,让人容易把 PowerShell 和 cmd.exe 搞混了。不过当你了解了 Alias 的概念和 Get-Alias 命令以后,这个问题将迎刃而解:

PS D:\> get-alias dir, echo, type

CommandType     Name                                               Version
-----------     ----                                               -------
Alias           dir -> Get-ChildItem
Alias           echo -> Write-Output
Alias           type -> Get-Content

上述示例展示了:

  • dir 实际上是 PowerShell 的 Get-ChildItem 命令的一个别名。
  • cd 是 Set-Location 的别名。

这也揭示了 PowerShell 和 cmd.exe 的关系。

测试记录 (2016-09-03)

w+r, cmd

Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Users\User0>d:

D:\>powershell
Windows PowerShell
版权所有 (C) 2015 Microsoft Corporation。保留所有权利。

PS D:\> dir


    目录: D:\


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         2016/9/3      7:40                Backup
d-----         2016/1/3     23:55                Document
d-----         2016/9/2     23:49                Downloads
d-----        2015/10/3     11:29                Driver
...


PS D:\> dir | select name, LastWriteTime

Name                             LastWriteTime
----                             -------------
Backup                           2016/9/3 7:40:05
Document                         2016/1/3 23:55:31
Downloads                        2016/9/2 23:49:57
Driver                           2015/10/3 11:29:12
...


PS D:\> notepad
PS D:\> start notepad
PS D:\>
PS D:\> $a = "Hello World"
PS D:\> $a
Hello World
PS D:\>
PS D:\> function SayHello($name){
>>> echo "Hello $name"
>>> }
PS D:\> SayHello "World"
Hello World
PS D:\>
PS D:\> cmd
Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

D:\>
D:\>PowerShell
PS D:\> exit

D:\>

使用 powershell 安装 IIS

Source: ECS Windows Server 2012 使用 powershell 安装 IIS.

  • get-windowsfeature web*: 查看已经安装过的 IIS 功能。IIS 的安装包全部以 web 开头,安装过的项目前面会有 [X]
  • install-windowsfeature web-server: 安装 Web-Server,即 IIS。
  • install-windowsfeature web-asp,web-asp-net,web-asp-net45: 安装 asp .NET3.5 .NET4.5
  • install-windowsfeature web-mgmt-console: 安装管理控制台。
  • install-windowsfeature Web-IP-Security