Powershell-2

ops/2025/1/23 6:47:40/

  声明:学习视频来自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/ops/152394.html

相关文章

JavaWeb学习-Day1HTML学习

&#xff08;一&#xff09;HTML快速入门 &#xff08;1&#xff09;快速创建文本文件&#xff0c;并将后缀名改为.html (2)编写HTML结构标签 &#xff08;3&#xff09;在<body>中填写内容 <html><head><title>HTML快速入门,在文档头部展示</t…

锅炉远程透传网关

锅炉作为能源供给系统的重要设备&#xff0c;广泛应用于工业生产、供热供暖和电力行业。在锅炉的运行管理中&#xff0c;实时数据监控、运行状态远程访问和故障快速响应是提升设备效率与安全性的重要需求。然而&#xff0c;传统锅炉管理模式中&#xff0c;设备分散、信息孤岛、…

OpenCV边沿检测(Python版)

边缘检测是图像处理中的一项重要任务&#xff0c;用于找到图像中的边界或边缘。它在计算机视觉、图像处理和模式识别等领域中具有广泛的应用。 边缘可以被定义为图像亮度、颜色或纹理的突变区域。边缘检测算法旨在识别这些变化并将其标记为边缘。边缘检测可以用于分割图像、检测…

VBA语言的区块链

用VBA语言探讨区块链技术 引言 区块链技术自2008年比特币的问世以来&#xff0c;逐渐成为了一个热门的话题。它不仅推动了数字货币的崛起&#xff0c;更在金融、供应链、医疗、游戏等众多领域展示出了巨大的应用潜力。然而&#xff0c;对于很多程序员来说&#xff0c;如何实现…

Java 面向对象基础全面解析

Java学习资料 Java学习资料 Java学习资料 在 Java 编程领域&#xff0c;面向对象编程&#xff08;OOP&#xff09;思想是构建复杂且高效程序的基石。它将现实世界中的事物抽象为程序中的对象&#xff0c;通过一系列特性&#xff0c;让程序更具模块化、可维护性与扩展性。 一…

java微服务的异常

1.依赖异常 须知&#xff1a; 【 如果项目的结构是单个模块的&#xff0c;需要给每个单个模块添加起步依赖 spring-boot-starter-parent&#xff0c;指定版本 】 【 如果项目的结构是子父模块的&#xff0c;只需要给父模块添加起步依赖 spring-boot-starter-parent&#xff0c;…

如何保证Bitmap数据在多个服务器间的一致性

Bitmap&#xff08;位图&#xff09;是一种常用的数据结构&#xff0c;用于高效地表示和处理大量数据的状态或集合。在多个服务器间保证 Bitmap 数据的一致性是一个具有挑战性的问题&#xff0c;特别是在分布式系统中&#xff0c;需要考虑网络延迟、节点故障等因素。以下是一些…

win内核内部直接irp读取文件写入文件

#include <ntifs.h> #include <ntddk.h> #define TAG_NAME tlfF // FltF in reverse #define BUFFER_SIZE PAGE_SIZE // 驱动设备扩展结构 typedef struct _DEVICE_EXTENSION { PDEVICE_OBJECT DeviceObject; UNICODE_STRING DeviceName; UNICODE_STRIN…