微软爱上 Linux:当 PowerShell 来到 Linux 时
| 2017-03-13 08:40:23 评论: 13
在微软爱上 Linux 之后,PowerShell 这个原本只是 Windows 才能使用的组件,于 2016 年 8 月 18 日开源并且成为跨平台软件,登陆了 Linux 和 macOS。
PowerShell 是一个微软开发的自动化任务和配置管理系统。它基于 .NET 框架,由命令行语言解释器(shell)和脚本语言组成。
PowerShell 提供对 COM ( 组件对象模型 ) 和 WMI ( Windows 管理规范 ) 的完全访问,从而允许系统管理员在本地或远程 Windows 系统中 执行管理任务,以及对 WS-Management 和 CIM( 公共信息模型 )的访问,实现对远程 Linux 系统和网络设备的管理。
通过这个框架,管理任务基本上由称为 cmdlets(发音 command-lets)的 .NET 类执行。就像 Linux 的 shell 脚本一样,用户可以通过按照一定的规则将一组 cmdlets 写入文件来制作脚本或可执行文件。这些脚本可以用作独立的命令行程序或工具。
在 Linux 系统中安装 PowerShell Core 6.0
要在 Linux 中安装 PowerShell Core 6.0,我们将会用到微软软件仓库,它允许我们通过最流行的 Linux 包管理器工具,如 apt-get、yum 等来安装。
在 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
在 Linux 中启动 PowerShell
你可以通过以下命令来查看 PowerShell 版本:
$PSVersionTable
查看 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
在 PowerShell 中创建新文件
2、 在 PowerShell 中删除一个文件
remove-item tecmint.tex
get-content tecmint.tex
在 PowerShell 中删除一个文件
3、 创建目录
mkdir tecmint-files
cd tecmint-files
“”>domains.list
ls
在 PowerShell 中创建目录
4、 执行长格式的列表操作,列出文件/目录详细情况,包括模式(文件类型)、最后修改时间等,使用以下命令:
dir
Powershell 中列出目录长列表
5、 显示系统中所有的进程:
get-process
在 PowerShell 中显示运行中的进程
6、 通过给定的名称查看正在运行的进程/进程组细节,将进程名作为参数传给上面的命令,如下:
get-process apache2
在 PowerShell 中查看指定的进程
输出中各部分的含义:
- NPM(K) – 进程使用的非分页内存,单位:Kb。
- PM(K) – 进程使用的可分页内存,单位:Kb。
- WS(K) – 进程的工作集大小,单位:Kb,工作集由进程所引用到的内存页组成。
- CPU(s) – 进程在所有处理器上所占用的处理器时间,单位:秒。
- ID – 进程 ID (PID).
- ProcessName – 进程名称。
7、 想要了解更多,获取 PowerShell 命令列表:
get-command
列出 PowerShell 的命令
8、 想知道如何使用一个命令,查看它的帮助(类似于 Unix/Linux 中的 man);举个例子,你可以这样获取命令 Describe 的帮助:
get-help Describe
PowerShell 帮助手册
9、 显示所有命令的别名,輸入:
get-alias
列出 PowerShell 命令别名
10、 最后,不过也很重要,显示命令历史记录(曾运行过的命令的列表):
history
显示 PowerShell 命令历史记录
就是这些了!在这篇文章里,我们展示了如何在 Linux 中安装微软的 PowerShell Core 6.0。在我看来,与传统 Unix/Linux 的 shell 相比,PowerShell 还有很长的路要走。目前看来,PowerShell 还需要在命令行操作机器,更重要的是,编程(写脚本)等方面,提供更好、更多令人激动和富有成效的特性。
查看 PowerShell 的 GitHub 仓库:https://github.com/PowerShell/PowerShell。
请在评论中分享你的观点。
- linlover [Firefox 52.0|Ubuntu] 2017-03-18 15:07
- 我试了一把,简单的命令是可以的。执行在windows下写的脚本文件×.ps1确是不可以的,一堆错误。
- baby-blue__ [Firefox 51.0|Mac 10.12] 2017-03-17 20:34
- 玩玩尝个鲜看看
- 绿色圣光 [Firefox 51.0|GNU/Linux] 2017-03-16 14:26
- 多谢指教。
但我的回复完全是疑问句,何言“鼠目寸光”?
- 来自福建厦门的 Firefox 52.0|Windows 7 用户 2017-03-14 12:22
- Linux上对脚本的支持这么好,用这个干嘛。。。
- 来自湖南的 QQ Browser 9.5|Windows 7 用户 2017-03-14 08:45
- 简单的任务sh足够,复杂的任务有py/perl,这玩意实在是鸡肋。最重要的是这东西有些语法非常令人受不了。
- 拿铁不加糖 [Chrome 57.0|Windows 10] 2017-03-13 19:33
- 我会用,而且用到了你就会觉得非常方便。
- 来自广东广州的 Firefox 52.0|Windows 7 用户 2017-03-13 15:26
- 包容包容~~
- 来自四川成都的 Chrome 56.0|GNU/Linux 用户 2017-03-13 14:45
- Remmian 就不要说了。我试过它还有 KRDC。这两个软件都不支持在 Windows Explorer 桌面,按 Alt 键。就是说其实现还是和微软的 mstc 有差异。Remmian 还有个问题,即便在全屏模式下,捕获热键的情况下,按 Meta 键,Linux 桌面的也会一并相应,每次只能在远程 Windows 按 Ctrl+ESC 代替。
- 来自四川成都的 Chrome 56.0|GNU/Linux 用户 2017-03-13 14:30
- 也不要太鼠目寸光。WMI 基于 CIM 规范的一种 Windows 实现,而 CIM 是一套工业标准。靠这套标准,可以实现对不同系统进行统一管理。PowerShell 在没有开源前,就靠这个实现了对 Linux 的管理。而对于 Azure 云客户,用 PowerShell 进行日常维护也是选项之一。PowerShell 脚本因为能够实现对面向对象编程组件的调用,从这个层面说,要比基于各个外部命令调用的脚本,还要底层些,差不多就是直接编程。不足的地方就是内存开销大,因为一切皆对象。比如用 $all = get-childitem -recurse 一个包含很多子目录和文件的目录,内存消耗显而易见。
- 编程浪子 [Chrome 56.0|GNU/Linux] 2017-03-13 14:30
- 远程windows也用不到吧,Remmina这个就能做到吧
- 来自广东深圳的 Chrome 54.0|GNU/Linux 用户 2017-03-13 13:43
- 鸡肋
- Resel [Chrome 56.0|Windows 7] 2017-03-13 12:38
- 谁会在linux中用这玩意
- 绿色圣光 [Firefox 52.0|GNU/Linux] 2017-03-13 11:31
- 用来干什么?远程控制Windows?