千家信息网

Windows PowerShell 学习---第一章 PowerShell介绍

发表于:2026-10-30 作者:千家信息网编辑
千家信息网最后更新 2026年10月30日,第1章 PowerShell介绍1.1、什么是PowerShell2006年,微软发布一款叫做Windows PowerShell的全新脚本语言。PowerShell与命令提示符shell一样,Pow
千家信息网最后更新 2026年10月30日Windows PowerShell 学习---第一章 PowerShell介绍

第1章 PowerShell介绍

1.1、什么是PowerShell

2006年,微软发布一款叫做Windows PowerShell的全新脚本语言。

PowerShell与命令提示符shell一样,PowerShell可以进行交互性地输入命令。也可以很容易的使用管道和重定向将文件和程序串联起来。

不过,PowerShell确是一个强大的面向对象的语言,可以用于复杂的脚本编程。

1.2、面向对象的命令shell

关于cmd

如果在命令提示符下输入dir,dir命令将会在屏幕打印出目录中的文件名、大小和时间戳等信息。可以使用>重定向操作符将这些文本导入到一个文件中,或者使用|操作符将文本管道连接到另一个程序。例如:

dir /s /b| sort

上述命令列出了当前目录及其子目录中的文件,作为一个文本流,并且这些文本发送给了sort程序,sort按照字母顺序对它们排序。

PowerShell和对象

PowerShell命令似乎以同样的方式工作,但是它的命令行处理的是对象而不是文本。这个对象就是像Java中面向对象的那个对象。这些对象表示文件、文件夹、Windows设备驱动、网络服务的对象,以及记录了.NET框架库中定义的数百个对象中的任何之一的对象。

通过管道符号从一条命令流向下一条命令,是对象流。各种PowerShell命令可以生成、操作这些对象,调用这些对象上的方法,修改这些对象的属性,以及从这些对象提取信息。

关于cmdlet

Cmdlet读作command-let。

PowerShell内建命令起名叫做cmdlet。之所以起个这么奇怪的名字可能是因为,它们不像cmd.exe的命令那样完全内建到PowerShell中,也并不是真的像.exe文件一样完全独立于PowerShell。它们以一种新的方式实现,因此需要一个新的单词。

Cmdlet的一些简单说明

  • Cmdlet名称不区分大小写。

  • 微软程序员选择使用一个名词-动词的惯例来命名cmdlet。

这样使得该名称更清晰的说明cmdlet实际做什么。

  • Cmdlet命令行选项的名称也一样的长。

  • 一些命令可以缩短到更短。

例如使用new-alias命令可以为cmdlet起一个短名别名。

dir命令在PowerShell中输入后发生了什么

PowerShell dir命令实际上是Get-ChildItemcmdlet的一个别名。可以输入这两个名字中的任何一个,来得到同样的结果。

不带其他参数的时候,Get-ChildItem针对当前目录中的所有文件和子目录,列出File和Folder对象。如果输入了命令dir而不带参数,Get-ChildItem会显示出File和Folder对象的一个列表,别切由于没有管道或输出重定向,结果会出现在Windows PowerShell命令窗口中。

当对象进入到PowerShell窗口的时候,PowerShell会针对每个对象打印一行,以漂亮的表格格式,列出每个对象最重要的属性。例如:

PSE:\py> dir

目录: E:\py

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2015/11/18 18:28 30 a.txt

-a--- 2015/8/6 18:09 1510 t1.py

-a--- 2015/9/13 13:15 320 t2.py

-a--- 2015/9/13 12:57 37 t2.txt

-a--- 2015/11/19 14:40 224 t3.py

PSE:\py>

在各栏顶部的标题,是要显示的属性的名称。这个列表对于cmdlet产生的任何其他对象类型来说都是类似的。

常规命令提示符环境中的dir命令生成固定格式的文本。PowerShell中的dir cmdlet,生成File和Folder对象的一个列表,PowerShell事后将其格式化为一个文本列表。

可以使用>符号,将一个PowerShell cmdlet的输出重定向到一个文件;并且会发生相同的事情:对象流格式化为一个漂亮的文本列表。

PowerShell的创新在于,当使用管道之后所发生的事情。PowerShell允许你将一个对象流从一个cmdlet导向到另一个cmdlet,并且可以修改这些对象的属性并调用对象上的方法,就好像对象真的传递过来一样。只有当对象最终触及屏幕的时候文本才会出现。一个cmdlet可以产生表示文件、计算机、服务和网络对象等对象的一个列表;管道中的一下一个cmdlet可以进行过滤并只是传递它感兴趣的那些对象;下一个cmdlet可能调用方法在对象上执行操作。这真的是PowerShell的独特功能。

例如删除特定目录下文件

PSD:\ps> dir

目录: D:\ps

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2017/9/9 17:00 0 1 - 副本 (2).txt

-a--- 2017/9/9 17:00 0 1 - 副本 (3).txt

-a--- 2017/9/9 17:00 0 1 - 副本 (4).txt

-a--- 2017/9/9 17:00 0 1 - 副本.txt

-a--- 2017/9/9 17:00 0 1.txt

PSD:\ps> dir|Remove-Item

PSD:\ps> dir

PSD:\ps>

Dir生成了表示目录d:\ps的内容的File和Folder对象的一个列表,并且将其传递给了remove-item命令,remove-item删除了传递给它的任何对象背后的"真实内容"。

或者可以使用下面的命令。

(dir d:\ps).delete()

它会生成同样的file和folder对象的流,并且在每个对象上调用delete方法。结果是相同的:文件都删除掉了。

还可以这样:

Remove-itemd:\ps\*.*

这将会是最为直接的命令,但是这样就没展示出PowerShell和常规命令提示符的区别。

下面是另一个示例,展示了一个管道命令是如何工作的。

PSD:\ps> dir

目录: D:\ps

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2017/9/9 17:12 0 1.txt

-a--- 2017/9/9 17:12 0 2.txt

PSD:\ps> dir|Where-Object {$_.name -eq "1.txt"}

目录: D:\ps

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2017/9/9 17:12 0 1.txt

PSD:\ps> dir|Where-Object {$_.name -eq "1.txt"}|remove-it

PSD:\ps> dir

目录: D:\ps

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2017/9/9 17:12 0 2.txt

PSD:\ps>

Dir针对当前目录中的每一个文件生成了一个对象,where-Object用于过滤,过滤出文件名为1.txt的对象,并且用remove-item删除了这个文件。

1.3、基于.NET Framework

.NET Framework是微软对sun的Java编程语言的应对之策。这里包含了一个强大的类库,可以能够使用图形化用户接口、数据库访问、网络通信、web交互、加密、数值计算等功能。

.NET Framework的所有功能在PowerShell命令行和脚本中都是可用的。

.NET Framework class library在线地址

https://msdn.microsoft.com/zh-cn/library/w0x726c2(v=vs.110).aspx

1.4、一个可扩展的环境

PowerShell可以运行3种程序:内建命令、外部程序和脚本。

这类似于常规命令提示符环境,在命令提示符中,你可以使用由cmd程序自身处理的内建命令,可以运行外部程序,或者创建批处理文件,批处理文件是组合各种类型的命令来分布执行一个较为复杂的任务。

在PowerShell中,内建命令是cmdlet。然而,和命令提示符shell不同,这些内建的命令没有固化到PowerShell程序中,而是通过一个插件方法、作为在硬盘上存储的一个或多个.DLL文件来添加到PowerShell程序中。

因此,定制的cmdlet可以添加到该环境。思路是:Microsoft和第三方可以为他们的应用程序和服务器添加安装管理cmdlet,以便可以由PowerShell脚本管理它们。例如,Microsoft SQL Sever、Exchange和VMWare服务器拥有定制的cmdlet插件、

1.5、PowerShell环境

开始à所有程序à附件àWindows PowerShell

  • Windows PowerShell 交互式命令环境

  • Windows PowerShell ISE 这是一个GUI编辑\调试工具,可以用来开发PowerShell脚本。


1.6、PowerShell版本

Win 7和Windows server 2008R2默认安装的是v2.0版本

1.7、获取帮助

首先要学习的最重要的PowerShell命令,帮助了解其他命令的一个命令:get-help。

Get-help有一个别名help。因此可以互换地使用这些命令名的任何一个。PowerShell有很多内建的帮助。

一些技巧如下:

  • 输入单词help来来获取在线帮助系统的一个快速介绍

PSE:\py> help

主题

Get-Help

简短说明

显示有关 Windows PowerShell cmdlet 和概念的帮助。

详细说明

语法

get-help { |}

help { |}

-?

"Get-help"和"-?"以单页形式显示帮助。

"Help"以多页形式显示帮助。

示例:

get-help get-process :显示有关 Get-Process cmdlet 的帮助。

get-help about_signing :显示有关签名脚本的帮助。

help where-object :显示有关 Where-Object cmdlet 的帮助。

help about_foreach :显示有关 PowerShell 中 foreach 循环的帮助。

set-service -? :显示有关 Set-Service cmdlet 的帮助。

可以在帮助命令中使用通配符(不使用 -?)。

如果有多个匹配的帮助主题,PowerShell 将显示匹配主题列表。

如果只有一个匹配的帮助主题,PowerShell 将显示该主题。

示例:

get-help * :显示所有帮助主题。

get-help get-* :显示以 get- 开头的主题。

help *object* :显示名称中包含"object"的主题。

get-help about* :显示所有概念性主题。

有关通配符的信息,请键入:

get-help about_wildcard

备注

若要了解 Windows PowerShell 的有关信息,请阅读以下帮助主题:

get-command :从 cmdlet 代码中获取有关 cmdlet 的信息。

get-member :获取对象的属性和方法。

where-object :筛选对象属性。

about_object :介绍 Windows PowerShell 中对象的用法。

about_remote :说明如何在远程计算机上运行命令。

概念性帮助文件以"about_<主题>"的形式命名,例如:about_regular_expression。

概念性帮助文件的名称必须用英文输入,即使在非英文版 Windows PowerShell 中也是如此。

帮助命令还可显示 cmdlet 的别名。这些别名是更容易键入的代用名或略称。

例如,Invoke-Command cmdlet 的别名是"remote"。

若要获得别名,请键入:

get-alias

PSE:\py>

  • 在help或get-help后面,你可以输入一个单词、cmdlet名称或部分cmdlet名称。

也可以输入用引号括起来的一个短语。

如果有多个主题、多个cmdlet名称或多个索命与输入的内容匹配,get-help会打印出所有匹配的帮助条目的一个列表。然后可以输入help,后面跟着你想要详细了解的特定条目的名称。

PSC:\Users\Administrator> Get-Help new

Name Category Synopsis

---- -------- --------

New-WSManInstance Cmdlet 创建管理资源的新实例。

New-WSManSessionOption Cmdlet 创建 WS-Management 会话选项哈希表以用作以下 WS-Management cmdlet 的输入参数:...

New-PSSession Cmdlet 建立与本地或远程计算机的持续性连接。

New-PSSessionOption Cmdlet 创建包含 PSSession 高级选项的对象。

New-Module Cmdlet 创建一个仅存在于内存中的新动态模块。

New-ModuleManifest Cmdlet 创建一个新的模块清单。

New-Event Cmdlet 创建新事件。

New-Alias Cmdlet 创建新别名。

New-TimeSpan Cmdlet 创建 TimeSpan 对象。

New-Object Cmdlet 创建 Microsoft .NET Framework 或 COM 对象的实例。

New-Variable Cmdlet 创建新变量

New-EventLog Cmdlet 在本地或远程计算机上创建新事件日志和新事件源。

New-PSDrive Cmdlet 在当前会话中创建 Windows PowerShell 驱动器。

New-Item Cmdlet 创建新项。

New-ItemProperty Cmdlet 为项创建新属性并设置该属性的值。例如,可以使用 New-ItemProperty 创建和更改注册表值和数据,它们是注册表项的属性。

New-Service Cmdlet 创建新的 Windows 服务。

New-WebServiceProxy Cmdlet 创建一个 Web 服务代理对象,用于在 Windows PowerShell 中使用和管理 Web 服务。

如果确实有一个名称或说明包含了输入的单词或短语,get-help能够打印出该主题的帮助信息。

PSC:\Users\Administrator> Get-Help new-ite

Name Category Synopsis

---- -------- --------

New-Item Cmdlet 创建新项。

New-ItemProperty Cmdlet 为项创建新属性并设置该属性的值。例如,可以使用 New-ItemProperty 创建和更改注册表值和数据,它们是注册表项的属性。

____________________________________________________________________________________________________________________________________________________________________________________________________________________

PSC:\Users\Administrator> Get-Help new-item

名称

New-Item

摘要

创建新项。

语法

New-Item [-Path] [-Credential ] [-Force] [-ItemType ] [-Value] [-Confirm] [-WhatIf] [-UseTransaction][]

New-Item -Name [[-Path]] [-Credential ] [-Force] [-ItemType] [-Value ] [-Confirm] [-WhatIf] [-UseTransaction][]

说明

New-Item cmdlet 创建新项并设置该项的值。可创建项的类型取决于该项所在位置。例如,在文件系统中,New-Item 用于创建文件和文件夹。在注册表中,New-Item 用于创建注册表项和注册表条目。

此外,New-Item 还可设置它所创建的项的值。例如,创建新文件时,New-Item 可向该文件添加初始内容。

相关链接

Online version:http://go.microsoft.com/fwlink/?LinkID=113353

about_Providers

Get-Item

Set-Item

Remove-Item

Clear-Item

Invoke-Item

Rename-Item

Move-Item

Copy-Item

备注

若要查看示例,请键入: "get-help New-Item -examples".

有关详细信息,请键入: "get-help New-Item -detailed".

若要获取技术信息,请键入: "get-help New-Item -full".

  • 一些cmdlet有额外帮助信息可以使用。

例如你可以通过输入help new-alias -examples看到使用new-alias cmdlet的一些示例。

额外信息的常用选项是-examples、-detailed、-full。

  • 帮助文本出现在控制台窗口中,并且默认地通过more来管道连接的,以便在每一屏只有都会暂停。按下回车键继续下一页面。

此外,可以比较容易的将帮助信息输出到一个文件中,>x;然后输入notepad x来读取该文本。

  • 有一些帮助条目覆盖了安装的cmdlets中的每一个,还有一些关于不同主题的额外文章。

这些文章以about_开头,例如,help about_execution_policies会打印出关于脚本安全限制系统的信息。

要查看所有这些about条目的一个列表输入help about。

要根据cmdlet所做的工作的说明中的单词来找到cmdlet,以及当你已经找到感兴趣的一个cmdlet后要了解其命令行语法的话,在线帮助系统很好用。

在线帮助语法说明

  • []方括号表示可选的命令参数

  • {}花括号通常表示可以从中选择一系列选项,选项之间带有一个垂直线|。

  • <>尖括号括起来的值是必须自己提供的。

例如[-Description ]表示一个可选的参数。可以忽略它,或者,输入类似-description "some text"的内容。也可以将其省略为-descr "sometext"。

1.8、别名

(1)、获取别名列表

通过输入alias来看到所有内建别名的一个列表。Alias也是get-alias的别名

PSC:\Users\Administrator> alias

CommandType Name Definition

----------- ---- ----------

Alias % ForEach-Object

Alias ? Where-Object

Alias ac Add-Content

Alias asnp Add-PSSnapIn

Alias cat Get-Content

Alias cd Set-Location

Alias chdir Set-Location

Alias clc Clear-Content

Alias clear Clear-Host

Alias clhy Clear-History

Alias cli Clear-Item

Alias clp Clear-ItemProperty

Alias cls Clear-Host

Alias clv Clear-Variable

Alias compare Compare-Object

Alias copy Copy-Item

Alias cp Copy-Item

Alias cpi Copy-Item

Alias cpp Copy-ItemProperty

Alias cvpa Convert-Path

Alias dbp Disable-PSBreakpoint

Alias del Remove-Item

Alias diff Compare-Object

Alias dir Get-ChildItem

Alias ebp Enable-PSBreakpoint

Alias echo Write-Output

Alias epal Export-Alias

Alias epcsv Export-Csv

Alias epsn Export-PSSession

Alias erase Remove-Item

Alias etsn Enter-PSSession

Alias exsn Exit-PSSession

Alias fc Format-Custom

Alias fl Format-List

Alias foreach ForEach-Object

Alias ft Format-Table

Alias fw Format-Wide

Alias gal Get-Alias

Alias gbp Get-PSBreakpoint

Alias gc Get-Content

Alias gci Get-ChildItem

Alias gcm Get-Command

Alias gcs Get-PSCallStack

Alias gdr Get-PSDrive

Alias ghy Get-History

Alias gi Get-Item

Alias gjb Get-Job

Alias gl Get-Location

Alias gm Get-Member

Alias gmo Get-Module

Alias gp Get-ItemProperty

Alias gps Get-Process

Alias group Group-Object

Alias gsn Get-PSSession

Alias gsnp Get-PSSnapIn

Alias gsv Get-Service

Alias gu Get-Unique

Alias gv Get-Variable

Alias gwmi Get-WmiObject

Alias h Get-History

Alias history Get-History

Alias icm Invoke-Command

Alias iex Invoke-Expression

Alias ihy Invoke-History

Alias ii Invoke-Item

Alias ipal Import-Alias

Alias ipcsv Import-Csv

Alias ipmo Import-Module

Alias ipsn Import-PSSession

Alias ise PowerShell_ise.exe

Alias iwmi Invoke-WMIMethod

Alias kill Stop-Process

Alias lp Out-Printer

Alias ls Get-ChildItem

Alias man help

Alias md mkdir

Alias measure Measure-Object

Alias mi Move-Item

Alias mount New-PSDrive

Alias move Move-Item

Alias mp Move-ItemProperty

Alias mv Move-Item

Alias nal New-Alias

Alias ndr New-PSDrive

Alias ni New-Item

Alias nmo New-Module

Alias nsn New-PSSession

Alias nv New-Variable

Alias ogv Out-GridView

Alias oh Out-Host

Alias popd Pop-Location

Alias ps Get-Process

Alias pushd Push-Location

Alias pwd Get-Location

Alias r Invoke-History

Alias rbp Remove-PSBreakpoint

Alias rcjb Receive-Job

Alias rd Remove-Item

Alias rdr Remove-PSDrive

Alias ren Rename-Item

Alias ri Remove-Item

Alias rjb Remove-Job

Alias rm Remove-Item

Alias rmdir Remove-Item

Alias rmo Remove-Module

Alias rni Rename-Item

Alias rnp Rename-ItemProperty

Alias rp Remove-ItemProperty

Alias rsn Remove-PSSession

Alias rsnp Remove-PSSnapin

Alias rv Remove-Variable

Alias rvpa Resolve-Path

Alias rwmi Remove-WMIObject

Alias sajb Start-Job

Alias sal Set-Alias

Alias saps Start-Process

Alias sasv Start-Service

Alias sbp Set-PSBreakpoint

Alias sc Set-Content

Alias select Select-Object

Alias set Set-Variable

Alias si Set-Item

Alias sl Set-Location

Alias sleep Start-Sleep

Alias sort Sort-Object

Alias sp Set-ItemProperty

Alias spjb Stop-Job

Alias spps Stop-Process

Alias spsv Stop-Service

Alias start Start-Process

Alias sv Set-Variable

Alias swmi Set-WMIInstance

Alias tee Tee-Object

Alias type Get-Content

Alias where Where-Object

Alias wjb Wait-Job

Alias write Write-Output

(2)、定义别名

可以输入下面的命令来定义一个新的别名:

New-alias -nameshortname -value realcommandname -description "Brief description"

当关闭PowerShell窗口的时候,别名定义不再继续存在。下一次运行PowerShell的时候,定制的别名将不复存在了。

如果想要保存别名,可以通过配置文件的形式实现。

1.9、PowerShell配置文件

可以通过添加定制的别名、把目录添加到路径-环境变量,来定制符合自己偏好的PowerShell环境。因此每次启动PowerShell的时候,如果必须重新输入这些命令,简直是一种痛苦。个脚本

PowerShell的配置文件是每次启动一个新的实例的时候,PowerShell所运行的命令的一个脚本。

事实上,无论何时,以何种形式启动PowerShell,它都会在如下两个位置查找配置文件脚本:

  • C:\Windows\system32\WindowsPowerShell\v1.0\

  • C:\Users\username\Documents\WindowsPowerShell\

先查找一个名叫profile.ps1的脚本,如果找到就运行它。

命令行PowerShell随后查找一个名叫Microsoft.PowerShell_profile.ps1的配置文件脚本,如果找到就执行它。

GUI PowerShell ISE程序首先查找profile.ps1,然后查找Microsoft.PowerShellISE_profile.ps1。


命令 对象 文件 帮助 输入 别名 主题 程序 脚本 信息 名称 属性 目录 文本 有关 环境 管道 提示符 时候 注册表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 科技股互联网 狮子座互联网科技有限公司 汇久创客互联网科技 赫美联合互联网科技 上海亿帐通互联网科技 剑昆互联网络科技有限公司临桂 金融科技与互联网金融相同和不同 互联网科技与管理 互联网金融中的现代科技 朱啸虎曾投资哪些互联网科技企业 济南有互联网科技公司吗 上海京穆互联网科技有限公司 山东子淼互联网科技有限公司 风投北京互联网科技 广州智享互联网科技 互联网金融金融科技 宁波允成互联网科技有限公司 互联网科技创业有什么好项目 恒生科技互联网指数十大成分股 互联网黑科技 互联网科技公司税收优惠 互联网科技卖菜 广州善班互联网科技 丰台科技园 互联网公司 济南和联互联网科技有限公司 互联网科技博主是什么意思 全球顶尖互联网科技公司 注册互联网科技公司经营范围大全 全球科技与互联网公司市值变化
0