Windows PowerShell1-基础知识

本文围绕Windows系统中的PowerShell展开,介绍了其安装、更新方法,详细讲解了帮助系统的使用,包括更新、查看、查找命令等。还阐述了运行命令、使用提供程序、管道操作、对象处理、格式化、过滤比较及变量使用等方面的知识,为进一步深入学习做铺垫。

介绍

PowerShell作为Windows系统中的默认脚本,其实在开发中,我们用的很少。接下来的几篇文章都将PowerShell的相关知识,本章介绍PowerShell基本的知识。

安装及简介

Windows Server 2008Windows Server 2008 R2Windows7操作系统开始,我们已经可以使用第三版本的Windows PowerShell。而Windows 10默认安装的版本已经到了5.1。具体可以通过在PowerShell中输入$PSVersionTable命令查看。

在这里插入图片描述

而如果要更新到最新的版本,可以访问此地址进行更新。

Windows 10上安装后,我们可以看到PowerShell的控制台程序和集成脚本环境(ISE)。如上图所示的,打开控制台程序,我们可以直接输入命令后回车,即可看到相应的运行结果。但是ISE界面更加的友好,后面可以看到使用此ISE编辑命令和脚本可以提供更多的帮助,复制和黏贴等也更加的方便。但是ISE相对的启动时间会较长,而通常也就几秒的差异。

在这里插入图片描述

如图,默认打开及分为三部分,分别是脚本编辑区域、命令管理器和控制台。在脚本编辑区域编辑的脚本命令不会马上执行,需要点击菜单栏上的运行按钮才会在控制台看到运行结果。

当然也可以通过点击【工具】->【选项】来配置窗口的相关属性,如字体大小、颜色等。同样PowerShell控制台也可以进行相应的设置。这些相对简单,可以自行根据自己的喜好进行调整,这里就不过多的介绍了。

使用帮助系统

Command 对比 Cmdlet
PowerShell包含了多种类型的可执行命令,有些叫Cmdlet,有些叫函数,还有一些被称为工作流等。他们的共同点都是命令,所有这些命令都在帮助系统囊括的范围内。Cmdlet的概念是Powershell中独有的,你可运行的大多数命令都属于Cmdlet。但在谈论更通用的可执行工具时,我们使用“命令”来表示,从而保证一致性。

更新帮助

在使用帮助系统之前,最好是更新到最新的版本,可以通过Update-Help命令进行更新(最好是通过管理员身份运行)。

微软的PowerShell帮助文件已经在https://github.com/powershell开源。该网址是查看最新源码的好地方,该部分帮助可能在PowerShell中无法下载。

查看帮助

更新好后我们可以输入下面命令观察一下。

在这里插入图片描述

如上,WindowsPowerShell提供了Get-Help这个Cmdlet命令访问帮助系统。你可以看到很多示例都是使用“Help”或者“Man”(来自UNIX,指代Manual)关键字来代替Get-HelpHelpMan都不是原始的Cmdlet命令,而是对核心Cmdlet命令封装后的函数。

Help的工作原理类似Get-Help,但是它可以把输出的信息通过管道传递给More命令。(ManHelp的别名或者昵称,因此也可使用More命令)所有我们可以使用Help Get-Content命令,也可以更友好的使用Help Get-Content | More命令。

使用帮助系统查找命令

和大多数命令一样,Get-Help命令有几个参数。其中最重要的是-Name。该参数指定你想要访问帮助的主题名称,并且它是一个位置参数,所以你无需输入-Name,只需要提供要查找的命令名称。它也支持通配符(*),这让帮助系统更容易查找命令。

如你想查看操作系统日志,但不知道命令,可通过下面的方式进行搜索

Help *log*
Help *event*

在这里插入图片描述

另外一种,你大概知道命令的一部分,那可以输入“Help Get-Eve”然后通过Tab键进行自动补全,如果不是你需要的,可以继续按Tab键,帮助系统会循环查找以“Get-Eve”开头的所有命令。

帮助详解

参数集和通用参数

在这里插入图片描述

如上红框中标识的就是参数集,这表示,此Get-EventLog命令有两个参数集,你可能已经注意到,有些参数是这两个参数集共有的,它们是通用参数。

可选和必选参数

PowerShell的帮助稳定把可选参数放到一个方括号中。如,[-ComputerName <System.String[]>]表示-ComputerName是可选参数。几乎所有的Cmdlet命令都最少有一个可选参数。

对于必须的参数,如果没有输入值的情况下,如下所示。控制台会提示你继续输入必须的参数后才会继续运行。

在这里插入图片描述

位置参数

PowerShell设计者知道有些参数会被频繁的使用,而你不希望不断的输入参数名称。通常来说,参数是具有位置的。着意味着只要你把参数值放在正确的位置,你就可以值提供这个参数值,而不需要输入具体的参数名称。

下面介绍使用位置参数时的几个技巧。

  • 位置参数可以同时出现指定和不指定参数名称的情况,但是位置参数必须处在正确的位置。如:Get-EventLog -newest 20 -Log Application 是正确的。Application会被匹配到-Log参数,因为这是第一个位置的参数值

  • 指定参数名称总是合法的

  • 如果使用多个位置参数,不要忘了它们的位置

我们的建议是:总是使用参数名称

使用Help Get-EventLog -Full命令可以查看具体的参数说明,通用可以把-Full改为-ShowWindow,其会提供一个窗口来显示详细的说明详细。

参数值

帮助文档通用给你提供了每个参数的数据类型。有些参数被称为开关参数,无需任何输入值。如:[-AsString]

-AsString [<SwitchParameter>]
    以字符串而非对象的形式返回输出。

    是否必须?          False
    位置?              False
    默认值
    是否接收管道输入?   False
    是否接收通配符?     False

通过[<SwitchParameter>]可以确定这是一个开关参数,并需要任何输入。开关参数位置可随便放置,但必须输入参数名(或缩写)并总是可选的。

其他参数希望获得的数据类型,通常会跟在参数名后面,并使用空格与参数名分开。在缩写语法中,用尖括号表明。如[-LogName] <string> 。除了string,还有IntInt32Int64Datetime等等。

另外,如[-ComputerName <string[]>]表示参数后可以跟多个值,即string后的方括号表示数组、集合。

Get-EventLog Security -ComputerName Server-R2
Get-EventLog Security -ComputerName Server-R2,DC4,Files02

再次说明,任何一个单一值中如果包含了空格,就必须使用引号。但是作为一个整体的列表,不需要使用银行,只有单一值才需要。以下内容合法。

Get-EventLog Security -ComputerName 'Server-R2','DC4','Files02'

另外一种提供列表值的方式是将其放入一个文本文件中,每个值一列。如下:

Server-R2
DC4
Files02

可以使用Get-Content命令来进行获取,具体如下:

Get-EventLog Security  -ComputerName (Get-Content names.txt)

发现命令示例及访问在线帮助

其实在使用-Full参数中是可以查看的,但是我们也可以使用-Example参数替换-Full参数,直接查看命令的示例。

Help Get-EventLog -Example

PowerShell的帮助文档是有人编写的,这意味着它们并不一定准确。除了使用Update-Help命令外,可以使用Help命令的-Online参数查看在线的实时帮助信息。

Help Get-EventLog -Online

运行命令

Cmdlet命名规则应该以标准的动词开始,比如GetSetNewPause。以可以运行Get-Verb查看运行使用的动词列表。对于有些命令,其命名非常的长,不方便记忆,所以我们可以使用命令的别名或者叫昵称。通过以下命令可以查看。

Get-Alias -Definition Get-Service

结果如下:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           gsv -> Get-Service

而使用Help gsv和使用Help Get-Service的效果是一样的。

另外,参数也可简化或者使用别名。如可以使用-comp代替-ComputerName,也可以输入-comp后按下Tab键来完成参数名称的补全。当然也可以通过以下命令获取参数的昵称或者别名。

(Get-Command Get-EventLog | select -ExpandProperty parameters).computername.aliases

由此命令可以知道-ComputerName的别名是-Cn

当然如ping等命令也可以使用PowerShell进行执行。但是对于一些第三方的程序,仅仅需要在外部命令名称后面加上两个破折号和一个百分号。比如我们想尝试使用命令行工具sc.exe查询一个服务,可以使用以下形式。

在这里插入图片描述

使用提供程序

一个PowerShell提供程序,或者说PSProvider,其本质上是一个适配器。它可以接收某些数据存储,并使得这些介质看起来像是磁盘驱动器一样。使用以下命令查看当前Shell总已经存在的提供程序。

在这里插入图片描述

以下是一些常见的功能描述。

  • Sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值