Powershell-2

server/2025/1/23 12:28:10/

  声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

感谢泷羽sec 团队的教学
视频地址:powershell(2)_哔哩哔哩_bilibili

一 、Powershell使用外部命令

在 Powershell 中,可以执行一些外部命令,这些命令通常位于系统环境变量中。而系统环境变量是操作系统用来存储配置信息的变量,比如文件路径、系统设置等。在 Windows 中,常见的环境变量包括 PATHTEMPSystemRoot 等。

Powershell调用外部命令的正确语法

在 PowerShell 中,执行外部命令时,通常需要在命令前加上 & 操作符。例如,&"notepad" 是正确的写法。这是因为 PowerShell 需要明确知道这是一个外部命令,而不是 PowerShell 内部命令。

例如,notepad 命令可以直接执行,因为它在 system32 目录下,而该目录在系统环境变量中

& "notepad"

直接执行不在系统环境变量中的命令时会发生报错。例如,wordpad 不在系统环境变量中,直接执行会失败。

因此,执行不在系统环境变量中的命令时,需要使用完整路径和 & 操作符来执行。

&"C:\Program Files\Windows NT\Accessories\wordpad.exe"

二 、Powershell命令集

PowerShell 中的命令(cmdlet)通常采用动名词的命名方式。例如,Get-ProcessStart-Service 等。这种命名方式对于英语较好的用户来说非常友好,因为它们直观地描述了命令的功能。

此外,PowerShell 兼容 CMD 中的命令,可以在 PowerShell 中直接打开 CMD 并执行 CMD 命令。这意味着在 PowerShell 中可以使用 CMD 中的所有命令,增加了 PowerShell 的灵活性和功能。

1.常用的命令集

系统信息
  • Get-ComputerInfo
    获取计算机的详细信息,包括操作系统版本、硬件信息等。

  • Get-Process
    列出当前运行的所有进程。可以使用 -Name-Id 参数筛选特定进程。

  • Get-Service
    查看系统服务的状态。可以使用 -Name 参数筛选特定服务。

  • Get-NetIPAddress
    获取网络接口的 IP 地址信息。

文件和目录操作
  • Get-ChildItem (lsdir)
    列出目录中的文件和子目录。可以使用 -Recurse 参数递归列出所有内容。

  • New-Item
    创建文件或目录

  • Remove-Item
    删除文件或目录

  • Copy-ItemMove-Item
    复制和移动文件或目录

网络操作
  • Test-Connection
    测试网络连接,类似于 ping 命令。

  • Get-NetAdapter
    获取网络适配器信息。

  • Get-NetRoute
    查看路由表信息。

用户和权限
  • Get-LocalUser
    列出本地用户账户。

  • New-LocalUser
    创建本地用户账户。

  • Get-LocalGroupMember
    查看本地组成员。

任务和作业
  • Start-Process
    启动一个新的进程。

  • Stop-Process
    终止一个进程。

  • Start-JobReceive-Job
    启动后台作业并获取作业结果。

脚本和模块
  • Import-Module
    导入 PowerShell 模块。

  • Get-Command
    获取可用的命令。可以指定模块或命令类型,可获取powershell的所有命令。

  • Get-Help
    获取命令的帮助信息。

其他常用命令

  • Clear-Host (clsclear)
    清空控制台屏幕。

  • Set-ExecutionPolicy
    设置脚本执行策略。

  • Get-Date
    获取当前日期和时间。

  • Write-OutputWrite-Host
    输出内容到控制台。

三 、Powershell别名的使用

PowerShell 的别名使得命令更加易于记忆和使用。通过使用 Get-Help 命令,你可以查找任何命令的别名,并使用这些别名来简化你的工作流程。记住,别名和全称命令的效果是完全相同的,所以你可以放心地使用它们

1. 查找 PowerShell 命令的别名

要查找某个命令的别名,可以使用以下命令:

Get-Help <CommandName> -Full

例如,要查找 Get-Command 命令的别名,可以使用:

Get-Help Get-Command -Full

这将显示 Get-Command 命令的详细信息,包括它的别名。在这个例子中,Get-Command 的别名是 gcm

2. 使用别名

一旦你知道了某个命令的别名,就可以直接使用这个别名来执行命令。例如,Get-Command 的别名是 gcm,所以你可以使用 gcm 来代替 Get-Command

gcm

这将列出所有可用的 PowerShell 命令。

3. 多个别名

有些命令可能有多个别名。例如,Get-ChildItem 命令有多个别名,包括 lsdirgci。你可以使用这些别名中的任何一个来执行 Get-ChildItem 命令:

ls
dir
gci

这些命令都会列出当前目录中的文件和文件夹。

4. 查询别名对应的全称命令

当我们知道一个命令的别名之后,我们可以通过这个命令的别名查找出对应的全称命令

(1)查询特定别名对应的全称命令

使用 Get-Alias 命令,后跟 -Name 参数,可以查询特定别名对应的全称命令。

示例:

Get-Alias -Name ls
Get-Alias -Name dir
(2)查找以特定字符开头或结尾的命令

使用 Get-Alias 命令结合管道操作符 |Where-Object 命令,可以筛选出以特定字符开头或结尾的命令。

示例:

Get-Alias | Where-Object { $_.Definition.StartsWith("Remove") }

这条命令就可以查询出Remove开头的命令

(3)复杂的筛选和排序

查找所有别名信息

使用 Get-Alias 命令结合管道操作符 |Group-Object 命令,可以按别名对应的实际命令定义进行分组,然后使用 Sort-Object 命令对分组结果进行排序。

Get-Alias | Group-Object Definition | Sort-Object -Descending Count

解释

  • Get-Alias:获取当前会话中已定义的所有命令别名。

  • Where-Object:筛选出满足特定条件的别名信息。

  • Group-Object:按别名对应的实际命令定义进行分组。

  • Sort-Object:对分组结果进行排序,可以按对象数量的多少进行降序排序。

5.自定义别名

如果系统的命令实在是不好记忆,可以使用自定义别名来对应命令。

(1)创建别名

使用 Set-Alias 命令创建自定义别名。例如,将 notepad 命令的别名设置为 pad

Set-Alias -Name pad -Value notepad

创建别名后,可以直接使用别名 pad 来启动记事本程序。

注意:通过 Set-Alias 创建的别名只在当前 PowerShell 会话中有效,关闭 PowerShell 窗口后别名将不再存在。

(2)删除别名

使用 Remove-Item 命令删除别名,例如删除 pad 别名:

Remove-Item Alias:pad

或者使用 del alias:pad 命令(这是 Remove-Item 的别名)。

(3)导出别名

使用 Export-Alias 命令将别名导出到一个文件中,例如将别名导出到 demo.ps1 文件:

Export-Alias -Path demo.ps1
(4)导入别名

使用 Import-Alias 命令导入别名,例如导入 demo.ps1 文件中的别名:

Import-Alias -Path demo.ps1

使用 -Force 参数强制导入,即使文件中的别名已存在:

Import-Alias -Path demo.ps1 -Force

http://www.ppmy.cn/server/160732.html

相关文章

算法面试准备 - 手撕系列第一期 - Softmax

算法面试准备 - 手撕系列第一期 - Softmax 目录 算法面试准备 - 手撕系列第一期 - SoftmaxSoftmax原理图Softmax实现代码 - 复杂版和简单版本(推荐简单版本)参考 Softmax原理图 Softmax原理图 Softmax实现代码 - 复杂版和简单版本(推荐简单版本) 方法一&#xff1a;循环计算 …

分支与循环(下)

goto语句 C语⾔提供了⼀种⾮常特别的语法&#xff0c;就是 goto 语句和跳转标号&#xff0c; goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。 适用场景 跳出多层循环&#xff1a;在处理多层嵌套循环时&#xff0c;如果需要在满足某个条件时从内层循环直接跳出到外层…

MyBatis最佳实践:SQL注入问题

什么是 SQL 注入&#xff1a; SQL 注入是一种注入攻击&#xff0c;可以执行恶意 SQL 语句&#xff0c;它将任意 SQL 代码插入数据库查询&#xff0c;使攻击者能够完全控制 WEB 应用程序后面的数据库服务器&#xff0c;攻击者可以使用 SQL 注入漏洞绕过程序安全措施可以绕过网页…

解码策略(Top-k Top-p Temperature)

0.简介 在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。 一般给模型传入的解码参数如下所示。 {"top_k": 10,"temperature": 0.95,"num_beams": 1,"top_p": 0.8,

基于微信小程序的驾校预约小程序

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

计算机视觉算法实战——实体物体跟踪

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​ ​ 1. 领域介绍✨✨ 实体物体跟踪&#xff08;Object Tracking&#xff09;是计算机视觉领域中的一个重要研究方向&#x…

PyTorch使用教程(11)-cuda的使用方法

1. 基本概念 CUDA&#xff08;Compute Unified Device Architecture&#xff09;是NVIDIA开发的一种并行计算平台和编程模型&#xff0c;专为图形处理器&#xff08;GPU&#xff09;设计&#xff0c;旨在加速科学计算、工程计算和机器学习等领域的高性能计算任务。CUDA允许开发…

Kafka中bin目录下面kafka-run-class.sh脚本中的JAVA_HOME

在Kafka中&#xff0c;bin目录下面的kafka-run-class.sh脚本中关于JAVA_HOME的脚本如下&#xff1a; # Which java to use if [ -z "$JAVA_HOME" ]; thenJAVA"java" elseJAVA"$JAVA_HOME/bin/java" fi 这段脚本是关于决定在执行 Kafka 时应该使…