目录
PowerShell认识
PowerShell 是一种命令行 shell 和脚本语言一体化工具。它跨平台运行,可用于各种任务。
PowerShell 的独特之处在于,可以使得命令行用户和脚本编写者可以利用.NET Framework的强大功能。 这个功能让它可以更轻松地在一个管道中连接不同的命令。
基本概念-管道和重定向
1.管道:把上一条命令的输出作为下一条命令的输入
example: 先使用ls获取当前目录的所有文件信息,然后使用Sort -Descending对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出。
PS C:\Users\zzf> cd C:\Users\zzf\Downloads\Powershell学习\PipeTest
PS C:\Users\zzf\Downloads\Powershell学习\PipeTest> ls | sort -Descending Name | Format-Table Name,Mode
Name Mode
---- ----
c.txt -a----
b.txt -a----
a.txt -a----
2.重定向:把命令的输出保存到文件中,‘>’为覆盖,’>>’追加
### > ###
PS C:\Users\zzf\Downloads\Powershell学习\PipeTest> cd C:\Users\zzf9\Downloads\Powershell??\RedirectTest
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> Get-Content .\a.txt
THIS IS A TEST BY ZZF.
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> "I wrote something else to overwrite this document.">a.txt
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> Get-Content .\a.txt
I wrote something else to overwrite this document.
### >> ###
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> Get-Content .\a.txt
THIS IS A TEST BY ZZF.
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> "I want to add some thing to this file!">>a.txt
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> "1111111111111">>a.txt
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> "2222222222222">>a.txt
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> "3333333333333">>a.txt
PS C:\Users\zzf\Downloads\Powershell学习\RedirectTest> Get-Content .\a.txt
THIS IS A TEST BY ZZF.
I want to add some thing to this file!
1111111111111
2222222222222
3333333333333
PowerShell命令
在前文中,我们使用了一个PowerShell命令“Get-Content”,下面将介绍PowerShell命令格式:
PowerShell命令基本格式:Verb-Noun,其中Verb表示动作,Noun表示对象。
如何查找PowerShell指令
当想知道系统上安装的所有命令列表时,使用Get-Command,但返回的列表非常庞大。
当想了解动词时,可以使用 Get-Verb。
当然,可以根据名称、动词、名词以及参数类型缩小搜索范围:
1. 根据名称筛选
Get-Command -Name Get-help
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Help 3.0.0.0 Microsoft.PowerShell.Core
2.根据部分名称筛选
使用通配符*来匹配其他形式的字符串:
Get-Command -Name *-help
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Help 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Save-Help 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Update-Help 3.0.0.0 Microsoft.PowerShell.Core
3.根据动词和名词进行筛选
###列出所有动词为Get的命令###
Get-Command -Verb Get
###列出所有以U开头的名词命令###
Get-Command -Noun U*
###组合参数###
Get-Command -Verb Get -Noun U*
常用PowerShell命令
1.文件管理
###获取指定目录中的文件和子文件列表###
Get-ChildItem 或者 ls
Get-ChildItem C:\\Windows\\System32
###移动或者重命名文件或目录###
Move-Item 或者 mv
重命名:Move-Item C:\Users\zzf\b.txt C:\Users\zzf\c.txt
移动文件:MoveItem C:\Users\zzf\c.txt C:\Users\zzf\11
###复制文件或目录###
Copy-Item 或者 cp
Copy-Item .\b.txt .\c.txt ##前者为被复制文件的路径,后者为目标文件路径##
###删除文件或目录###
Remove-Item 或者 rm
Remove-Item .\c.txt
###新建文件###
New-Item 或者 mkdir
New-Item .\d.txt
###更改当前工作目录###
Set-Location 或者 cd
Set-Location C:\Users\zzf2
2.脚本和模块
###导入PowerShell模块###
Import-Module
###创建自定义PowerShell模块###
New-Module
###从模块导出命令###
Export-ModuleMember
###让每一台计算机完成各自的工作,并将结果返回###
Invoke-Command
3.进程管理
###列出正在运行的进程,常用选项包括-Name 和 -Id
Get-Process
###终止一个进程###
Stop-Process
###启动一个新进程### ###这里打开了一个记事本###
Start-Process -FilePath "C:\Windows\System32\notepad.exe"
4.服务管理
###获取系统中所有服务列表###
Get-Service
###启动指定服务###
Start-Service -Name Spooler
###重启指定服务###
Restart-Service
###停止指定服务###
Stop-Service
5.其他常用命令
###获取当前日期和时间###
Get-Date
###生成一个随机数###
Get-Random
总结
1. 管道:把上一条命令的输出作为下一条命令的输入
2. 重定向:把命令的输出保存到文件中,‘>’为覆盖,’>>’追加
3. 帮助:
Get-Command -Name Get-help
Get-Command -Name *-help
Get-Command -Verb Get
Get-Command -Noun U*
Get-Command -Verb Get -Noun U*
4. 常用命令:
- 增删改查
Get-ChildItem 或者 ls
Move-Item 或者 mv
Copy-Item 或者 cp
Remove-Item 或者 rm
New-Item 或者 mkdir
Set-Location 或者 cd
- 脚本和模块
Import-Module
New-Module
Export-ModuleMember
Invoke-Command
- 进程管理
Get-Process
Stop-Process
Start-Process
- 服务管理
Get-Service
Start-Service -Name Spooler
Restart-Service
Stop-Service
- 其他命令
Get-Date
Get-Random
参考资料
探索 PowerShell - PowerShell | Microsoft Learn