微软爱上 Linux:当 PowerShell 来到 Linux 时

微信扫一扫,分享到朋友圈

微软爱上 Linux:当 PowerShell 来到 Linux 时
收藏 0 13

微软爱上 Linux 之后,PowerShell 这个原本只是 Windows 才能使用的组件,于 2016 年 8 月 18 日开源并且成为跨平台软件,登陆了 Linux 和 macOS。

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

PowerShell 提供对 COM ( 组件对象模型 Component Object Model ) 和 WMI ( Windows 管理规范 Windows Management Instrumentation ) 的完全访问,从而允许系统管理员在本地或远程 Windows 系统中 执行管理任务,以及对 WS-Management 和 CIM( 公共信息模型 Common Information Model )的访问,实现对远程 Linux 系统和网络设备的管理。

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

在 Linux 系统中安装 PowerShell Core 6.0

要在 Linux 中安装 PowerShell Core 6.0,我们将会用到微软软件仓库,它允许我们通过最流行的 Linux 包管理器工具,如 apt-getyum 等来安装。

在 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

在 Linux 中启动 PowerShell

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

$PSVersionTable

Check Powershell Version

查看 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

在 PowerShell 中创建新文件

2、 在 PowerShell 中删除一个文件

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

Delete File in Powershell

在 PowerShell 中删除一个文件

3、 创建目录

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

Create Directory in Powershell

在 PowerShell 中创建目录

4、 执行长格式的列表操作,列出文件/目录详细情况,包括模式(文件类型)、最后修改时间等,使用以下命令:

dir

Directory Long Listing in Powershell

Powershell 中列出目录长列表

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

get-process

View Running Processes in Powershell

在 PowerShell 中显示运行中的进程

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

get-process apache2

View Specific Process in Powershell

在 PowerShell 中查看指定的进程

输出中各部分的含义:

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

7、 想要了解更多,获取 PowerShell 命令列表:

get-command

List Powershell Commands

列出 PowerShell 的命令

8、 想知道如何使用一个命令,查看它的帮助(类似于 Unix/Linux 中的 man);举个例子,你可以这样获取命令 Describe 的帮助:

get-help Describe

Powershell Help Manual

PowerShell 帮助手册

9、 显示所有命令的别名,輸入:

get-alias

List Powershell Command Aliases

列出 PowerShell 命令别名

10、 最后,不过也很重要,显示命令历史记录(曾运行过的命令的列表):

history

List Powershell Commands History

显示 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 译者:zijung 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

上一篇

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

下一篇

支持 Linux 和开源的公司: VMware 成为 Linux 基金会金牌会员

13 条评论

  1. 用来干什么?远程控制Windows?

  2. 谁会在linux中用这玩意

  3. 鸡肋

  4. 远程windows也用不到吧,Remmina这个就能做到吧

  5. 也不要太鼠目寸光。WMI 基于 CIM 规范的一种 Windows 实现,而 CIM 是一套工业标准。靠这套标准,可以实现对不同系统进行统一管理。PowerShell 在没有开源前,就靠这个实现了对 Linux 的管理。而对于 Azure 云客户,用 PowerShell 进行日常维护也是选项之一。PowerShell 脚本因为能够实现对面向对象编程组件的调用,从这个层面说,要比基于各个外部命令调用的脚本,还要底层些,差不多就是直接编程。不足的地方就是内存开销大,因为一切皆对象。比如用 $all = get-childitem -recurse 一个包含很多子目录和文件的目录,内存消耗显而易见。

  6. Remmian 就不要说了。我试过它还有 KRDC。这两个软件都不支持在 Windows Explorer 桌面,按 Alt 键。就是说其实现还是和微软的 mstc 有差异。Remmian 还有个问题,即便在全屏模式下,捕获热键的情况下,按 Meta 键,Linux 桌面的也会一并相应,每次只能在远程 Windows 按 Ctrl+ESC 代替。

  7. 包容包容~~

  8. 我会用,而且用到了你就会觉得非常方便。

  9. 简单的任务sh足够,复杂的任务有py/perl,这玩意实在是鸡肋。最重要的是这东西有些语法非常令人受不了。

  10. Linux上对脚本的支持这么好,用这个干嘛。。。

  11. 多谢指教。

    但我的回复完全是疑问句,何言“鼠目寸光”?

  12. 玩玩尝个鲜看看

  13. 我试了一把,简单的命令是可以的。执行在windows下写的脚本文件×.ps1确是不可以的,一堆错误。

发表评论

插入图片

最新评论

返回顶部