文章目录
简介
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
类提供 GetEnvironmentVariable
和 SetEnvironmentVariable
方法来获取和修改环境变量。
- 设置环境变量
[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