Powershell快速入门(一) 安装和使用

2024-05-29 02:08

本文主要是介绍Powershell快速入门(一) 安装和使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一说起 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:\Users\asddf> $PSVersionTableName                           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窗口

启动Powershell ISE

在终端中敲命令是一件很麻烦的事情,有没有什么集成环境可以让我们进行交互式学习呢?当然是有的,Windows 附带了一个交互式环境,叫做Powershell ISE,可以帮助我们更方便的学习和使用 Powershell。

启动 Powershell ISE也很简单,在Windows 10下,直接在开始菜单中输入 ISE,就可以打开Powershell ISE了。

Windows Powershell ISE

命令介绍

首先说明一下,和 Linux Shell 不同,Powershell 的命令基本上都是动词-名词形式的。这样做的好处是命令作用很容易就可以看出,缺点就是输入稍微有些麻烦,习惯了Linux 的简洁的同学可能会不太适应。

Powershell 和Linux Shell 还有一个不同点在于Powershell 是基于 .NET平台的,它的命令叫做cmdletcmdlet功能比普通的Linux 命令更强,因为cmdlet接受的参数不是字符串,而是 .NET 对象,这使得Powershell 的功能更加强大和灵活。

获取命令

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

PS C:\Users\asddf> Get-Command CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-Command                                        3.0.0.0    Microsoft.PowerShell.Core
.....

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

PS C:\Users\asddf> Get-Command -Name Get-CommandCommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-Command                                        3.0.0.0    Microsoft.PowerShell.Core
获取别名

有些命令比较常用,除了动词-名词版本外,Powershell还提供了和Linux 一样的别名来简化输入。我们可以使用-CommandType Alias参数来显示所有的命令别名。下面列举了一部分输出,可以看到,微软为了照顾Linux用户,很多命令都缩写为Linux 命令的形式。

PS C:\Users\asddf> Get-Command -CommandType AliasCommandType     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

当然,如果你观察仔细的话,会发现命令类型这一栏有Aliascmdlet以及function三种类型。所以我在前面使用了“内置命令”这个词。函数基本上就是最简单的命令,例如清屏(Clear-Host),不能接受参数,功能比较基本。cmdlet则是功能强大的命令,可以接受各类参数,还能复合使用。Alias则是前两者的别名,作用是简化输入。

获取动词/名词

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

PS C:\Users\asddf> Get-Command -Verb Get

相应的,如果我想获取所有名词是Help的命令,可以使用下面的命令。

PS C:\Users\asddf> Get-Command -Noun HelpCommandType     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:\Users\asddf> Get-Command *

获取帮助

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

比方说,我们要查看一下清除屏幕这个命令的帮助,就可以简单的输入下面的命令。Powershell 会自动将别名解析为实际命令名称。所以我们可以看到,cls实际上是Clear-Host命令的别名。

PS C:\Users\asddf> 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"

其实从这个命令的帮助信息来看,我们就可以获得大部分信息。比方说,如果我们要查看这个命令的在线帮助,就可以如同上面的备注所说,在命令上添加-online参数,这样就会打开浏览器跳转到这个命令的在线帮助页上。

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

服务管理

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

首先我们先查看一下有什么管理服务的命令,只需要查询一下名词是service的命令即可。可以看到这些命令涵盖了从创建服务到管理服务的各个方面,功能很丰富。

PS C:\Users\asddf> Get-Command -Noun serviceCommandType     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:\Users\asddf> Get-Service mysql*Status   Name               DisplayName
------   ----               -----------
Running  MySQL57            MySQL57

然后如果需要停止服务也很简单,需要注意停止服务的话需要管理员权限,因此Powershell需要在管理员模式下运行。

PS C:\WINDOWS\system32> 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那样一条命令自动配置好所有东西。这个项目折腾起来还是稍稍费些事情的,需要做以下几件事情:

  1. 安装ConEmu终端程序
  2. 下载一套打过补丁的字体,例如Inziu Iosevka或者nerd-fonts 
  3. 安装oh-my-posh的两个包
  4. 在ConEmu中启动Powershell,然后调用Set-Theme命令切换主题。

我尝试了一下,但是可能字体没安装全还是什么原因,没有达到官方这张图的效果。有兴趣的同学可以自行尝试折腾一下。

oh-my-posh

cmder

cmder是一个基于ConEmu二次开发的终端模拟器,我试用了一下还不错。默认情况下的配色和界面就挺好看的了。有兴趣的同学可以试试。

cmder

这篇关于Powershell快速入门(一) 安装和使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012344

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客