数学运算
执行外部命令
通过netstat查看网络端口状态
通过IPConfig查看自己的网络配置
route print查看路由信息
启动CMD控制台
查找可用的Cmd控制台命令
查看Powershell的环境变量
设置Powershell的环境变量
启动外部程序&
命令
命令类型
内置命令cmdlet
cmdlet的属性和方法
cmdlet的命令
别名
根据别名获取命令
查看可用的别名
创建自己的别名Set-Alias
删除自己的别名del alias:
导出别名Export-Alias
导入别名Import-Alias
保存自己的别名
通过函数扩展别名
003_PowerShell交互
参考:
数学运算
我们可以把powershell当成一个计算器。像键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。
- 加减乘除模(
+,-,*,/,%
)运算和小括号表达式
PS F: est1ddtest2> 1+2+3
6
PS F: est1ddtest2> 3.14*10*10
314
PS F: est1ddtest2> 1+3-(2.4-5)*(7.899-4.444)
12.983
- 进制转换
PS F: est1ddtest2> 0xABCD # 16进制转10进制
43981
- 自动识别计算机容量单位,包括KB,MB,GB,TB,PB,计算
PS C:pstest> 1pb/1tb
1024
PS C:pstest> 1tb/1gb
1024
PS C:pstest> 1gb/1kb
1048576
PS C:pstest> 1gb/20mb*10kb
524288
PS C:pstest> 80kb*800*30/1gb #假如一个网站每个页面大小为80kb,统计显示每天的PV操作为800,1个月下来占用的带宽
1.8310546875
PS C:pstest> 10GB/(80KB*5)/30 #假如一个网站的每天人均PV操作为5,页面大小为80Kb,主机提供商限制的总流量为10G,那平均每天的最大访客数
873.813333333333
执行外部命令
Powershell 能够像CMD一样很好的执行外部命令。
通过netstat查看网络端口状态
PS F: est1ddtest2> netstat
活动连接
协议 本地地址 外部地址 状态
TCP 127.0.0.1:1894 DESKTOP-TPFM5VI:1895 ESTABLISHED
TCP 127.0.0.1:1895 DESKTOP-TPFM5VI:1894 ESTABLISHED
TCP 127.0.0.1:1896 DESKTOP-TPFM5VI:1897 ESTABLISHED
TCP 127.0.0.1:1897 DESKTOP-TPFM5VI:1896 ESTABLISHED
TCP 127.0.0.1:1898 DESKTOP-TPFM5VI:1899 ESTABLISHED
通过IPConfig查看自己的网络配置
PS F: est1ddtest2> ipconfig
Windows IP 配置
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::c0b4:ca38:a5b8:9a9d%16
IPv4 地址 . . . . . . . . . . . . : 192.168.3.48
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.1.1
以太网适配器 VMware Network Adapter VMnet1:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::508:59c2:9a0:7de7%14
IPv4 地址 . . . . . . . . . . . . : 192.168.134.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::2d0e:1af3:1d78:5657%4
IPv4 地址 . . . . . . . . . . . . : 192.168.179.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
route print查看路由信息
PS F: est1ddtest2> route print
===========================================================================
接口列表
16...40 b0 34 3d 71 41 ......Intel(R) Ethernet Connection (2) I219-LM
14...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
4...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
1...........................Software Loopback Interface 1
===========================================================================
IPv4 路由表
===========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.1.1 192.168.3.48 291
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
192.168.3.0 255.255.255.0 在链路上 192.168.3.48 291
192.168.3.48 255.255.255.255 在链路上 192.168.3.48 291
192.168.3.255 255.255.255.255 在链路上 192.168.3.48 291
192.168.134.0 255.255.255.0 在链路上 192.168.134.1 291
192.168.134.1 255.255.255.255 在链路上 192.168.134.1 291
192.168.134.255 255.255.255.255 在链路上 192.168.134.1 291
192.168.179.0 255.255.255.0 在链路上 192.168.179.1 291
192.168.179.1 255.255.255.255 在链路上 192.168.179.1 291
192.168.179.255 255.255.255.255 在链路上 192.168.179.1 291
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 192.168.134.1 291
224.0.0.0 240.0.0.0 在链路上 192.168.179.1 291
224.0.0.0 240.0.0.0 在链路上 192.168.3.48 291
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 192.168.134.1 291
255.255.255.255 255.255.255.255 在链路上 192.168.179.1 291
255.255.255.255 255.255.255.255 在链路上 192.168.3.48 291
===========================================================================
永久路由:
网络地址 网络掩码 网关地址 跃点数
0.0.0.0 0.0.0.0 192.168.1.1 默认
===========================================================================
IPv6 路由表
===========================================================================
活动路由:
接口跃点数网络目标 网关
1 331 ::1/128 在链路上
14 291 fe80::/64 在链路上
4 291 fe80::/64 在链路上
16 291 fe80::/64 在链路上
14 291 fe80::508:59c2:9a0:7de7/128
在链路上
4 291 fe80::2d0e:1af3:1d78:5657/128
在链路上
16 291 fe80::c0b4:ca38:a5b8:9a9d/128
在链路上
1 331 ff00::/8 在链路上
14 291 ff00::/8 在链路上
4 291 ff00::/8 在链路上
16 291 ff00::/8 在链路上
===========================================================================
永久路由:
无
启动CMD控制台
启动CMD控制台键入cmd或者cmd.exe,退出cmd可以通过命令exit。
cmd的开头是
盘符:的路径
powershell的开头是
PS
PS F: est1ddtest2> cmd
Microsoft Windows [版本 10.0.18363.592]
(c) 2019 Microsoft Corporation。保留所有权利。
F: est1ddtest2>echo 现在是cmd的操作
现在是cmd的操作
F: est1ddtest2>exit
查找可用的Cmd控制台命令
Cmd.exe 通过 /c 来接收命令参数,在Cmd中help可以查看可用的命令,所以可以通过Cmd /c help 查找可用的Cmd控制台命令
PS F: est1ddtest2> cmd /c help
有关某个命令的详细信息,请键入 HELP 命令名
ASSOC 显示或修改文件扩展名关联。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
BCDEDIT 设置启动数据库中的属性以控制启动加载。
CACLS 显示或修改文件的访问控制列表(ACL)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。你不能转换
当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKPART 显示或配置磁盘分区属性。
DOSKEY 编辑命令行、撤回 Windows 命令并
创建宏。
DRIVERQUERY 显示当前设备驱动程序状态和属性。
ECHO 显示消息,或将命令回显打开或关闭。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个文件或两个文件集并显示
它们之间的不同。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。
FOR 为一组文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便用于 Windows。
FSUTIL 显示或配置文件系统属性。
FTYPE 显示或修改在文件扩展名关联中使用的文件
类型。
GOTO 将 Windows 命令解释程序定向到批处理程序
中某个带标签的行。
GPRESULT 显示计算机或用户的组策略信息。
GRAFTABL 使 Windows 在图形模式下显示扩展
字符集。
HELP 提供 Windows 命令的帮助信息。
ICACLS 显示、修改、备份或还原文件和
目录的 ACL。
IF 在批处理程序中执行有条件的处理操作。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建一个目录。
MKDIR 创建一个目录。
MKLINK 创建符号链接和硬链接
MODE 配置系统设备。
MORE 逐屏显示输出。
MOVE 将一个或多个文件从一个目录移动到另一个
目录。
OPENFILES 显示远程用户为了文件共享而打开的文件。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 暂停批处理文件的处理并显示消息。
POPD 还原通过 PUSHD 保存的当前目录的上一个
值。
PRINT 打印一个文本文件。
PROMPT 更改 Windows 命令提示。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从损坏的或有缺陷的磁盘中恢复可读信息。
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
ROBOCOPY 复制文件和目录树的高级实用工具
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始本地化批处理文件中的环境更改。
SC 显示或配置服务(后台进程)。
SCHTASKS 安排在一台计算机上运行命令和程序。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 允许通过本地或远程方式正确关闭计算机。
SORT 对输入排序。
START 启动单独的窗口以运行指定的程序或命令。
SUBST 将路径与驱动器号关联。
SYSTEMINFO 显示计算机的特定属性和配置。
TASKLIST 显示包括服务在内的所有当前运行的任务。
TASKKILL 中止或停止正在运行的进程或应用程序。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形方式显示驱动程序或路径的目录
结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 的版本。
VERIFY 告诉 Windows 是否进行验证,以确保文件
正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。
WMIC 在交互式命令 shell 中显示 WMI 信息。
查看Powershell的环境变量
PS F: est1ddtest2> $env:Path
C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:WINDOWSSystem32OpenSSH;C:Program Files (x86)ATI TechnologiesATI.ACECore-Static;C:softwarejdkin;E:software
ode;E:softwaremysql-5.7.27-winx64in;E:softwareSqlServerSqlServer(x86)110ToolsBinn;E:softwareSqlServerSqlServer110ToolsBinn;E:softwareSqlServerSqlServer110DTSBinn;E:softwareSqlServerSqlServer(x86)110ToolsBinnManagementStudio;C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEPrivateAssemblies;E:softwareSqlServerSqlServer(x86)110DTSBinn;C:Program Files (x86)VanDyke SoftwareClients;C:Program FilesGitcmd;C:Program Filesdotnet;E:softwareSqlServerSqlServer130ToolsBinn;E:softwarezookeeper-3.4.12in;C:Program Fileserl9.2in;C:Program FilesRabbitMQ Server
abbitmq_server-3.7.6sbin;E:softwareapache-tomcat-8.5.41in;C:Program FilesMongoDBServer4.0in;E:softwareprotoc-3.9.0-win32;E:softwareprotoc-3.9.0-win32in;E:softwareapache-maven-3.3.9in;E:softwaregradle6.5in;E:softwaregradle5.6.3in;E:softwaremysql-5.7.27-winx64in;E:softwaredartdevDartdart-sdkin;E:softwareflutter_windows_v1.12.13flutterin;E:softwareAndroid_sdk_idea ools;E:softwareAndroid_sdk_ideaplatform-tools;E:softwareAndroid_sdk_idea;E:softwareAndroid_sdk_ideauild-tools;E:softwareAndroid_sdk_ideacmdline-tools;E:softwareAndroid_sdk_ideadocs;E:softwareAndroid_sdk_ideaemulator;E:softwareapache-maven-3.3.9in;E:softwareTortoiseSVNin;C:Usersjsy1AppDataLocalProgramsPythonPython38Scripts;C:Usersjsy1AppDataLocalProgramsPython;C:Usersjsy1AppDataLocalProgramsPythonPython38Scripts;C:Usersjsy1AppDataLocalProgramsPythonPython38;C:Usersjsy1AppDataLocalMicrosoftWindowsApps;C:Usersjsy1AppDataRoaming
pm;C:Program Files (x86)VanDyke SoftwareClients;C:softwareideain;;;E:softwarevscodein;E:softwareBandizip
设置Powershell的环境变量
$env:Path=$env:Path+"新增的变量"
启动外部程序&
为什么可以通过notpad打开记事本,不能通过wordpad打开写字板?
因为notepad.exe位于C:Windowssystem32 这个目录,而这个目录已经默认被包含在Powershell的环境变量$env:Path中。而wordpad.exe 所在的“%ProgramFiles%Windows NTAccessorieswordpad.exe“目录却没有包含,可以先进入这个目录,再运行wordpad,或者将wordpad所在的目录加入到环境变量中,
$env:Path=$env:Path+"%ProgramFiles%Windows NTAccessories"
。
默认键入一个字符串,powershell会将它原样输出,如果该字符串是一个命令或者启动程序,在字符串前加‘&’可以执行命令,或者启动程序。
注意:字符串需要加上""
PS F: est1ddtest2> 你好 # 没有引号,报错
你好 : 无法将“你好”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试
一次。
所在位置 行:1 字符: 1
+ 你好
+ ~~
+ CategoryInfo : ObjectNotFound: (你好:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS F: est1ddtest2> "你好"
你好
PS F: est1ddtest2> "ls"
ls
PS F: est1ddtest2> & "ls"
目录: F: est1ddtest2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/8/13 9:07 3598 h.txt
-a---- 2020/8/13 10:21 122 test.txt
-a---- 2020/8/13 8:51 2 text1.txt
命令
具体命令位于: https://www.cnblogs.com/ziyue7575/p/6b42ca7ea3947b7ec9178400ef4f843a.html ,这里只是写了基础
命令类型
PowerShell命令有四种命令类型:cmdlet,Alias,Function,Application
Windows PowerShell命令类型
cmdlet
:内置命令Alias
:别名,可以用来缩短常见的较长的cmdlet,部分DOS命令会被解释为别名Function
:内置功能函数,用于简化cmdlet功能组合,也有部分DOS命令会被解释为函数Application
:应用程序,用来打开Windows的应用程序,也有部分DOS命令被解释为应用程序
内置命令cmdlet
内置的命令很多,比如
Get-Help
;
定义:
- Windows PowerShell的命令行
- 管理的最小单位
- 可以单独使用,也可以组合使用
构成:
- “动词-名词”结构,
比如
Get-Command
中: 动词:Get,名词:Command - tab键补齐机制
查询:(使用Get-Command
)
由于动词数量比名词少,所以通常情况下可以按照动词来获取命令.
比如:
# 查看动词为get的所有命令
Get-Command -Verb Get或者get # 动词不区分大小写
类型:
cmdlet的类型名为System.Management.Automation.CmdletInfo,包含下列属性和方法
cmdlet的属性和方法
运行这个命令,其中的CmdletInfo就是cmdlet的属性和方法
Get-Command -CommandType Cmdlet | Get-Member # 获取所有命令--| 获取属性,
cmdlet的命令
获取所有命令
Get-Command
别名
cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:
- 继承:继承unix-shell和windows-cmd。
- 方便:方便用户使用。
根据别名获取命令
语法:
Get-Alias -name 别名
比如:
PS C:Usersjsy1> Get-Alias -name ls
CommandType Name Version Source
----------- ---- ------- ------
Alias ls -> Get-ChildItem
PS C:Usersjsy1> Get-Alias -name dir
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
查看可用的别名
ls alias: 获取所有别名(冒号不能去掉)
Get-Alias 获取所有别名
比如:
- 查看所有以Remove打头的cmdlet的命令的别名
dir alias: | where {$_.Definition.Startswith("Remove")}
说明:
dir alias:
获取的是别名的数组,通过where
对数组元素进行遍历,$_
代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith
。通过where过滤集合在powershell中使用非常广泛。
- 查看所有别名和指向cmdlet的别名的个数。
ls alias: | Group-Object definition | sort -Descending Count
Count Name Group
----- ---- -----
6 Remove-Item {del, erase, rd, ri...}
3 Get-ChildItem {dir, gci, ls}
3 Get-History {ghy, h, history}
3 Copy-Item {copy, cp, cpi}
3 Invoke-WebRequest {curl, iwr, wget}
3 Set-Location {cd, chdir, sl}
3 Get-Content {cat, gc, type}
3 Move-Item {mi, move, mv}
2 Invoke-History {ihy, r}
2 Get-Process {gps, ps}
2 Rename-Item {ren, rni}
2 New-PSDrive {mount, ndr}
创建自己的别名Set-Alias
给记事本创建一个别名(Edit),并查看该别名;
PS C:PS> Set-Alias -Name Edit -Value notepad
PS C:PS> Edit
PS C:PS> $alias:Edit
notepad
删除自己的别名del alias:
别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用
del alias:Edit
导出别名Export-Alias
Export-Alias 文件名 #比如 xxx.ps1
导入别名Import-Alias
Import-Alias 文件名
强制导入 # 若是别名存在了,需要强制导入
Import-Alias -Force 文件名
保存自己的别名
可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入:
通过函数扩展别名
在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName
,让-Count 2
固化在别名中。
这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。
PS C:Usersjsy1> function test-conn { Test-Connection -Count 2 -ComputerName $args}
PS C:Usersjsy1> Set-Alias tc test-conn
PS C:Usersjsy1> tc localhost
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
DESKTOP-TP... localhost 127.0.0.1 ::1 32 0
DESKTOP-TP... localhost 127.0.0.1 ::1 32 0