PowerShell 入门1

更多请看(www.omob.cc
本文参考自Powershell快速入门(一) 安装和使用

引言

谈到服务器系统Linux是无可争议的绝对霸主,虽然90s前后Windows Server和UNIX也曾经共同统治了小型机和大型机的服务器系统,不过后来由于各种原因逐渐份额被Linux蚕食,Windows退守桌面系统市场,UNIX蜗居少数高端大型机市场比如IBM的Power服务器。Linux在服务端的成功,除了其本身开源免费系统资源占用低稳定性好灵活可裁剪外,其中Linux的Shell为它带来的高效管理特性也立下了汗马功劳。一谈到Shell,我们就想到各种Linux发行版中内置的种类繁多但简单好用的Shell,比如bash,csh等。绝大多数程序员第一次了解shell的应该都是Linux下的bash。其实Windows/Windows Server下也可以使用功能强大的Shell来编写程序,这就是Powershell。从名字就可以看出来,Powershell的功能很强大,所以微软才敢叫Powershell,在Windows各个版本中,微软意图用PowerShell取代CMD,可以这样认为,PowerShell是CMD的超集,吸收了Linux Shell的优点,是Windows Server高效运行相关技术的重要一环。

需要说明一点,Powershell是构建在.NET平台上的,所有命令传递的都是.NET对象。不过我们简单使用的话,不懂.Net关系并不大。

开始使用

我电脑安装的是Windows 10早已经内置了当下最新的Powershell 5.0 ,它在 Windows Server 2016 也是是默认安装的。至于出现时间较早的windows/windows server其他版本,也是有PowerShell的,一般条件下也可以使用。

查看当前Powershell版本的话,很简单

PS D:\workspace\langs> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.17134.165
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17134.165
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

基本命令

与Linux Shell不同,Powershell的命令基本上都是动词-名词形式的。这样做的好处是命令作用简单直观很容易就可以看出,缺点就是输入稍微有些麻烦,习惯了Linux的简洁的同学会不太适应比较长的命令。Powershell和Linux Shell还有一个不同点在于Powershell是基于.NET平台的,它的命令叫做cmdlet。cmdlet功能比普通的Linux命令更强,因为cmdlet接受的参数不是字符串,而是 .NET对象,这使得Powershell 的功能更加强大和灵活。

获取命令提示

如果想要获取当前会话中所有可用的内置命令,可以使用命令Get-Command,它的别名是gcm

获取所有内置命令

PS D:\workspace\langs> Get-Command

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Add-ProvisionedAppxPackage                         3.0        Dism
Alias           Add-ProvisioningPackage                            3.0        Provisioning
......

如果希望找出指定名称的命令,可以使用Name参数。

PS D:\workspace\langs> Get-Command -Name Get-Command

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-Command                                        3.0.0.0    Microsoft.P...

获取别名

Window PowerShell为了照顾Linux系统用户或者简化命令长度,对常用的命令进行了别名,通过别名可以直接运行相关命令Get-Command -CommandType Alias

PS D:\workspace\langs> Get-Command -CommandType Alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           Add-ProvisionedAppxPackage                         3.0        Dism
Alias           Add-ProvisioningPackage                            3.0        Provisioning
.......

例如 ls代指Get-ChildItem,其实ls是linux shell里面的命令,这里Get-ChildItem被别名为ls

PS D:\workspace\langs> ls


    目录: D:\workspace\langs


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2018/7/14     11:27                c
d-----        2018/7/18     21:28                javascript
d-----        2018/7/14     11:27                nodejs
d-----        2018/7/18     21:28                scala
-a----        2018/7/14     11:26              7 README.md


PS D:\workspace\langs> Get-ChildItem


    目录: D:\workspace\langs


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2018/7/14     11:27                c
d-----        2018/7/18     21:28                javascript
d-----        2018/7/14     11:27                nodejs
d-----        2018/7/18     21:28                scala
-a----        2018/7/14     11:26              7 README.md

获取动词/名词

如果想查找特定动词/名词的命令也是可以的。比方说,如果我想查找所有以Get开头的命令,可以使用下面的命令Get-Command -Verb Get

PS D:\workspace\langs> Get-Command -Verb Get

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Get-DiskSNV                                        2.0.0.0    Storage
Alias           Get-PhysicalDiskSNV                                2.0.0.0    Storage

获取帮助

如果要获取一个命令的帮助,可以使用Get-Help。如果使用上面介绍的列出别名的命令的话,会发现这个命令的别名是man,恰好就是Linux系统下的获取帮助的命令。

PS D:\workspace\langs> man cls

名称
    Clear-Host

摘要


语法
    Clear-Host [<CommonParameters>]


说明


相关链接
    https://go.microsoft.com/fwlink/?LinkID=225747

备注
    若要查看示例,请键入: "get-help Clear-Host -examples".
    有关详细信息,请键入: "get-help Clear-Host -detailed".
    若要获取技术信息,请键入: "get-help Clear-Host -full".
    有关在线帮助,请键入: "get-help Clear-Host -online"

值得一提的还有帮助参数-?、如果一个命令添加了帮助参数,那么Powershell 不会实际执行这个命令,而是显示它的帮助信息。

PS D:\workspace\langs> cls -?

名称
    Clear-Host

摘要


语法
    Clear-Host [<CommonParameters>]


说明


相关链接
    https://go.microsoft.com/fwlink/?LinkID=225747

备注
    若要查看示例,请键入: "get-help Clear-Host -examples".
    有关详细信息,请键入: "get-help Clear-Host -detailed".
    若要获取技术信息,请键入: "get-help Clear-Host -full".
    有关在线帮助,请键入: "get-help Clear-Host -online"

服务管理

如果我们使用批处理来管理Windows服务的话,一般情况下用的是sc这个命令。这个命令的作用有很多,其中一项就是启动和停止Windows服务。不过在PowerShell下有更好用的服务管理命令,功能也更加强大。

Get-Command -Noun service查找有关Service管理相关的命令

PS D:\workspace\langs> Get-Command -Noun service

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-Service                                        3.1.0.0    Microsoft.P...
Cmdlet          New-Service                                        3.1.0.0    Microsoft.P...
Cmdlet          Restart-Service                                    3.1.0.0    Microsoft.P...
Cmdlet          Resume-Service                                     3.1.0.0    Microsoft.P...
Cmdlet          Set-Service                                        3.1.0.0    Microsoft.P...
Cmdlet          Start-Service                                      3.1.0.0    Microsoft.P...
Cmdlet          Stop-Service                                       3.1.0.0    Microsoft.P...
Cmdlet          Suspend-Service                                    3.1.0.0    Microsoft.P...

查看Windows 10的XboxGipSvc服务信息

PS D:\workspace\langs> Get-Service XboxGipSvc

Status   Name               DisplayName
------   ----               -----------
Stopped  XboxGipSvc         Xbox Accessory Management Service

猜你喜欢

转载自blog.csdn.net/thinktik/article/details/81109551