Powershell_1

powershell_1 使用提供程序

接触powershell也是一个因缘巧合,因为我们有个虚拟桌面的项目需要更改用户的配置文件,里边涉及到一些判定和执行,但是bat的语法实在是难以学习(起码是刚上手接触的是完全看不懂那些%和@的符号是干什么),那用powershell就很爽,起码看一会就知道要干啥,写个简单的逻辑就实现了

因为实现了这个功能,就对于脚本实现一些功能很感兴趣,后来又很幸运的有了AI的帮助,在VS Code上弄个免费的AI就能自动不全,慢慢的发现了写脚本也是要做一个多层的循环和判定,感觉从思维上接触到了编程的门槛,后来就干脆买了一本powershell的实战书籍(网上也有免费的PDF下载),起码在windows运维上是可以使用的,至于多循环的判定可以用mindmanager来整理,这里就开一个坑,慢慢记录自己做的powershell练习的内容

练习题

为什么感觉在做题的时候回到了当年做数学课后习题的感觉?哈哈哈兜兜转转还是要这个思路来进行啊。

好了,不扯淡,继续学习

答案

进程列表

进程列表可以用下面两个命令来执行

1
2
3
4
#第一种
ps
#第二种
get-processs

其中命令主要是执行在linux类的设备上,windows上执行的是,为什么在windows上也能执行呢?因为微软的这个叫cmdlet,内部可以做一些类似快捷方式的设置的,如何查看呢?

1
2
#查看想要用的命令的办法
get-help get-process

可以看到别名这里是有一个ps的命令的,也就是类似快捷方式或者自定义名称

从帮助可以看到后面是可以加一些参数的,例如

1
2
`#获取EDGE浏览器的进程
get-process -processname msedge

那么还有什么东西是能加进去呢?

我们可以在微软上进行一个搜索:

Get-Process (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn

这里会有关于这个命令的说明。

可以用命令来打开这个页面:

1
get-help get-process -online

显示最新的100个应用程序日志

这个可以用AI来替我们回答,可以看到使用get-winevent命令加上参数“-logname ‘application’”来获取应用程序的日志,再通过 “-maxevents 100”来获取最新的100个日志,最后用“|”来将结果输出到屏幕,也可以用“| out-file”来输出到文件,当然也可以用“| format-table”来以表格的形式输出,也可以用“| format-list”来以列表的形式输出,当然也可以用“| format-custom”来以自定义的形式输出,当然也可以用“| format-wide”来以宽格式输出,当然也可以用“| format-xml”来以xml格式输出,当然也可以用“| format-json”来以json格式输出,当然也可以用“| format-csv”来以csv格式输出,当然也可以用“| format-custom”来以自定义格式输出。

1
2
3
4
5
6
7
8
Get-WinEvent -LogName 'Application' -MaxEvents 100 | Select-Object -Property TimeCreated, ProviderName, Id, LevelDisplayName, Message

# 以表格形式显示
Get-WinEvent -LogName 'Application' -MaxEvents 100 | Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message | Format-Table -AutoSize

# 以列表形式详细显示
Get-WinEvent -LogName 'Application' -MaxEvents 100 | Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message | Format-List

显示所有类型为”cmdlet”的命令

1
get-command -type cmdlet

显示所有的别名

1
get-alias

创建一个别名,使用np可以在powershell中执行notepad.exe

1
new-alias np notepad.exe

显示所有以M开头的服务,注意要使用*号

1
get-service -name M*

显示所有的windows防火墙规则,使用get-command命令来查询找到

1
get-command get-netfirewallrule

可以看到要用命令get-command 后要加动作,例如获取,就是get,要拿到应用程序,就是直接输入应用程序的名字,这里就是get-netfirewallrule,然后就可以看到所有的windows防火墙规则了

使用命令查询所有的网络防火墙入站规则

1
get-netfirewallrule -direction inbound