【PowerShell篇】PowerShell基础入门及常见用法(一)


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


 

PowerShell基础入门及常见用法(一)

导入别名命令如下,其中-force表示强制导入。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第1张图片

不同操作系统内置的PowerShell 是不一样的,Win10 或Win2012 ,那么如何查看版本?

如下环境都是在Win10 下操作

$psversiontable

【PowerShell篇】PowerShell基础入门及常见用法(一)_第2张图片

获取计算机的详细服务、状态等信息

get-service

【PowerShell篇】PowerShell基础入门及常见用法(一)_第3张图片

而在cmd中是无法获取如上图所打印的信息,而在services.msc 中,它是以图形化方式现实出来的。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第4张图片

由于Powershell具有以下特点,它被广泛应用于安全领域,甚至成为每一位Web安全必须掌握的技术。

  • 方便
  • 支持面向对象
  • 支持和.net平台交互
  • 强大的兼容性,和cmd、vbs相互调用
  • 可扩展性好,它可以用来管理活动目录、虚拟机产品等平台

打开Powershell程序,我们使用color 命令发现无法使用

【PowerShell篇】PowerShell基础入门及常见用法(一)_第5张图片

Powershell标题栏右击,打开右击菜单,点击右击菜单中的“属性”按钮

【PowerShell篇】PowerShell基础入门及常见用法(一)_第6张图片

Windows Powershell属性对话框自动打开,要更改文字颜色就点击“屏幕文字”按钮,要更改背景颜色就点击“屏幕背景”,以此类推

【PowerShell篇】PowerShell基础入门及常见用法(一)_第7张图片

点击确定后,Powershell命令行颜色自动更改。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第8张图片

成功更改颜色

PowerShell 快捷键包括:

ALT+F7      清楚命令的历史记录

PgUp PgDn   翻页

Enter       执行当前命令

End         将光标移动至当前命令的末尾

Del         从右开始删除输入的命令字符

Esc         清空当前命令行

F2          自动补充历史命令至指定字符处

F4          删除命令行至光标右边指定字符处

F7          对话框显示命令行历史记录

F8          检索包含指定字符的命令行历史记录

F9          根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看

左/右        左右移动光标

上/下        切换命令行的历史记录

Home        光标移至命令行字符最左端

Backspace   从右删除命令行字符

Ctrl+C      取消正在执行的命令

Tab         自动补齐命令或文件名

算术运算

【PowerShell篇】PowerShell基础入门及常见用法(一)_第9张图片

管道

Cmd:dir

Linux:ls

【PowerShell篇】PowerShell基础入门及常见用法(一)_第10张图片

dir | format-table Mode,Name 

【PowerShell篇】PowerShell基础入门及常见用法(一)_第11张图片

重定向

      重定向旨在把命令的输出保存到文件中,‘>’为覆盖,’>>’追加

dir | format-table Mode,Name > agan.txt

执行外部命令及命令集

      Powershell是CMD的一个扩展,仍然能够让CMD中的命令在Powershell中使用,Powershell初始化时会加载CMD应用程序,所以CMD命令正常情况下在Powershell中都能使用,例如ipconfig。

查看端口信息

netstat -ano

【PowerShell篇】PowerShell基础入门及常见用法(一)_第12张图片

打印路由信息

route print

 

【PowerShell篇】PowerShell基础入门及常见用法(一)_第13张图片

系统变量

$env:path

命令集

1. 通过get-command获取所有命令,通常是动名词的方式。

get-command

2. 获取其用法的命令如下,简称gcm。

get-help get-command

3. 获取进程信息

get-process

4. 获取当前会话的别名

get-alias

5. 获取输入的历史命令信息

get-history

6. 获取当前时间

get-date

Powershell 别名使用

  • 获取所有命令get-command可以用别名gcm替代
get-command

gcm
  • 获取当前目录的所有文件信息get-childitem,可以用ls、dir两个命令达到同样的效果。
get-childitem

ls

dir
  • 获取相关的帮助信息,其命令如下:
get-help get-childitem
  • 获取别名所对应真实的命令
get-alias -name ls

get-alias -name dir
  • 查找所有以Remove开头的别名
get-alias | where{$_.definition.startswith("Remove")}

      其中,where来做一个管道的筛选,$_表示当前的元素,definition 定义一个字符串数组类型。Powershell支持.net强大的类库,里面的definition包括字符串startswith操作,获取字符串开头函数。

      查找所有别名,并调用sort降序排序及计算排列。

get-alias | group-object definition | sort -descending Count

      注意:自定义别名是临时生效的,当关闭Powershell时就会失效。

自定义别名

  • 设置别名,将notepad设置为新的别名pad。pad打开notepad,表明我们的别名创建成功。
set-alias -name pad -value notepad
  • 别名是临时生成的,关掉Powershell即可失效,也可以撰写命令删除。
del alias:pad

保存别名

export-alias demo.ps

dir

type demo.ps

导入别名命令如下,其中-force表示强制导入。

import-alias -force demo.ps

 

以下内容来自:https://blog.csdn.net/Eastmount/article/details/102781411

Powershell变量基础

1. 基础用法

Powershell变量跟PHP很类似,如下所示。

$name='eastmount'
$name
$age=28
$age

                                                【PowerShell篇】PowerShell基础入门及常见用法(一)_第14张图片

Powershell对大小写不敏感,$a 和 $A 一样。复杂变量用大括号引起来,但不建议同学们这里定义。

${"I am a" var ()}="yxz"
${"I am a" var ()}
$n=(7*6+8)/2
$n=3.14

【PowerShell篇】PowerShell基础入门及常见用法(一)_第15张图片

变量也可以设置等于命令

$n=ls

【PowerShell篇】PowerShell基础入门及常见用法(一)_第16张图片

变量多个同时赋值,但不建议这么写

$n1=$n2=$n3=25
$n1,$n2,$n3

【PowerShell篇】PowerShell基础入门及常见用法(一)_第17张图片

2. 变量操作

$a=2
$b=10
$c=a+b
$a,$b,$c

【PowerShell篇】PowerShell基础入门及常见用法(一)_第18张图片

传统变量交换方法

$num1=10
$num2=20
$temp=$num1
$num1=$num2
$num2=$temp
$num1,$num2

【PowerShell篇】PowerShell基础入门及常见用法(一)_第19张图片

现在变量交换的写法

$num1=10
$num2=20
$num1,$num2=$num2,$num1
$num1,$num2

【PowerShell篇】PowerShell基础入门及常见用法(一)_第20张图片

查看当前的变量

ls variable:

【PowerShell篇】PowerShell基础入门及常见用法(一)_第21张图片

查找特定的变量值,星号表示代替所有的值(num开头)

ls variable:num*
ls variable:num1

【PowerShell篇】PowerShell基础入门及常见用法(一)_第22张图片

查找变量是否存在

test-path variable:num1
test-path variable:num0

删除变量

del variable:num1
test-path variable:num1

在这里插入图片描述

用变量管理的命令

clear-variable
remove-variable
new-variable

 

3. 自动化变量

      powershell打开会自动加载变量,例如:窗口打开它会自动加载大小,再比如程序的配置信息自动加载。

根目录信息

$home

在这里插入图片描述

当前进程的标志符,该自动化内置变量只能读取,不能写入。

$pid
$$

在这里插入图片描述

4. 环境变量

查看当前环境变量

ls env:

在这里插入图片描述

打印某个环境变量的值

$env:windir

在这里插入图片描述

创建新的环境变量

$env:name='eastmount'
ls env:na*

在这里插入图片描述

删除环境变量

del env:name
ls env:na*

在这里插入图片描述

更新环境变量,注意它只是临时生效,并不会记录到我们的系统中。

$env:OS
$env:OS="Linux"
$env:OS

在这里插入图片描述

永久生效如何实现呢?增加路径至环境变量PATH中,只对User用户生效。

[environment]::setenvironmentvariable("PATH","E:\","User")
[environment]::getenvironmentvariable("PATH","User")

系统变量对所有用户都生效,用户变量只对当前用户生效。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第23张图片

【PowerShell篇】PowerShell基础入门及常见用法(一)_第24张图片

生效之后如下图所示,用户变量增加了相关值。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第25张图片

Powershell调用脚本程序

1. 脚本文件执行策略

首先,发现我们的脚本文件是禁止执行的。

get-executionpolicy

在这里插入图片描述

接着,我们尝试获取策略帮助信息。

get-help set-executionpolicy

在这里插入图片描述

最后修改权限,让其能运行Powershell脚本文件。

set-executionpolicy RemoteSigned

它会提示你需要启动管理员身份运行。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第26张图片

通过管理员身份打开CMD,再设置其权限即可,设置完成之后可以调用相关的脚本程序。

【PowerShell篇】PowerShell基础入门及常见用法(一)_第27张图片

2.调用脚本程序

(1) 定义一个demo.bat文件,其内容如下,关闭回写,打印hello world。

@echo off
echo hello world

运行命令打开:

cd desktop
.\demo.bat

【PowerShell篇】PowerShell基础入门及常见用法(一)_第28张图片

(2) 定义一个demo.vbs文件,内容如下:

msgbox "CSDN Eastmount"

运行命令打开:

cd desktop
.\demo.vbs

在这里插入图片描述

(3) 运行Powershell脚本文件也类似。

$number=49
switch($number)
{
	{($_ -lt 50) -and ($_ -gt 40)} {"此数值大于50且小于40"}
	50 {"此数值等于50"}
	{$_ -gt 50} {"此数值大于50"}
}

运行结果如下图所示:

【PowerShell篇】PowerShell基础入门及常见用法(一)_第29张图片

那么,如何在CMD中运行Powershell文件呢?
我们将demo.bat修改为如下内容,其中&表示运行。

@echo off
powershell "&'C:\Users\yxz\Desktop\demo.ps1'" 

运行命令:

cd desktop
.\demo.bat

下面方法也可以直接运行

start demo.bat
demo.bat

【PowerShell篇】PowerShell基础入门及常见用法(一)_第30张图片

 


虽然我们生活在阴沟里,但依然有人仰望星空!


 

你可能感兴趣的:(PowerShell篇)