简介

PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。

PowerShell 是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。

PowerShell 于2016年8月18日开源并提供跨平台支持,可在 Windows、Linux 和 macOS 上运行。

基本知识点

PowerShell 是一种功能强大的命令行工具和脚本语言,它是在 Windows 操作系统中自带的。下面是一些快速入门 PowerShell 的基本知识点:

  • 打开PowerShell
    在Windows操作系统中,打开PowerShell的方法有很多种,最常用的是按下Win+X键,在弹出的菜单中选择“Windows PowerShell”。

  • PowerShell命令格式
    PowerShell命令的基本格式为:Verb-Noun,其中Verb表示动作,Noun表示对象。例如,“Get-ChildItem”命令表示获取目录中的文件列表。

  • 命令帮助
    PowerShell中每个命令都有详细的帮助文档,使用“Get-Help”命令可以查看命令的帮助信息,例如“Get-Help Get-ChildItem”。

  • 变量
    变量可以存储数据,使用$符号定义变量,例如$a=1。使用“Write-Output”命令可以输出变量的值,例如Write-Output $a

  • 流程控制
    PowerShell 支持常见的流程控制结构,如 if、else、for、while 等。例如,if ($a -eq 1) {Write-Output 'a等于1'}

  • 管道
    管道符号“|”可以将命令的输出传递给另一个命令进行处理。例如,Get-ChildItem | Where-Object {$_.Extension -eq '.txt'}表示获取目录中的所有txt文件。

  • 脚本
    PowerShell可以编写脚本文件,扩展其功能。使用记事本或其他文本编辑器编写脚本文件,并使用“.ps1”作为文件扩展名。使用“./脚本文件名.ps1”命令运行脚本文件。

这些是快速入门 PowerShell 的一些基本知识点,可以帮助您开始使用这个强大的工具。要了解更多信息,请查看 PowerShell 的帮助文档或参考 PowerShell 的官方网站

环境变量设置与查看

使用变量语法

可以使用以下语法显示和更改环境变量的值:

$Env:<variable-name>

在此语法中,美元符号 ($) 指示变量,驱动器名称 (Env:) 指示环境变量后跟变量名称。

  • 设置环境变量
$Env:MY_VAR = "my_value"

这将在当前 PowerShell 进程的环境变量中设置名为 MY_VAR 的变量。

  • 查看环境变量
$Env:MY_VAR

这将返回名为 MY_VAR 的环境变量的值。

  • 删除环境变量

由于环境变量不能是空字符串,因此将环境变量设置为 $null 或空字符串会将其删除。 例如:

$Env:MY_VAR=""

这将从当前 PowerShell 进程的环境变量中删除名为 MY_VAR 的变量。

注意,使用 $Env 设置环境变量时,只有在当前 PowerShell 进程中才会存在该变量。如果您希望在全局范围内设置环境变量,则应该使用 System.Environment方法。

使用 System.Environment 方法

System.Environment 类提供 GetEnvironmentVariableSetEnvironmentVariable 方法来获取和修改环境变量。

  • 设置环境变量
[Environment]::SetEnvironmentVariable("name", "value", "Scope")

其中,name 是环境变量名称,value 是环境变量的值,Scope 指定环境变量的作用范围。例如,要在当前用户的环境变量中设置名为 MY_VAR 的环境变量,可以运行以下命令:

[Environment]::SetEnvironmentVariable("MY_VAR", "my_value", "User")

如果不指定 Scope 参数,则默认为 “Process” 范围,这将在当前 PowerShell 进程的环境变量中设置变量。

  • 查看环境变量
[Environment]::GetEnvironmentVariable("name", "Scope")

其中,name 是要查看的环境变量名称,Scope 指定环境变量的作用范围。例如,要查看当前用户环境变量中的 MY_VAR 变量,可以运行以下命令:

[Environment]::GetEnvironmentVariable("MY_VAR", "User")

如果不指定 Scope 参数,则默认为 “Process” 范围,这将返回当前 PowerShell 进程中的变量。

  • 删除环境变量
[Environment]::SetEnvironmentVariable("name", $null, "Scope")

其中,name 是要删除的环境变量名称,Scope 指定环境变量的作用范围。例如,要删除当前用户的 MY_VAR 变量,可以运行以下命令:

[Environment]::SetEnvironmentVariable("MY_VAR", $null, "User")

如果不指定 Scope 参数,则默认为 “Process” 范围,这将在当前 PowerShell 进程中删除变量。

帮助命令

Get-Help
这个命令用于获取其他命令的帮助文档,例如 “Get-Help Get-ChildItem”。

Update-Help
更新本地帮助文件的版本。

Get-Command
获取系统中所有可用的命令。例如,输入 Get-Command -Module Net* 可以获取所有以 “Net” 开头的模块的命令列表。

Get-Alias
获取当前会话中所有的命令别名。例如,输入 Get-Alias -Definition Get-ChildItem 可以获取所有使用 Get-ChildItem 命令的别名。

Get-History
获取当前会话中执行过的命令历史记录。

进程管理

Get-Process
这个命令用于列出正在运行的进程,常用的选项包括“-Name”和“-Id”,例如“Get-Process -Name explorer”。

Stop-Process
这个命令用于终止一个进程,常用的选项包括“-Name”和“-Id”,例如“Stop-Process -Name notepad”。

Start-Process
启动一个新进程。例如,输入 Start-Process -FilePath “C:\Windows\System32\notepad.exe” 可以启动记事本应用程序。

服务管理

Restart-Service
重启指定的服务。例如,输入 Get-Service 可以获取所有服务列表。

Get-Service
获取系统中所有的服务列表。例如,输入 Start-Service -Name Spooler 可以启动打印机池服务。

Stop-Service
停止指定的服务。例如,输入 Stop-Service -Name Spooler 可以停止打印机池服务。

文件管理

Get-ChildItem
获取指定目录中的文件和子目录列表。例如,输入 Get-ChildItem -Path “C:\Windows\System32” 可以获取系统 32 文件夹下的所有文件和文件夹列表。

Set-Location
更改当前工作目录。也可以使用其别名“cd”,例如“Set-Location C:\Windows”。

Copy-Item
复制文件或目录。例如,输入 Copy-Item -Path “C:\Temp\file.txt” -Destination “C:\Temp2” 可以将 file.txt 复制到 C:\Temp2 文件夹。

Move-Item
移动或重命名文件或目录。例如“Move-Item C:\Test.txt D:\Archive\Test2.txt”。

Remove-Item
删除文件或目录,常用的选项包括“-Path”和“-Recurse”,例如“Remove-Item -Path C:\Test -Recurse”。

New-Item
创建新文件或目录,常用的选项包括“-ItemType”和“-Path”,例如“New-Item -ItemType Directory -Path C:\Test”。

网络管理

Test-Connection
测试计算机之间的连接状态。

Test-NetConnection
测试网络连接。例如,输入 Test-NetConnection -ComputerName “www.google.com” -Port 80 可以测试计算机是否可以通过端口 80 连接到 Google。

Ping
向指定计算机发送 ICMP 回显请求。

Tracert
显示数据包从本地计算机到指定计算机的路径。

Netstat
显示计算机的网络连接状态和统计信息。

系统管理

Get-WmiObject
获取 Windows 管理信息对象(WMI)的属性和方法。

Get-EventLog
获取指定事件日志的事件列表。

Get-ItemProperty
获取指定注册表键的属性列表。

Set-ItemProperty
设置指定注册表键的属性值。

Get-ChildItem Env:
获取当前会话中所有的环境变量。

用户管理

Get-LocalUser
获取本地计算机上的用户列表。

New-LocalUser
创建新的本地用户。

Remove-LocalUser
删除本地计算机上的指定用户。

Add-LocalGroupMember
将用户添加到本地组。

Remove-LocalGroupMember
从本地组中删除用户。

远程管理

Enter-PSSession
在远程计算机上打开一个 PowerShell 会话。

Invoke-Command
在远程计算机上执行命令。

New-PSSession
创建一个与远程计算机的连接会话。

Remove-PSSession
关闭与远程计算机的连接会话。

Enable-PSRemoting
允许远程计算机上运行的 PowerShell 脚本进行远程管理。

字符串和文本处理

Select-String
在文本中查找匹配项。例如,输入 Select-String -Path “C:\Logs*.log” -Pattern “Error” 可以查找 C:\Logs 目录下所有 .log 文件中包含字符串 “Error” 的行。

Format-List
将对象格式化为列表。例如,输入 Get-Process | Format-List Name, Id, CPU 可以将当前正在运行的进程列表格式化为包含名称、ID 和 CPU 列的列表。

Split
将字符串分割为数组。例如,输入 “one,two,three,four” -split “,” 可以将字符串 “one,two,three,four” 分割为包含四个元素的数组。

脚本和模块

Set-ExecutionPolicy
设置脚本执行策略。例如,输入 Set-ExecutionPolicy RemoteSigned 可以设置允许在本地计算机上执行远程签名的脚本。

Invoke-Command
在远程计算机上执行命令。例如,输入 Invoke-Command -ComputerName “remoteComputer” -ScriptBlock { Get-Process } 可以在远程计算机上获取当前正在运行的进程列表。

Import-Module
导入 PowerShell 模块。

Export-ModuleMember
从模块导出命令。

New-Module
创建自定义 PowerShell 模块。

Invoke-Expression
在当前会话中执行字符串作为命令。

其他常用命令

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

Get-Random
生成一个随机数。

Measure-Object
计算对象集合的属性。

Out-File
将输出重定向到文件。

Select-Object
选择对象属性进行显示。

Where-Object
根据条件筛选对象集合。


参考文献

PowerShell - Wikipedia
PowerShell 文档 - Microsoft Learn
关于环境变量- PowerShell - Microsoft Learn
OpenAI ChatGPT

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐