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
推荐阅读
-
如何在不到12天的时间里将网站权重优化到1(纯白帽SEO方法)
-
asp.net Web Services上传和下载文件(完整代码)第1/2页
-
.NET开发人员关于ML.NET的入门学习
-
Visual Studio Debug实战教程之基础入门
-
java 学习笔记(入门篇)_多选择结构switch语句
-
java 学习笔记(入门篇)_java的基础语法
-
介绍Jersey-Jersey入门基础
-
ASP.NET MVC5网站开发之登录、验证和注销管理员篇1(六)
-
ASP.NET MVC5网站开发之用户角色的后台管理1(七)
-
PHP XML error parsing SOAP payload on line 1