命令清单

命令 描述 (说明)
Add-content 将内容添加到指定的文件。
Add-Computer 将本地计算机添加到域或工作组。
Add-History 用于在历史记录中添加命令。
Add-jobTrigger 将作业触发器添加到计划的作业中。
Add-member 将自定义方法或属性添加到 PowerShell 对象的实例。
Add-type 将 Microsoft .NET 框架类添加到 Windows PowerShell 会话中。
Clear-Content 删除文件的内容,但不删除该文件。
Clear-History 从命令历史记录中删除条目。
Clear-Item 清除项目或变量的值,但不清除该项目或变量。
Clear-ItemProperty 清除属性的值,但不删除该属性。
Clear-Variable 删除变量的值。
Clear-Host 清除宿主程序的显示。
Copy-ItemProperty 将值和属性从指定位置复制到另一个位置。
Copy-Item 将项目从一个位置复制到另一个位置。
Complete-Transaction 提交活动事务。
Compare-object 比较两组对象。
Disable-PSBreakpoint 禁用当前控制台中的断点。
Enable-PSBreakpoint 在当前控制台中启用断点。
Find-package 在可用的软件包源中查找软件包。
Find-script 用于查找脚本。
ForEach-Object 对输入对象集合中的每个项目执行操作。
Get-Alias 获取当前会话的别名。
Get-childItem 在一个或多个指定位置获取项目和子项目。
Get-Command 用于获取所有命令
Get-Content 在指定位置获取文件的内容。
Get-Date 用于获取当前日期和时间。
Get-ExecutionPolicy 获取当前会话的执行策略。
Get-Help 显示有关 PowerShell 命令和概念的信息。
Get-History 显示在当前会话期间输入的命令列表。
Get-host 获取代表当前宿主程序的对象。
Get-InstalledScript 获取为当前用户安装的脚本。
Get-Item 在特定位置获取项目或文件。
Get-ItemProperty 获取特定项目的属性。
Get-Location 显示当前的工作位置。
Get-PSBreakpoint 获取在当前会话中设置的断点。
Get-Package 通过使用程序包管理来显示所有已安装程序包的列表。
Get-Process 获取在本地或远程计算机上运行的进程。
Get-Service 在本地或远程计算机上获取服务。
Get-Transaction 获取当前活动的事务。
Get-Variable 在当前控制台中获取变量。
Install-package 用于安装一个或多个软件包。
Install-script 用于安装脚本。
Invoke-commands 在本地和远程计算机上执行命令。
Move-Item 用于将项目从一个位置移动到另一位置。
Move-ItemProperty 用于将项目的属性从一个位置移动到另一位置。
New-alias 创建一个新别名。
New-Item 创建一个新项目。
New-ItemProperty 为项目创建一个新属性并设置其值。
New-Service 创建一个新的 Window 服务。
New-variable 创建一个新变量。
Read-Host 从控制台读取一行输入。
Remove-computer 从其域中删除本地计算机。
Remove-Item 删除特定项目。
Remove-ItemProperty 从项目中删除属性及其值。
Remove-job 删除 Windows PowerShell 的后台作业。
Remove-PSBreakpoint 从当前控制台删除该断点。
Remove-variable 删除具有其值的变量。
Rename-computer 用于重命名计算机。
Restart-Service 停止并启动一项或多项服务。
Restart-computer 用于在本地和远程计算机上重新启动 Windows 操作系统。
Resume-job 用于重新启动挂起的作业。
Save-Help 它用于下载最新的帮助文件并将其保存到文件系统目录。
Save-packages 用于将软件包保存到本地计算机,而无需安装它们。
Save-Script 用于保存脚本。
Select-string 用于在字符串或文件中查找文本。
Send-MailMessage 用于发送电子邮件。
Set-Alias 在当前 Windows PowerShell 中创建或更改 cmdlet 的别名。
Set-content 将内容写入文件中。
Set-Date 更改系统时间。
Set-Item 将项目的值更改为命令中指定的值。
Set-ItemProperty 更改或创建项目属性的值。
Set-Location 用于将当前工作位置设置为特定位置。
Set-PSBreakpoint 在命令,行或变量上设置断点。
Set-ScheduledJob 更改计划的作业。
Set-Service 停止,启动和挂起服务,并更改其属性。
Set-variable 设置变量的值。
Show-command 在图形命令窗口中创建 Windows PowerShell 命令。
Sort-Object 按属性值对对象进行排序。
Start-Job 启动 Windows PowerShell 的后台作业。
Start-Process 在本地计算机上启动或启动更多进程。
Start-services 启动一个或多个已停止的服务。
Start-transaction 启动事务。
Stop-Computer 关闭本地和远程计算机。
Stop-Job 停止 Windows PowerShell 的后台作业。
Stop-Process 停止一个或多个进程。
Stop-Services 停止一个或多个正在运行的服务。
Suspend-jobs 暂时停止工作流程作业。
Suspend-Service 挂起或暂停一个或多个正在运行的服务。
Undo-transaction 回滚活动事务。
Uninstall-module 用于卸载模块。
Uninstall-Package 卸载一个或多个软件包。
Unregister-ScheduledJob 删除本地计算机上的计划作业
Update-Help 用于下载并在计算机上安装最新的帮助文件。
Write-Output 将特定对象沿管道发送到下一个命令。

功能概述

PowerShell 的命令叫做 cmdlet(读作 command-let)是 Windows PowerShell 中用于操作对象的单功能命令。
PowerShell 的命令具有一致的命名规范,都采用动词-名词形式,例如 Get-HelpGet-ProcessStart-Service

Windows PowerShell cmdlet 都非常简单,它们设计为与其他 cmdlet 组合使用。例如,Get cmdlet 仅检索数据,Set cmdlet 仅建立或更改数据,Format cmdlet 仅设置数据格式,Out cmdlet 仅将输出定向到指定的目标,动词部分一般为 GetAddNewSetMoveRemove 等。

Windows PowerShell 的单条命令或编程代码具有一定的行为逻辑,根据 获取 > 执行 > 结果 > 循环 的逻辑让使用者可根据需求最大限度的自由发挥,同时最大可能的兼容了原有 Linux Shell 运维人员的使用习惯,多数命令可套用内置别名来对标 Linux Shell 的命令。

Windows PowerShell 命令的别名一般兼容 Windows Command 以及 Linux Shell,如 Get-ChildItem 命令均可使用 dirls 来代替,命令不区分大小写,官方文档的使用大小写书写是使用户更好的识别命令单词的可读性。

快速启动

  • 右键桌面左下角 图标选择 Windows PowerShell
  • 按下组合快捷键 + X 选择 Windows PowerShell
  • 在任意文件夹位置按住 Shift 并右键,选择 在此处打开 PowerShell 窗口

查询版本

获取 PowerShell 系统变量

基础概览

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.20348.1
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.20348.1
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

版本属性

$PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      20348  230

主机查询

host


Name             : ConsoleHost
Version          : 5.1.20348.230
InstanceId       : d515e109-5bbe-4c95-9ea3-49161dde279f
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : zh-CN
CurrentUICulture : zh-CN
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

更新版本

https://github.com/PowerShell/PowerShell/releases

获取帮助

首先学习如何学习,使用命令 Get-Help [函数] 即可查看命令语法和别名。
别名 manhelpGet-Help 的快速命令,也是兼容 Linux Shell 运维人员使用习惯的命令。
追加 -full  查看完整版本帮助
追加 -Online 可以查看最新版本内容

Get-Help Get-ChildItem

名称
    Get-ChildItem

语法
    Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>]  [<CommonParameters>]

    Get-ChildItem [[-Filter] <string>]  [<CommonParameters>]


别名
    gci
    ls
    dir

获取命令

指定命令获取属性

Get-Command Get-ADUser

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-ADUser                                         1.0.1.0    ActiveDirectory

模糊获取命令属性

Get-Command *-ADGroupMember

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Add-ADGroupMember                                  1.0.1.0    ActiveDirectory
Cmdlet          Get-ADGroupMember                                  1.0.1.0    ActiveDirectory
Cmdlet          Remove-ADGroupMember                               1.0.1.0    ActiveDirectory

图形命令

Show-Command Get-ADUser

Show-Command 可以在命令窗口中创建一个 Windows PowerShell 命令。您可以使用命令窗口的功能来运行命令或让它将命令返回给您。
同时 Show-Command 是一个非常有用的教学和学习工具。 Show-Command 适用于所有命令类型,包括 cmdlet函数工作流CIM 命令。

清除屏幕

clsClear-Host 的别名

cls

获取别名

获取指定名称的命令别名

Get-Alias hl

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           hl -> Get-Help

获取系统所有预设的别名

Get-Alias *

设置别名

既然有了别名这样简洁且好用的语法,那么就按需要自定义一些常用的吧

获取所有别名相关的命令

Get-Help *alias

Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Export-Alias                      Cmdlet    Microsoft.PowerShell.U... ...
Get-Alias                         Cmdlet    Microsoft.PowerShell.U... ...
Import-Alias                      Cmdlet    Microsoft.PowerShell.U... ...
New-Alias                         Cmdlet    Microsoft.PowerShell.U... ...
Set-Alias                         Cmdlet    Microsoft.PowerShell.U... ...

Get-Help 设置简洁的命令 hl

New-Alias hl Get-Help

反查别名

有时知道别名但忘记实体命令,可以通过 Get-Help [别名] 来查询

Get-Help cd

名称
    Set-Location

语法
    Set-Location [[-Path] <string>]  [<CommonParameters>]

    Set-Location  [<CommonParameters>]

    Set-Location  [<CommonParameters>]


别名
    sl
    cd
    chdir

删除别名

同时,在完全关闭 PowerShell 后自定义的别名也会同时被清除

rm alias:\ll

通过查询完整命令来查看所有对应的别名,包含系统预设和自定义

hl hl

名称
    Get-Help

语法
    Get-Help [[-Name] <string>]  [<CommonParameters>]

    Get-Help [[-Name] <string>]  [<CommonParameters>]

    Get-Help [[-Name] <string>]  [<CommonParameters>]

    Get-Help [[-Name] <string>]  [<CommonParameters>]

    Get-Help [[-Name] <string>]  [<CommonParameters>]

    Get-Help [[-Name] <string>]  [<CommonParameters>]


别名
    hl
    ll
    get

导出别名

epalExport-Alias 的别名

Export-Alias alias.txt

已导出的 PowerShell 系统预置别名

导入别名

ipalImport-Alias 的别名

Import-Alias .\alias.txt

获取目录

gci 的对应完整命令是 Get-ChildItem,同时支持 lsdir 和自定义别名

gci


    目录: C:\Users\hexingxing\Desktop


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----   2021/11/16 周二  16:53:57           1071 Adobe Photoshop 2021.lnk

获取路径

pwdglGet-Location 的别名

pwd

Path
----
C:\Users\hexingxing\Desktop

打开目录

startsapsStart-Process 的别名

同时可以通过系统环境变量打开目录 start $env:temp 和切换目录 cd $env:temp 以及回显结果 echo $env:temp
参考:https://hexingxing.cn/get-childitem/

打开当前目录
同时支持打开可执行文件

start .

打开指定目录

start D:\

打开远程目录

start \\10.0.16.8

返回上级

cdchdir (Set-Location) 的别名

cd ..

显示内容

lsdir (Get-ChildItem) 的别名

通过变量路径获取临时目录内容

ls $env:temp


    目录: C:\Users\hexingxing\AppData\Local\Temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----    2022/6/23 周四  15:26:13                file_icon_path
d-----    2022/6/16 周四  15:51:23                lilo.8112
d-----    2022/6/10 周五  14:58:45                msohtmlclip1
d-----    2022/6/22 周三  17:06:38                nsk4779.tmp
d-----    2022/6/16 周四  15:51:28                PhotoshopCrashes
d-----   2021/11/16 周二  15:35:08                Rar$EXa15660.26333

切换目录

cdchdir (Set-Location) 的别名

切换到当前用户的桌面路径位置

过程中可以使用 tab 键来补全节点目录名称

如输入 cd c:\us 后按 tab 即可补全为 cd C:\Users\

继续输入 he 屏幕显示 cd C:\Users\he 后按 tab 即可补全为 cd C:\Users\hexingxing\

cd C:\Users\hexingxing\Desktop\

如果目录名称有空格则需要使用单引号或双引号包裹

cd 'C:\Program Files\'

新建项目

niNew-Item 的别名

ni new.txt


    目录: C:\Users\hexingxing\Desktop


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----    2022/6/30 周四  12:16:06              0 new.txt

新建目录

mdmkdir (New-Item <String> -Type Directory) 的别名

md newDir


    目录: C:\Users\hexingxing\Desktop


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----    2022/6/30 周四  12:22:18                newDir

新增内容

acAdd-Content 的别名

向指定的项中添加内容

ac -Path *.txt -Exclude Exclude.txt -Value "newContent"

-Path 指定路径,留空、删除该参数或 . 为当前目录
*.txt 匹配所有 txt 的文件
-Exclude 排除的对象
-Value 输入的内容

向指定的项中添加日期

ac .\currentdate.txt -Value (Get-Date) -PassThru

追加内容

acAdd-Content 的别名
gcGet-Content 的别名

向指定的项中追加内容,原有内容不受影响。

ac .\new.txt -Value (gc .\myinfo.txt)

设置内容

scSet-Content 的别名

向指定的项中设置内容,原有内容将被覆盖。

sc .\new.txt -Value "Set a New Content"

获取内容

gcGet-Content 的别名

gc .\new.txt
Set a New Content

清除内容

clcClear-Content 的别名

clc .\new.txt

复制项目

cpCopy-Item 的别名

new.txt 复制到上一级目录

cp .\new.txt ..

移动项目

mvMove-Item 的别名

new.txt 移动到当前/指定用户桌面

mv .\new.txt C:\Users\hexingxing\Desktop\

删除项目

rmRemove-Item 的别名

删除指定项目

rm .\new.txt

项目属性

giGet-Item 的别名

gi .\new.txt


    目录: C:\Users\hexingxing\Desktop


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----    2022/6/30 周四  12:20:18             28 new.txt

格式输出

fwFormat-Wide 的别名

以对象矩阵格式输出

Get-ADObject -Filter 'ObjectClass -eq "user"' -SearchBase "OU=cnList,OU=testGroup,DC=hxx,DC=tt" | fw name -Column 5


陈振浩          莫海翰         高海元         欧丽霞         唐小龙
王鑫            刘玉莲         段小亚         陈越          

flFormat-List 的别名

以对象列表格式输出

Get-ADObject -Filter 'ObjectClass -eq "user"' -SearchBase "OU=cnList,OU=testGroup,DC=hxx,DC=tt" | fl name


name : 陈振浩

name : 莫海翰

name : 高海元

name : 欧丽霞

name : 唐小龙

name : 王鑫

name : 刘玉莲

name : 段小亚

name : 陈越

ftFormat-Table 的别名

以对象表格格式输出

Get-ADObject -Filter 'ObjectClass -eq "user"' -SearchBase "OU=cnList,OU=testGroup,DC=hxx,DC=tt" | ft name

name
----
陈振浩
莫海翰
高海元
欧丽霞
唐小龙
王鑫
刘玉莲
段小亚
陈越

Format-Custom:以对象层次关系输出

循环处理

ls -Name | foreach {$_+"dsf"}

筛选

ls | where {$_ -match "admin"}

排序

ls | Sort-Object -Descending -Property length -Unique

选择

ls | Select-Object -Skip 10 -First 10

逻辑运算

  • -and(逻辑与)
  • -or(逻辑或)
  • -xor(逻辑 XOR)
  • -not(逻辑非)
  • !(与逻辑非相同)

-and(逻辑与)
AND 运算符是逻辑运算符,如果两个条件在表达式中都正确,则返回布尔值 TRUE

$a=10 ; $b=20  
($a -lt $b) -and ($a -eq 10)

-or(逻辑或)
OR 运算符是逻辑运算符,如果表达式中的至少一个条件为 TRUE,则返回布尔值 TRUE。

$a=5 ; $b=30  
($a -lt $b) -or ($a -eq 11)

-xor(逻辑 XOR)
XOR 运算符是逻辑运算符,如果表达式中只有一个条件正确,则它将返回布尔值 TRUE。 当表达式中有多个语句正确时,此运算符将返回 FALSE

$a=5 ; $b=30  
($a -lt $b) -xor ($a -eq 11) -xor ( $b -eq 30)

-not(逻辑非)
NOT 运算符是产生表达式相反结果的逻辑运算符。如果表达式的值为 TRUE,则此运算符将返回 FALSE,反之亦然。

$a=5 ; $b=30  
-not ( $b -eq 30)

!(与逻辑非相同)
此运算符与产生表达式相反结果的逻辑 NOT 运算符相同。

$a=5 ; $b=30  
! ($a -gt $b)

顺序执行

; 符号的作用为多个需求命令顺序执行:
示例:切换到用户桌面并打开该目录位置

cd C:\Users\hexingxing\Desktop\ ; start .

字符替换

参数:-Replace

\. 仅代表 . 字符

"10.1.8.110" -replace "\." ,  ","
10,1,8,110

. 代表所有字符

"10.1.8.110" -replace "." ,  "/"
//////////

替换特定字符

"10.1.8.110" -replace "110" ,  "123"
10.1.8.123

替换空白行

默认输出

(Get-Date)

2022 年 7 月 29 日 15:10:10

替换输出

(Get-Date) -replace "",""
2022/7/29 15:05:00

替换所有空值

默认输出

(Get-Date)

2022 年 7 月 29 日 15:10:10

替换输出

(Get-Date) -replace " ",""
2022/7/2915:05:36

初试变量

写入变量

$getme = (Get-ADUser hexingxing).name

输出变量

$getme
何星星

数组阵列

写入数组

$myphone = "huawei","iphone","samsung","xiaomi","oppo","vivo","nubia","iqoo"

提取数组

$myphone
huawei
iphone
samsung
xiaomi
oppo
vivo
nubia
iqoo

参数:-join

$myphone = $myphone -join "/"
$myphone
huawei/iphone/samsung/xiaomi/oppo/vivo/nubia/iqoo

参数:-split

$myphone = $myphone -split "/"
$myphone
huawei
iphone
samsung
xiaomi
oppo
vivo
nubia
iqoo

日期运算

该主题内容将在以下专项文章更新:https://hexingxing.cn/get-date/

获取日期

-Format <String>

String
[yyyy][yy]
[MM]
[ddd]
[dd]
[hh][HH]
[mm]
[ss]
毫秒 [ms]
年月 [y]
日期 [m]
ISO 8601[s]

Get-Date -Format 'yyyy'
2022
(Get-Date).ToString("yyyy")
2022

获取月份

(Get-Date).Month
7

时间推算

[AddDays] [AddMonths] [AddYears]

向后推移

((Get-Date).AddDays(90))

2022 年 10 月 26 日 14:22:30

向前推移

(Get-Date).AddDays(-120)

2022 年 3 月 30 日 14:24:25

日期推算

(Get-Date).AddYears(-1)

2021 年 7 月 28 日 19:20:18

年份推算

(Get-Date).AddYears(-10).Year
2012

日期格式化

(Get-Date).ToString('yyyy/MM/dd')
2022/08/05
(Get-Date).ToString('yyyy/MM')
2022/08
(Get-Date).ToString('MM/dd')
08/05
(Get-Date).ToString('MM')
08
(Get-Date).ToString('dd')
05
(Get-Date).ToString('HH:mm')
16:50
(Get-Date).ToString('HH:mm:ss:ms')
16:55:05:535

实用技巧

相对于 Get-Command "<String>*" ,而不局限于标题名称,而是全文匹配。

-Verb 模糊匹配关键词

Get-Command -Verb out

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Out-Default                                        3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Out-File                                           3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Out-GridView                                       3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Out-Host                                           3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Out-Null                                           3.0.0.0    Microsoft.PowerShell.Core
Cmdlet          Out-Printer                                        3.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Out-String                                         3.1.0.0    Microsoft.PowerShell.Utility

Out-Null 屏蔽不必要的执行结果回显

Get-ADUser hexingxing | Select Name | Out-Null 

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注