c++ 调用 powershell_十九,Powershell基础入门及常见用法(一)

一.Powershell初识

1.基础概念

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

传统的CMD支持脚本编写,但扩展性不好,而Powershell类似于Linux shell,具有更好的远程处理、工作流、可更新的帮助、预定任务(Scheduled Job)、CIM等优点。

那么,如何进入Powershell呢?

一种方法是在运行中直接输入Powershell打开,另一种方法是CMD中输入Powershell打开。

060acad2c38a1be04ed902b9dea1b243.png
778e2b5e9b348f7bc1c947372918fcd9.png
f68dd34618db13da3421faaac018fd1b.png

不同操作系统内置的Powershell是不一样的,比如win7或win2008,如何查看版本呢?

$psversiontable

输出结果如下图所示:

53ffb5e9d4f72e3022697df902ae9df9.png

2.为什么强大?

首先,它可以进行计算任务,包括计算1gb大小(以字节为单位),还有基本的运算。

2a660f1950f29e513256bf15c0d5e72e.png

其次,Powershell可以获取计算机的服务详细信息、状态等。

get-service

其显示结果如下图所示,采用动词+名词方式命名,比较清楚。

79e3c6f1abc9c1b20b7db5599acdf890.png

而CMD中无法获取services的(输入services.msc),它是以图形化方式显示出来的。

39006d5099f53afd1059003d087fb8f1.png
d5687ec4b66932bbbe8b8febcc5ab3f4.png

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

方便

支持面向对象

支持和.net平台交互

强大的兼容性,和cmd、vbs相互调用

可扩展性好,它可以用来管理活动目录、虚拟机产品等平台

3.控制台和快捷键

鼠标右键属性,可以对Powershell控制台进行编辑,并且它支持两种编辑模式,快速编辑模式默认钩上的。

4fd91fad51d2c03b8be6d5a65f34ceea.png
15b4b8f438731a5933613da74db2664b.png

Powershell快捷键包括:

ALT+F7      清楚命令的历史记录PgUp PgDn   翻页Enter       执行当前命令End         将光标移动至当前命令的末尾Del         从右开始删除输入的命令字符Esc         清空当前命令行F2          自动补充历史命令至指定字符处F4          删除命令行至光标右边指定字符处F7          对话框显示命令行历史记录F8          检索包含指定字符的命令行历史记录F9          根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看 左/右        左右移动光标上/下        切换命令行的历史记录Home        光标移至命令行字符最左端Backspace   从右删除命令行字符Ctrl+C      取消正在执行的命令Tab         自动补齐命令或文件名

例如,使用快捷键Ctrl+C打断了正在运行的ping指令;使用tab快捷键补齐了service.msc命令。

8b339ad35c3a39738b6643a4d26a3b30.png

4.数学运算

Powershell支持数学运算,比如:

PS C:甥敳獲yxz> 2+46PS C:甥敳獲yxz> 4-22PS C:甥敳獲yxz> 4*312PS C:甥敳獲yxz> 9%21PS C:甥敳獲yxz> (1+3*5)/28PS C:甥敳獲yxz> 1gb/1mb1024PS C:甥敳獲yxz> 1gb/1mb*18kb18874368PS C:甥敳獲yxz> 1gb -gt 1mbTruePS C:甥敳獲yxz> 0xabcd43981

显示结果如下图所示:

6d2cc7363401642e2b72a670c1eda5bf.png

二.Powershell管道和重定向

1.管道

Powershell管道旨在将上一条命令的输出作为下一条命令的输出。

b847ef0dade47cbc14ef971e4b908f29.png

管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir | More可以将结果分屏显示。传统的Cmd管道是基于文本的,但是Powershell管道是基于对象。例如:

linux:lscmd:dir
10a13f022575b30b7d7ac493cf0f5eb6.png

如果只获取其中的name、mode值,则使用如下指令。

ls | format-table name, mode
b2f08251874ffbb2f1e63f51ebcfbde9.png

2.重定向

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

ls | format-table name, mode > demo.txttype demo.txt

上面代码是将ls显示文件内容的name和mode信息存储至本地demo.txt文件夹中,再调用“type demo.txt”打印文件内容。如果两个 >> 它会在原来的基础上,再进行补充(类似 a+),而单个大于号是删除原来的写入(类似 w)。

cb95a0a2c4537a56abd1b0c3c7eec666.png

输出结果如下图所示。

755c101dfdb93f660cdbff090bbcd47f.png

三.Powershell执行外部命令及命令集

1.外部命令

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

查看端口信息

netstat -ano

包括协议、本地地址、外部地址、状态、PID(进程号)。

33a5ff08a23d7577548761b7324b8801.png

查看网络配置信息

ipconfig
efdfe0688f8b55d299e0b817b202f603.png

打印路由信息

route print
a2e732715e709f5dfb5891bbac52b233.png

自定义文件路径,打开应用程序

start notepadnotepad

notepad放在C盘下面的WindowsSystem32文件中,能够直接打开。

db50006d4133a17513cccfa2bd2abe09.png

系统变量

$env:path
b1300418583f9d7f5f2347143613b4df.png

Python可以直接打开,Wordpad不能打开,需要添加环境变量中。

a186aba5acb18919af610b5602b8f1a4.png

2.命令集

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

get-command
ae8544b79882366955f4c7e20ab81935.png

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

get-help get-command
c58c4fdc268866ea9ae554956860f43c.png

获取进程信息

get-process
7e70491cfd4a653f39ab74ed4df27ee6.png

获取当前会话的别名

get-alias
29bf16435f73ddbf46d7ec0d319da1fd.png

获取输入的历史命令信息

get-history
5163e2fb8d1dae5272a6d5eef81147f8.png

获取当前时间

get-date
39660f5f350fa61e2bd00429a961cdab.png

四.Powershell别名使用

1.别名基本用法

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

get-commandgcm
9322896dae62f300c75f0d18eebefd24.png

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

get-childitemlsdir
2d90417848eca2e0b9644dfc858c1a8f.png
faaf42ef2f3aaeb03dae038107f76571.png

获取相关的帮助信息,其命令如下:

get-help get-childitem
de5005b50c43119450cbbfafbb65b329.png

获取别名所对应真实的命令

get-alias -name lsget-alias -name dir
61f0f00f286c546623f5c1c7e6b6f67e.png

查找所有以Remove开头的别名

get-alias | where{$_.definition.startswith("Remove")}

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

2a97d9ef093d30a82c2106e785df5a4a.png

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

get-alias | group-object definition | sort -descending Count
646c366b3872d4f7e3c41f8549be7167.png

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

2.自定义别名

设置别名,将notepad设置为新的别名pad。pad打开notepad,表明我们的别名创建成功。

set-alias -name pad -value notepad
a780009d6a6f4a2b4a45651fc2555b55.png

别名是临时生成的,关掉Powershell即可失效,也可以撰写命令删除。

del alias:pad
b1956c1362faa8ce086d8ddf3f648745.png

保存别名

export-alias demo.psdirtype demo.ps
56625a7e447d2a8a34e1c1290aa80454.png
6638824be54af87edae38c691285d437.png

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

import-alias -force demo.ps

五.Powershell变量基础

1.基础用法

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

$name='eastmount'$name$age=28$age
82417fa3c0f6d72e8f3bb05b4aedb0d9.png

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

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

变量也可以设置等于命令。

$n=ls
1b9f6c7246121870e693bfd55afdd77e.png

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

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

2.变量操作

变量的基本运算操作

$a=2$b=10$c=a+b$a,$b,$c
e6119320c42069f28a7fec3e183e9a42.png

传统变量交换方法

$num1=10$num2=20$temp=$num1$num1=$num2$num2=$temp$num1,$num2
23244d041450600e8101ecf64cdf8e2f.png

现在变量交换的写法

$num1=10$num2=20$num1,$num2=$num2,$num1$num1,$num2
0d91d9d9f77b4de88a24241f8465f60d.png

查看当前的变量

ls variable:
dce43e34c307b6ce070d221673640dc1.png

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

ls variable:num*ls variable:num1
32bf032ab2f0e5ae66ec146e9281ba88.png

查找变量是否存在

test-path variable:num1test-path variable:num0
884ff7beb20aa73b7464d56e9d340b7b.png

删除变量

del variable:num1test-path variable:num1
77a378e34b288f8c2dca808422b26ec4.png

专用变量管理的命令

clear-variableremove-variablenew-variable

3.自动化变量

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

根目录信息

$home
7d46d4f1b32fdd584610cc5cbc8c0072.png

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

$pid$$
e40aa196b0c561939e958f7ee49796b4.png

4.环境变量

查看当前环境变量

ls env:
6157f723a1ef17de8901c453ec0bafe2.png

打印某个环境变量的值

$env:windir
228549dda7e7d5097f967d823f5ac5c4.png

创建新的环境变量

$env:name='eastmount'ls env:na*
a50f5a2519914d83e3d6a0ff980c2bae.png

删除环境变量

del env:namels env:na*
81de214809f5b0aae7418411886fda8c.png

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

$env:OS$env:OS="Linux"$env:OS
08cb57072d5e3bc0da4d5f8750c66e1c.png

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

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

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

3dd9700a3376ae6430012f17d5dd0135.png
8e94f21dd71dcd14b59d14b57207441f.png

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

7057c8bfa552d7477b21840f5a22808a.png

六.Powershell调用脚本程序

1.脚本文件执行策略

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

get-executionpolicy
3efe2dec9d4f7d1cf4a4335c0b44373f.png

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

get-help set-executionpolicy
e220627013f10038309908e615ad98a8.png

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

set-executionpolicy RemoteSigned

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

85b358ac08b633fe628098187f773276.png

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

ccf37709085f7f07e9d63556003aecea.png

2.调用脚本程序

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

@echo offecho hello world

运行命令打开:

cd desktop.demo.bat

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

msgbox "CSDN Eastmount"

运行命令打开:

cd desktop.demo.vbs
12c544dfe4465ad3686924456e570054.png

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

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

运行结果如下图所示:

4e56d0189196545dbe29946d02e796e3.png
116142189e94acb002aef3965a9123f1.png

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

@echo offpowershell "&'C:甥敳獲yxzDesktopdemo.ps1'" 
b560fd9dfa9e8557df201e0a778fffe4.png

运行命令:

cd desktop.demo.bat

下面方法也可以直接运行

start demo.batdemo.bat
2f5ceda8dbe5329fb7963a570a5226e8.png

七.总结

“没有网络安全就没有国家安全,没有信息化就没有现代化”,这是我第三次听院士授课。每次的感受都很震撼,他们是这个国家的脊梁,总能站在国家和民族的角度去思考问题、解决问题,用通俗易懂的图表去诠释知识,去构建祖国的重大工程和梦想,致敬。侠之为大,为国为民。补充一句,沈院士很早就到了会场修改PPT,特别增加了区块链的知识。

b960fdf9a4d5f598e2f9db898ec13fea.png

很多大牛和老师的分享都让我受益匪浅,来自清华大学和俄亥俄州立大学的两位张老师的分享是我第三次听了,但还是很懵,下次争取能听懂。来年在雄安新区举办,希望能像学弟和学妹一样,站上讲台,加油!

相关资源:C#调用powershell例子
  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
中文名: PowerShell脚本编写手册 原名: Windows Powershell Scripting Guide 作者: Ed Wilson 资源格式: PDF 版本: 影印版 出版社: Microsoft Press书号: 073562279发行时间: 2008年 地区: 美国 语言: 英文 内容简介: Get practical guidance for using Windows PowerShell to manage Windows Vista and Windows Server 2008. Written by Ed Wilson, a leading scripting expert and trainer at Microsoft, this reference offers a task-based approach to help you find the information you need for day-to-day tasks. With more than 200 scripts, it offers rich examples that administrators can customize for their own environment and needs. The scripts range in complexity from one-line commands, to full-blown scripts with managed output and command-line arguments examples that are applicable to all skill levels. Includes a companion CD with fully searchable eBook, sample scripts, and other resources for managing your Windows-based environment.Key Book Benefits Delivers more than 200 scripts administrators can customize and use to get up and running quickly Provides multiple ways of accomplishing tasks: from one-line commands to full-blown scripts with managed output and command-line arguments Features a task-oriented approach, and organized to help you quickly find the information you need for your day-to-day activities Includes a companion CD with a fully searchable eBook, sample scripts, and other resources for on-the-job results 目录: 1. The Shell in Windows Powershell. 2. Scripting Windows Powsershell 3. Managing Logs 4. Managing Services 5. Managing Shares 6. Managing Printing 7. Desktop Maintenance 8. Networking 9. Configuration Desktop Settings 10. Managing Post-Deployment Issues 11. Managing User Data 12. Troubleshooting Windows 13. Managing Domain Users 14. Configuring the Cluster Service 15. Managing Internet Information Services 16. Working with the Certificate Store 17. Managing the Terminal Services Service 18. Configuring Network Services 19. Working with Windows Server 2008 Server Core
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页

打赏

赵照照是学姐

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值