摘要:如果希望列出指定名称的命令,可以使用参数。则是前两者的别名,作用是简化输入。这个命令的作用有很多,其中一项就是启动和停止服务。微软自从出现之后就一直推动和的互操作。
一说起 Shell 编程,我们大家想到的应该都是Linux 下的 Shell 编程。其实 Windows 下也可以使用功能强大的 Shell 来编写程序,这就是今天我要介绍的 Powershell。从名字就可以看出来,Powershell的功能很强大,所以才敢叫Powershell。
如果需要看官方文档的话,点击这里。虽然有一些机翻的意味,但是完全可以看。
需要说明一点,Powershell是构建在.NET平台上的,所有命令传递的都是.NET对象。所以为了更好地使用Powershell,最好有一点.NET编程基础,这样学习Powershell就会感觉非常轻松和愉快。
安装Powershell这里我介绍的是 Powershell 5.0 ,它在 Windows Server 2016 和Windows 10 操作系统中是默认安装的。如果使用的是比较旧的操作系统例如 Windows 7 或者 Windows 8.1 ,就需要手动安装 Powershell 5.0 。下载也很简单,到这里下载 WMF 5.0,它包含了 Powershell 5.0 和一系列工具。
如果要查看当前Powershell版本的话,也很简单。在Powershell窗口中使用下面的命令即可查看相关信息。
C:Usersasddf> $PSVersionTable Name Value ---- ----- PSVersion 5.1.15063.296 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.15063.296 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1启动Powershell
启动 Powershell 很简单,从运行对话框或者开始菜单中搜索powershell即可。这样就可以打开 Powershell 命令行窗口了。默认情况下这是一个蓝色的窗口。
在64位操作系统下,有两个版本的 Powershell 。默认情况下,我们使用64位版本就可以了。如果有特殊需求的话,可以选择启动带x86字样的32位版本的 Powershell 。
启动Powershell ISE在终端中敲命令是一件很麻烦的事情,有没有什么集成环境可以让我们进行交互式学习呢?当然是有的,Windows 附带了一个交互式环境,叫做Powershell ISE,可以帮助我们更方便的学习和使用 Powershell。
启动 Powershell ISE也很简单,在Windows 10下,直接在开始菜单中输入 ISE,就可以打开Powershell ISE了。
命令介绍首先说明一下,和 Linux Shell 不同,Powershell 的命令基本上都是动词-名词形式的。这样做的好处是命令作用很容易就可以看出,缺点就是输入稍微有些麻烦,习惯了Linux 的简洁的同学可能会不太适应。
Powershell 和Linux Shell 还有一个不同点在于Powershell 是基于 .NET平台的,它的命令叫做cmdlet。cmdlet功能比普通的Linux 命令更强,因为cmdlet接受的参数不是字符串,而是 .NET 对象,这使得Powershell 的功能更加强大和灵活。
获取命令如果想要获取当前会话中所有可用的内置命令,可以使用命令Get-Command,它的别名是gcm。
PS C:Usersasddf> Get-Command CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-Command 3.0.0.0 Microsoft.PowerShell.Core .....
如果希望列出指定名称的命令,可以使用Name参数。
PS C:Usersasddf> Get-Command -Name Get-Command CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-Command 3.0.0.0 Microsoft.PowerShell.Core获取别名
有些命令比较常用,除了动词-名词版本外,Powershell还提供了和Linux 一样的别名来简化输入。我们可以使用-CommandType Alias参数来显示所有的命令别名。下面列举了一部分输出,可以看到,微软为了照顾Linux用户,很多命令都缩写为Linux 命令的形式。
PS C:Usersasddf> Get-Command -CommandType Alias CommandType Name Version Source ----------- ---- ------- ------ Alias % -> ForEach-Object Alias ? -> Where-Object Alias ac -> Add-Content Alias blsmba -> 2.0.0.0 SmbShare 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、cmdlet以及function三种类型。所以我在前面使用了“内置命令”这个词。函数基本上就是最简单的命令,例如清屏(Clear-Host),不能接受参数,功能比较基本。cmdlet则是功能强大的命令,可以接受各类参数,还能复合使用。Alias则是前两者的别名,作用是简化输入。
获取动词/名词当然,如果想查找特定动词/名词的命令也是可以的。比方说,如果我想查找所有以Get开头的命令,可以使用下面的命令。
PS C:Usersasddf> Get-Command -Verb Get
相应的,如果我想获取所有名词是Help的命令,可以使用下面的命令。
PS C:Usersasddf> Get-Command -Noun Help CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-Help 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Save-Help 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Update-Help 3.0.0.0 Microsoft.PowerShell.Core
上面的命令都只列出了内置命令。如果需要包含包括普通程序在内的所有命令,可以使用通配符。
PS C:Usersasddf> Get-Command *获取帮助
如果要获取一个命令的帮助,可以使用Get-Help。如果使用上面介绍的列出别名的命令的话,会发现这个命令的别名是man,恰好就是Linux 系统下的获取帮助的命令。当然它们的功能也很相似。
比方说,我们要查看一下清除屏幕这个命令的帮助,就可以简单的输入下面的命令。Powershell 会自动将别名解析为实际命令名称。所以我们可以看到,cls实际上是Clear-Host命令的别名。
PS C:Usersasddf> man cls 名称 Clear-Host 摘要 语法 Clear-Host [] 说明 相关链接 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"
其实从这个命令的帮助信息来看,我们就可以获得大部分信息。比方说,如果我们要查看这个命令的在线帮助,就可以如同上面的备注所说,在命令上添加-online参数,这样就会打开浏览器跳转到这个命令的在线帮助页上。
值得一提的还有帮助参数-?、如果一个命令添加了帮助参数,那么Powershell 不会实际执行这个命令,而是显示它的帮助信息。
服务管理原来,如果我们使用批处理来管理Windows服务的话,一般情况下用的是sc这个命令。这个命令的作用有很多,其中一项就是启动和停止Windows服务。不过在Powershell下有更好用的服务管理命令,功能也更加强大。
首先我们先查看一下有什么管理服务的命令,只需要查询一下名词是service的命令即可。可以看到这些命令涵盖了从创建服务到管理服务的各个方面,功能很丰富。
PS C:Usersasddf> Get-Command -Noun service CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Get-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet New-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Restart-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Resume-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Set-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Start-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Stop-Service 3.1.0.0 Microsoft.PowerShell.Management Cmdlet Suspend-Service 3.1.0.0 Microsoft.PowerShell.Management
比方说,我们要查询一下当前计算机安装了哪些和MySQL相关的服务,就可以用下面的命令。
PS C:Usersasddf> Get-Service mysql* Status Name DisplayName ------ ---- ----------- Running MySQL57 MySQL57
然后如果需要停止服务也很简单,需要注意停止服务的话需要管理员权限,因此Powershell需要在管理员模式下运行。
PS C:WINDOWSsystem32> Stop-Service MySQL57 警告: 正在等待服务“MySQL57 (MySQL57)”停止...
其他命令就不介绍了,配合帮助命令可以很快学习如何使用。
应用实例最后直接从网上找了个例子来看看Powershell的实际作用。我们可以从中了解到Powershell的强大特性,用它帮助我们方便地管理Windows操作系统。
Office互操作这里贴一个网络上的例子,我是从知乎上看到的。运行一下会直接打开Excel并填充数据,然后画出占用内存前十的程序的饼状图,一气呵成。我第一次运行的时候简直惊呆了。
# create new excel instance $objExcel = New-Object -comobject Excel.Application $objExcel.Visible = $True $objWorkbook = $objExcel.Workbooks.Add() $objWorksheet = $objWorkbook.Worksheets.Item(1) # write information to the excel file $i = 0 $first10 = (ps | sort ws -Descending | select -first 10) $first10 | foreach -Process {$i++; $objWorksheet.Cells.Item($i,1) = $_.name; $objWorksheet.Cells.Item($i,2) = $_.ws} $otherMem = (ps | measure ws -s).Sum - ($first10 | measure ws -s).Sum $objWorksheet.Cells.Item(11,1) = "Others"; $objWorksheet.Cells.Item(11,2) = $otherMem # draw the pie chart $objCharts = $objWorksheet.ChartObjects() $objChart = $objCharts.Add(0, 0, 500, 300) $objChart.Chart.SetSourceData($objWorksheet.range("A1:B11"), 2) $objChart.Chart.ChartType = 70 $objChart.Chart.ApplyDataLabels(5)
当然其实Powershell能做的事情非常多。微软自从Powershell出现之后就一直推动Windows和Powershell的互操作。到现在为止大概大部分Windows管理和配置功能都可以使用Powershell来进行。
一开始我也对Powershell不太了解。不过了解了一点之后,我感觉Powershell的功能确实对得起它的名字。我已经决定学习完Powershell之后,将来在所有可以使用Powershell的地方全部使用它,享受命令行管理系统的快感。
Powershell美化 oh-my-posh最后来说说Powershell美化,其实默认情况下的Powershell已经很好用了。默认那个蓝色窗口支持智能补全,可以满足大多数场合的需求。当然如果想要定制成oh-my-zsh那样的话也是可以的。
有一个项目叫做oh-my-posh,做的就是类似oh-my-zsh的工作的。不过这个项目还是有些缺点,不能像oh-my-zsh那样一条命令自动配置好所有东西。这个项目折腾起来还是稍稍费些事情的,需要做以下几件事情:
安装ConEmu终端程序
下载一套打过补丁的字体,例如Inziu Iosevka或者nerd-fonts
安装oh-my-posh的两个包
在ConEmu中启动Powershell,然后调用Set-Theme命令切换主题。
我尝试了一下,但是可能字体没安装全还是什么原因,没有达到官方这张图的效果。有兴趣的同学可以自行尝试折腾一下。
cmdercmder是一个基于ConEmu二次开发的终端模拟器,我试用了一下还不错。默认情况下的配色和界面就挺好看的了。有兴趣的同学可以试试。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/61126.html
摘要:而且在这一版本里,微软没有提供图形界面到的转换。之父,在加入微软之前是搞的。在发明了这后,直接就晋升为微软的并且主导了的架构设计跑远了,回来。通过远程在客户端机器上运行以下命令即可是客户端机器的文件位置。 摘要: 相信有部分同学们会有这样的体验,在公有云上购买了Windows Server Version 1709数据中心版的虚拟机,通过远程连接进去之后,里面全是黑乎乎的一个命令行,其...
摘要:首先是和运算符,用于将标准输出流重定向到文件,前者会覆盖已有文件,后者则是追加到已有文件末尾。在这里,代表错误代表警告代表信息代表调试信息。定义好函数之后,就可以使用函数名来调用函数了。然后我们调用函数,就可以看到结果了。 这一部分着重于介绍Powershell的程序知识,让我们能够编写功能强大的Powershell脚本,执行比较复杂的任务。 变量 变量使用$变量名创建和引用。举个例子...
摘要:注释处的方法是程序的入口,使用了符号,这是中单行函数或方法的简写,等价于如下代码方法是框架的入口,如果不返回方法,那么执行的是一个控制台应用。 本文首发于微信公众号「刘望舒」 前言 最近的Google I/O大会上,Flutter1.5 开始支持移动、Web、桌面和嵌入式设备,从不温不火的sky一直进化到如今热门的Flutter,Flutter的发展已经超出很多人的想象。我对跨平台技术一...
摘要:复制下面代码到,并输入回车即可也可以换成,前者是内容追加到文档最后,后者是覆盖文档内容。办法也是有的,用管理员权限打开,复制黏贴如下命令并回车即可这条命令会将所有内置的默认应用都重新安装回来。 showImg(https://segmentfault.com/img/bVbc72U?w=1080&h=614); 想必现在小伙伴们电脑都已经升级到 Windows 10 了。不过,你是否发...
摘要:安装点击右边导航栏,选择你自己的系统,按步骤安装资料从入门到实践准备项目使用本人的项目来作为环境。安装中国镜像启动打开执行默认禁止执行脚本,请以管理员打开执行以下命令解除限制输入确认验证环境 安装 Docker https://docker_practice.gitee... 点击右边导航栏,选择你自己的系统,按步骤安装 Docker 资料 《Docker 从入门到实践》 准备项目 使...
阅读 3322·2021-11-22 15:11
阅读 4154·2021-11-18 13:15
阅读 2238·2021-10-09 09:44
阅读 3426·2021-10-08 10:04
阅读 2508·2019-08-29 14:08
阅读 3362·2019-08-26 13:49
阅读 2889·2019-08-26 12:17
阅读 3152·2019-08-26 11:54