声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
1,powershell执行常用命令
netstat -ano
查看网络连接状态的命令,它会显示当前系统的网络连接信息、路由表、接口统计信息等
- -a:显示所有的连接和监听的端口。
- -n:显示地址和端口号时使用数字格式,而不是域名和服务名称。
- -o:显示与每个连接关联的进程ID(PID)
Proto:协议类型(如TCP或UDP)。
Local Address:本地地址和端口。
Foreign Address:远程地址和端口。
State:连接的状态(如LISTENING、ESTABLISHED等)。
PID:与该连接关联的进程ID。
打印路由表 route print
start notepad开启记事本
2,powershell执行外部命令
在 PowerShell 中执行命令时,如果该命令的可执行文件位于系统的环境变量(如 PATH)所指定的目录中,我们可以直接执行命令名称(如 notepad)。例如,记事本(notepad.exe)位于 C:\Windows\System32 目录下,而该目录通常已经包含在系统的 PATH 环境变量中,因此我们可以直接输入 notepad 来启动记事本。
然而,对于那些不在系统环境变量中的命令,我们不能仅通过命令名来执行它们。此时,我们需要指定命令的完整路径,并结合 PowerShell 的 & 操作符来执行。例如,如果 wordpad.exe 不在系统环境变量中(通常位于 C:\Program Files\Windows NT\Accessories),我们可以使用以下命令来启动它:
& "C:\Program Files\Windows NT\Accessories\wordpad.exe"
这里,& 操作符是用于调用指定路径下的命令或脚本的有效方式,尤其当命令包含空格或特殊字符时必须加上引号。
对于环境变量中已有的路径,我们可以通过 $env:PATH 来查看。例如,使用以下命令来打印当前 PATH 环境变量的值:
$env:PATH
总结来说,当执行系统路径中已包含的命令时,可以直接使用命令名;而对于不在 PATH 中的命令,则需要提供完整路径,并使用 & 操作符来确保正确执行。
get-command
常用用法
- 列出所有命令: 执行 Get-Command 不带任何参数,它会列出所有已加载的命令(包括 cmdlet、函数、应用程序等)。
Get-Command - 根据命令名称获取特定命令: 你可以通过指定命令名称来获取具体的命令信息。例如,获取 Get-Process 命令的详细信息:
Get-Command Get-Process - 根据命令类型过滤: 你可以通过 -CommandType 参数来过滤不同类型的命令。-CommandType 支持的值包括:
- Cmdlet:PowerShell 原生命令
- Function:PowerShell 函数
- Alias:命令的别名
- Application:外部程序或应用
- Script:PowerShell 脚本
Get-ChildItem [-Path] <string> [-Recurse] [-Filter <string>] [-File] [-Directory]
常用用法
- 列出当前目录的内容: 默认情况下,Get-ChildItem 列出当前工作目录中的所有文件和文件夹。
Get-ChildItem - 列出指定目录的内容: 你可以通过 -Path 参数指定一个特定的路径来列出该目录中的内容。
Get-ChildItem -Path "C:\Users" - 递归列出所有子目录和文件: 使用 -Recurse 参数可以递归地列出所有子目录中的文件和文件夹。
Get-ChildItem -Path "C:\Users" -Recurse - 列出指定类型的文件: 你可以使用 -File 参数仅列出文件,或者使用 -Directory 参数仅列出目录。
- 列出所有文件:
Get-ChildItem -Path "C:\Users" -File - 列出所有目录:
Get-ChildItem -Path "C:\Users" -Directory
- 列出所有文件:
- 使用通配符过滤文件: 使用 -Filter 参数可以根据通配符来过滤文件。例如,要列出所有 .txt 文件:
Get-ChildItem -Path "C:\Users" -Filter "*.txt" - 列出包含隐藏文件和系统文件的内容: 使用 -Force 参数,可以列出包括隐藏文件和系统文件在内的所有文件和文件夹。
Get-ChildItem -Path "C:\Users" -Force - 列出某个注册表路径下的项: Get-ChildItem 不仅限于文件系统,它也支持注册表路径。例如,列出注册表中 HKEY_LOCAL_MACHINE 下的所有项:
Get-ChildItem -Path "HKLM:\" - 列出某个证书存储区的证书: 通过 Get-ChildItem 也可以列出证书存储区中的证书。
Get-ChildItem -Path Cert:\CurrentUser\My - 查看文件的详细信息: 你可以将 Get-ChildItem 与 Format-List 或 Select-Object 配合使用来查看文件的详细属性(如大小、创建时间等)。
Get-ChildItem -Path "C:\Users" | Format-List *
常见选项
- -Path:指定要列出内容的路径。
- -Recurse:递归列出子目录中的文件和文件夹。
- -Filter:使用通配符来过滤匹配的文件或文件夹。
- -File:仅列出文件。
- -Directory:仅列出目录。
- -Force:包括隐藏文件和系统文件。
- -Name:仅显示文件或目录的名称,而不是完整路径。
Get-Alias 是 PowerShell 中的一个 cmdlet,用于获取当前会话中的命令别名。命令别名是 PowerShell 中用于简化长命令的短名称。别名可以是 PowerShell 命令、外部程序、脚本等的简短替代形式。
3,PowerShell 中,可以通过创建自定义别名来简化常用命令的使用。自定义别名可以是针对 PowerShell cmdlet、外部程序、脚本甚至复杂命令的替代方式。
如何自定义别名
1. 使用 Set-Alias 临时创建别名
Set-Alias 用于在当前会话中创建临时别名。一旦 PowerShell 会话关闭,别名会丢失。
语法:
Set-Alias -Name <别名> -Value <命令>
示例:
# 创建一个别名 `np` 来启动记事本
Set-Alias -Name np -Value notepad
# 使用别名
np
2. 使用 New-Alias 临时创建别名
New-Alias 功能与 Set-Alias 类似,但更适合在脚本中创建别名。
语法:
New-Alias -Name <别名> -Value <命令>
示例:
New-Alias -Name ed -Value notepad
ed
3. 创建永久别名
临时别名仅在当前会话中有效。如果需要创建永久别名,可以将别名定义添加到 PowerShell 配置文件中。
步骤:
- 打开 PowerShell 配置文件:
notepad $PROFILE
如果文件不存在,可以创建一个:
New-Item -ItemType File -Path $PROFILE -Force - 在配置文件中添加别名定义:
Set-Alias -Name ll -Value Get-ChildItem
Set-Alias -Name np -Value notepad - 保存并关闭文件。
- 重新加载配置文件或重启 PowerShell:
. $PROFILE - 现在,这些别名在每次启动 PowerShell 时都会自动加载。
高级别名:针对复杂命令
如果需要为复杂的命令创建别名,可以使用函数,而不是 Set-Alias。
示例:
# 打开配置文件
notepad $PROFILE
# 添加一个函数
function mydir {
Get-ChildItem -Recurse -Force | Where-Object { $_.Extension -eq ".txt" }
}
# 添加别名指向该函数
Set-Alias -Name txtfiles -Value mydir
# 保存并关闭配置文件
使用:
txtfiles
这将递归列出所有 .txt 文件。
管理别名
- 查看当前会话中的所有别名:
Get-Alias - 查看特定别名的详细信息:
Get-Alias -Name np - 删除别名(仅对当前会话有效):
Remove-Item Alias:np
注意事项
- 别名命名规则:
- 别名不能与已有的命令名冲突。
- 避免使用过短或不清晰的别名名称,以免混淆。
- 权限问题:
- 编辑 $PROFILE 文件需要写权限。
- 系统别名(如 ls)不能直接覆盖,但可以删除后重新定义。
- 适用范围: 自定义的别名仅适用于 PowerShell,无法在其他命令行环境(如 CMD)中使用。