PowerShell 概述

news/2025/3/20 0:32:34/文章来源:https://www.cnblogs.com/kyle-7Qc/p/18782200

PowerShell 学习

一、PowerShell 简介

Windows PowerShell 是专为系统管理而设计的命令行 shell 和脚本语言。 它在 Linux 中的类似物称为 Bash 脚本。 Windows PowerShell 基于 .NET Framework 构建,可帮助 IT 专业人员控制和自动化管理 Windows 操作系统和 Windows Server 环境上运行的应用程序。

Windows PowerShell 命令称为cmdlet,可让您从命令行管理计算机。 Windows PowerShell 提供程序使您可以像访问文件系统一样轻松地访问数据存储,例如注册表和证书存储。

二、PowerShell 的常见用途

(一)系统管理任务自动化

  • 批量操作
    • 可以使用 PowerShell 一键修改多台服务器的系统设置、安装软件、更新配置文件等。例如,使用 Set-Service 命令可以批量修改服务的启动类型。

    • 示例:

      Get-Service -Name "ServiceName" | Set-Service -StartupType Automatic
      
  • 用户管理
    • 可以方便地创建、删除和修改用户账户。例如,使用 New-LocalUser 命令创建本地用户,Remove-LocalUser 删除本地用户。

    • 示例:

      New-LocalUser -Name "NewUser" -Password (ConvertTo-SecureString -String "Password123" -AsPlainText -Force)
      Remove-LocalUser -Name "OldUser"
      
  • 服务管理
    • 可以启动、停止、暂停和恢复服务。例如,Start-Service 可以启动服务,Stop-Service 可以停止服务。

    • 示例:

      Start-Service -Name "ServiceName"
      Stop-Service -Name "ServiceName"
      

(二)数据处理与分析

  • 文件操作
    • 可以对文件进行批量重命名、复制、移动和删除。例如,Get-ChildItem 获取文件夹中的文件列表,Rename-Item 可以批量重命名文件。

    • 示例:

      Get-ChildItem -Path "C:\Folder" | Rename-Item -NewName { $_.name -replace "old","new" }
      
  • 文本处理
    • 可以读取、修改和分析文本文件内容。例如,Get-Content 可以读取文本文件内容,Set-Content 可以修改文件内容。

    • 示例:

      $content = Get-Content -Path "C:\File.txt"
      $content | Set-Content -Path "C:\NewFile.txt"
      

(三)网络管理

  • 网络配置
    • 可以通过 PowerShell 修改网络设置,如 IP 地址、DNS 设置等。例如,New-NetIPAddress 可以配置 IP 地址。

    • 示例:

      New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24
      
  • 网络监控
    • 可以使用 PowerShell 检测网络连接状态、端口状态等。例如,Test-NetConnection 可以测试网络连接。

    • 示例:

      Test-NetConnection -ComputerName "192.168.1.1" -Port 80
      

三、PowerShell 的优点

(一)强大的命令行功能

  • 丰富的命令集
    • PowerShell 提供了大量内置的 cmdlet(命令),涵盖了系统管理的各个方面。例如,Get-Process 可以获取系统进程信息,Get-EventLog 可以查看事件日志。

    • 示例:

      Get-Process | Select-Object -First 5
      Get-EventLog -LogName Application -Newest 10
      
  • 管道机制
    • 可以将一个命令的输出作为另一个命令的输入,实现复杂的操作。例如,Get-Process 可以筛选出 CPU 使用率大于 100 的进程。

    • 示例:

      Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object -First 5
      

(二)脚本编写能力

  • 易于学习
    • PowerShell 的脚本语法相对简单,容易上手。它支持变量、循环、条件语句等基本编程结构,可以编写复杂的脚本。

    • 示例:

      $i = 0
      while ($i -lt 5) {Write-Output "Iteration: $i"$i++
      }
      
  • 模块化设计
    • 可以将常用的命令和功能封装成模块,方便重复使用。例如,可以创建一个模块来管理服务器的备份任务。

    • 示例:

      # 创建一个简单的模块
      New-Module -Name "BackupModule" -ScriptBlock {function Backup-Files {param ([string]$SourcePath,[string]$DestinationPath)Copy-Item -Path $SourcePath -Destination $DestinationPath -Recurse}
      }
      

(三)与其他技术集成

  • 与 Windows 系统深度集成
    • PowerShell 可以直接操作 Windows 系统的各个方面,如注册表、事件日志、服务等。

    • 示例:

      Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"
      
  • 与其他工具集成
    • 可以与第三方工具(如数据库、云服务等)集成,实现更广泛的功能。例如,可以通过 PowerShell 脚本与 SQL Server 数据库交互,执行 SQL 查询。

    • 示例:

      $query = "SELECT * FROM TableName"
      $connectionString = "Server=ServerName;Database=DatabaseName;Integrated Security=True"
      $connection = New-Object System.Data.SqlClient.SqlConnection
      $connection.ConnectionString = $connectionString
      $command = New-Object System.Data.SqlClient.SqlCommand($query, $connection)
      $connection.Open()
      $result = $command.ExecuteReader()
      while ($result.Read()) {Write-Output $result["ColumnName"]
      }
      $connection.Close()
      

(四)跨平台支持

  • 多操作系统支持
    • PowerShell 不仅支持 Windows 系统,还支持 Linux 和 macOS 系统。这使得系统管理员可以在不同操作系统上使用相同的脚本进行管理。

    • 示例:

      # 在 Linux 上安装 PowerShell
      sudo apt-get update
      sudo apt-get install -y powershell
      pwsh
      

四、总结

PowerShell 是一个功能强大且灵活的工具,能够显著提高系统管理和自动化任务的效率。无论是系统管理员还是开发人员,掌握 PowerShell 都可以极大地提升工作效率。通过学习和实践,你将能够更好地利用 PowerShell 的强大功能,实现复杂的系统管理和自动化任务。


  • 参考官方文档:PowerShell 官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901806.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能工厂搭建:系统数量与选型的深度剖析

当今制造业加速迈向智能化的时代,智能工厂成为众多企业追求的目标。它宛如一座现代化的智慧堡垒,融合了先进技术与高效管理流程,能大幅提升生产效率、优化产品质量。然而,构建智能工厂并非一蹴而就,其中一个关键且容易让人困惑的问题便是:究竟要引入多少系统?搞懂这一点…

20款好用的SSH客户端工具,你在用哪个?

20款好用的SSH客户端工具,你在用哪个? 有些小伙伴购买了Linux服务器之后,不知道该用什么工具来实现本地连接,而不是每次打开服务器厂家所提供的 web 命令页面来操作。操作步骤:登录账号 - 找到服务器 - 打开web命令页面SSH工具:打开软件 - 配置连接通过SSH工具大大减少了…

Spring AOP 的实现原理

一、AOP的基本概念 将横切关注点(日志、事务、权限)从业务逻辑中分离出来,提高代码的可维护性。 下面将解释,AOP专属名词,切面、连接点、切点、通知、目标对象、代理对象:切面:切面是封装横切关注点的模块,比如日志记录。 @Aspect 修饰类,如 LoggingAspect 连接点:连…

drm study

学习过程 0319:对于任何驱动来说,buffer是最重要的,知道了buffer的创建使用这个驱动就会一半了;现在感觉是一个无头苍蝇,感觉非常复杂:数据结构非常多,之间的关系也非常复杂;不过没关系,先研究buffer通路;可以看见应用层对mmap写入的hello world,驱动中vkms_obj->…

pcie 简介及引脚定义

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。 PCI总线使用并行总线结构,在同一条总线上的所有…

C++ 基础(1)

0x01 第一个C++程序 #include <iostream>int main() {std::cout << "Hello World!\n"; } // std::cout 向控制台输出内容的指令 // << 输出的运算符 // "" 字符串内容的边界符 // \n 输出换行 // Hello World 输出字符…

在ubuntu系统下与开发板连接问题记录

对我所遇到的问题以及解决方法进行简单的记录在开发板与ubuntu(非虚拟机)连接之后使用lsmod查看是否连接lsusb 我的显示如下:如果可以看到自己的USB设备 那么就说明你已经安装了驱动 如果没有 请安装你的串口对应的驱动 我的驱动是CH340 没有安装的朋友可以去下面网站进行…

maven为什么发生依赖冲突?怎么解决依赖冲突?

maven为什么发生依赖冲突?怎么解决依赖冲突? 我们在开发的时候,偶尔会遇到依赖冲突的时候,一般都是NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError。打开搜索框又发现有这个类,明明就是引入进来了,就是找不到,让人头疼 1. 依赖冲突场景 在maven中依赖…

unstructured

unstructured 是一个开源的 Python 库,专门用于处理非结构化数据,如从 PDF、Word 文档、HTML 文件等中提取文本内容,并将其转换为结构化格式(1)安装依赖库pip install unstructured使用textfrom unstructured.partition.auto import partitionfilename = "a.txt"…

idea如何激活到2099年

前言 最近发现idea如何激活使用的问题、 网络上各种都是骗关注加各种公众号的最后也没有解决问题,下面分享一下我的激活方法是如何激活到2099年。目前适用于idea的所有版本。我以最新的ideaIU-2024.3为例。 一去官网上下载idea 官网下载地址:https://www.jetbrains.com.cn/id…

202108032324 - kafka的生产流程

由上图可以看出:KafkaProducer有两个基本线程: 主线程: 负责消息创建,拦截器,序列化器,分区器等操作,并将消息追加到消息收集器 RecoderAccumulator中; 消息收集器RecoderAccumulator为每个分区都维护了一个Deque<ProducerBatch> 类型的双端队列。 ProducerBatch…

Cython二进制逆向系列(三)运算符

在这篇文章里,我们会讨论Cython是如何处理运算符的(数学运算符、位运算符、in/not in 运算符、 ==运算符与逻辑运算符)。总的来叔其中大部分是调用虚拟机api来实现的。Cython二进制逆向系列(三)运算符在开始前,先给出本文用到的py源代码 def test1(x, y):# 数学运算符a…