微软爱上 Linux：当 PowerShell 来到 Linux 时
在微软爱上 Linux 之后，PowerShell 这个原本只是 Windows 才能使用的组件，于 2016 年 8 月 18 日开源并且成为跨平台软件，登陆了 Linux 和 macOS。
PowerShell 脚本 微软
27.223.99.130
用来干什么？远程控制Windows？
绿色圣光 [Firefox 52.0|GNU/Linux]
2017-03-13T11:31:57.000
61.138.129.20
谁会在linux中用这玩意
Resel [Chrome 56.0|Windows 7]
2017-03-13T12:38:03.000
113.87.180.72
鸡肋
来自广东深圳的 Chrome 54.0|GNU/Linux 用户
2017-03-13T13:43:14.000
211.157.146.4
远程windows也用不到吧，Remmina这个就能做到吧
编程浪子 [Chrome 56.0|GNU/Linux]
2017-03-13T14:30:23.000
118.122.120.11
也不要太鼠目寸光。WMI 基于 CIM 规范的一种 Windows 实现，而 CIM 是一套工业标准。靠这套标准，可以实现对不同系统进行统一管理。PowerShell 在没有开源前，就靠这个实现了对 Linux 的管理。而对于 Azure 云客户，用 PowerShell 进行日常维护也是选项之一。PowerShell 脚本因为能够实现对面向对象编程组件的调用，从这个层面说，要比基于各个外部命令调用的脚本，还要底层些，差不多就是直接编程。不足的地方就是内存开销大，因为一切皆对象。比如用 $all = get-childitem -recurse 一个包含很多子目录和文件的目录，内存消耗显而易见。
来自四川成都的 Chrome 56.0|GNU/Linux 用户
2017-03-13T14:30:54.000
118.122.120.11
Remmian 就不要说了。我试过它还有 KRDC。这两个软件都不支持在 Windows Explorer 桌面，按 Alt 键。就是说其实现还是和微软的 mstc 有差异。Remmian 还有个问题，即便在全屏模式下，捕获热键的情况下，按 Meta 键，Linux 桌面的也会一并相应，每次只能在远程 Windows 按 Ctrl+ESC 代替。
来自四川成都的 Chrome 56.0|GNU/Linux 用户
2017-03-13T14:45:06.000
120.197.60.220
包容包容~~
来自广东广州的 Firefox 52.0|Windows 7 用户
2017-03-13T15:26:20.000
218.69.186.184
我会用，而且用到了你就会觉得非常方便。
拿铁不加糖 [Chrome 57.0|Windows 10]
2017-03-13T19:33:15.000
175.10.192.115
简单的任务sh足够，复杂的任务有py/perl，这玩意实在是鸡肋。最重要的是这东西有些语法非常令人受不了。
来自湖南的 QQ Browser 9.5|Windows 7 用户
2017-03-14T08:45:48.000
117.28.233.114
Linux上对脚本的支持这么好，用这个干嘛。。。
来自福建厦门的 Firefox 52.0|Windows 7 用户
2017-03-14T12:22:26.000
27.223.99.130
多谢指教。<br />
但我的回复完全是疑问句，何言“鼠目寸光”？
绿色圣光 [Firefox 51.0|GNU/Linux]
2017-03-16T14:26:21.000
114.248.66.36
玩玩尝个鲜看看
baby-blue__ [Firefox 51.0|Mac 10.12]
2017-03-17T20:34:00.000
112.10.24.101
我试了一把，简单的命令是可以的。执行在windows下写的脚本文件×.ps1确是不可以的，一堆错误。
linlover [Firefox 52.0|Ubuntu]
2017-03-18T15:07:44.000
在微软爱上 Linux 之后，PowerShell 这个原本只是 Windows 才能使用的组件，于 2016 年 8 月 18 日开源并且成为跨平台软件，登陆了 Linux 和 macOS。
在[微软爱上 Linux](/article-7515-1.html) 之后，**PowerShell** 这个原本只是 Windows 才能使用的组件，于 2016 年 8 月 18 日[开源并且成为跨平台软件](/article-7699-1.html)，登陆了 Linux 和 macOS。


![](/data/attachment/album/201703/13/083959vbbegoma8emdggkb.jpg)


**PowerShell** 是一个微软开发的自动化任务和配置管理系统。它基于 .NET 框架，由命令行语言解释器（shell）和脚本语言组成。


PowerShell 提供对 **COM** (<ruby> 组件对象模型 <rt>  Component Object Model </rt></ruby>) 和 **WMI** (<ruby> Windows 管理规范 <rt>  Windows Management Instrumentation </rt></ruby>) 的完全访问，从而允许系统管理员在本地或远程 Windows 系统中 [执行管理任务](http://www.tecmint.com/using-shell-script-to-automate-linux-system-maintenance-tasks/)，以及对 WS-Management 和 CIM（<ruby> 公共信息模型 <rt>  Common Information Model </rt></ruby>）的访问，实现对远程 Linux 系统和网络设备的管理。


通过这个框架，管理任务基本上由称为 **cmdlets**（发音 command-lets）的 **.NET** 类执行。就像 Linux 的 shell 脚本一样，用户可以通过按照一定的规则将一组 **cmdlets** 写入文件来制作脚本或可执行文件。这些脚本可以用作独立的[命令行程序或工具](http://www.tecmint.com/tag/commandline-tools/)。


### 在 Linux 系统中安装 PowerShell Core 6.0


要在 Linux 中安装 **PowerShell Core 6.0**，我们将会用到微软软件仓库，它允许我们通过最流行的 Linux 包管理器工具，如 [apt-get](http://www.tecmint.com/useful-basic-commands-of-apt-get-and-apt-cache-for-package-management/)、[yum](http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/) 等来安装。


#### 在 Ubuntu 16.04 中安装


首先，导入该公共仓库的 **GPG** 密钥，然后将 **Microsoft Ubuntu** 仓库注册到 **APT** 的源中来安装 **PowerShell**：



```
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
$ sudo apt-get update
$ sudo apt-get install -y powershell

```

#### 在 Ubuntu 14.04 中安裝



```
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
$ sudo apt-get update
$ sudo apt-get install -y powershell

```

#### 在 CentOS 7 中安裝


首先，将 **Microsoft RedHat** 仓库注册到 **YUM** 包管理器仓库列表中，然后安装 **PowerShell**：



```
$ sudo curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/microsoft.repo
$ sudo yum install -y powershell

```

### 如何在 Linux 中使用 PowerShell Core 6.0


在这一节中，我们将会简单介绍下 **PowerShell**；我们将会看到如何启动 PowerShell，运行一些基础命令，操作文件、目录和进程。然后学习怎样列出所有可用的命令、显示命令帮助和别名。


输入以下命令来启动 PowerShell：



```
$ powershell

```

![Start Powershell in Linux](/data/attachment/album/201703/13/084024du81euye77bsusii.png)


*在 Linux 中启动 PowerShell*


你可以通过以下命令来查看 PowerShell 版本：



```
$PSVersionTable

```

![Check Powershell Version](/data/attachment/album/201703/13/084025ckdzp5tfm6tcc5cp.png)


*查看 PowerShell 版本*


在 Linux 中运行基本的 PowerShell 命令。



```
get-date          [# 显示当前日期]
get-uptime        [# 显示开机时间]
get-location      [# 显示当前工作目录]

```

#### 在 PowerShell 中操作文件和目录


1、 可以通过两种方法创建空文件：



```
new-item  tecmint.tex
或者
"">tecmint.tex

```

然后往里面添加内容并查看文件内容。



```
set-content tecmint.tex -value "TecMint Linux How Tos Guides"
get-content tecmint.tex

```

![Create New File in Powershell](/data/attachment/album/201703/13/084025lvi4q45pzfv98v88.png)


*在 PowerShell 中创建新文件*


2、 在 PowerShell 中删除一个文件



```
remove-item tecmint.tex
get-content tecmint.tex

```

![Delete File in Powershell](/data/attachment/album/201703/13/084026pshkk774r8k6kvee.png)


*在 PowerShell 中删除一个文件*


3、 创建目录



```
mkdir  tecmint-files
cd  tecmint-files
“”>domains.list
ls

```

![Create Directory in Powershell](/data/attachment/album/201703/13/084026d94zz0gpg1gkgg1p.png)


*在 PowerShell 中创建目录*


4、 执行长格式的列表操作，列出文件／目录详细情况，包括模式（文件类型）、最后修改时间等，使用以下命令：



```
dir

```

![Directory Long Listing in Powershell](/data/attachment/album/201703/13/084026ambbskbqhh9mhqbn.png)


*Powershell 中列出目录长列表*


5、 显示系统中所有的进程：



```
get-process

```

![View Running Processes in Powershell](/data/attachment/album/201703/13/084027rba9tystlwkk9aot.png)


*在 PowerShell 中显示运行中的进程*


6、 通过给定的名称查看正在运行的进程/进程组细节，将进程名作为参数传给上面的命令，如下：



```
get-process apache2

```

![View Specific Process in Powershell](/data/attachment/album/201703/13/084027tfb66w2yzf22z6bb.png)


*在 PowerShell 中查看指定的进程*


输出中各部分的含义：


* NPM(K) – 进程使用的非分页内存，单位：Kb。
* PM(K) – 进程使用的可分页内存，单位：Kb。
* WS(K) – 进程的工作集大小，单位：Kb，工作集由进程所引用到的内存页组成。
* CPU(s) – 进程在所有处理器上所占用的处理器时间，单位：秒。
* ID – 进程 ID (PID).
* ProcessName – 进程名称。


7、 想要了解更多，获取 PowerShell 命令列表：



```
get-command

```

![List Powershell Commands](/data/attachment/album/201703/13/084028o4jtwhzzywjj6f6p.png)


*列出 PowerShell 的命令*


8、 想知道如何使用一个命令，查看它的帮助（类似于 Unix/Linux 中的 man）；举个例子，你可以这样获取命令 **Describe** 的帮助：



```
get-help Describe

```

![Powershell Help Manual](/data/attachment/album/201703/13/084028o6z08ttgt8t06wo0.png)


*PowerShell 帮助手册*


9、 显示所有命令的别名，輸入：



```
get-alias

```

![List Powershell Command Aliases](/data/attachment/album/201703/13/084029g4kmmzokrb4wn4oo.png)


*列出 PowerShell 命令别名*


10、 最后，不过也很重要，显示命令历史记录（曾运行过的命令的列表）：



```
history

```

![List Powershell Commands History](/data/attachment/album/201703/13/084029rixqy93zi60v3ozi.png)


*显示 PowerShell 命令历史记录*


就是这些了！在这篇文章里，我们展示了如何在 Linux 中安装**微软的 PowerShell Core 6.0**。在我看来，与传统 Unix／Linux 的 shell 相比，PowerShell 还有很长的路要走。目前看来，PowerShell 还需要在命令行操作机器，更重要的是，编程（写脚本）等方面，提供更好、更多令人激动和富有成效的特性。


查看 PowerShell 的 GitHub 仓库：<https://github.com/PowerShell/PowerShell>。


请在评论中分享你的观点。




---


作者简介：


Aaron Kili 是一个 Linux 和 F.O.S.S 狂热爱好者，将来的 Linux 系统管理员、web 开发者，目前是 TecMint 的内容编辑，是一个热爱研究计算机与坚定的分享知识的人。




---


via: <http://www.tecmint.com/install-powershell-in-linux/>


作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[zijung](https://github.com/zijung) 校对：[jasminepeng](https://github.com/jasminepeng)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

