Windows Powershell 的 Microsoft.PowerShell.Core 管理单元中文文档
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core
Windows Powershell 基本语法
单个命令分行 `
连接多个命令 ;
管道函数 |
输入输出重定向
Windows Powershell Cmdlet / Function
PowerShell Cmdlet 通常以动词-名词的形式命名Get-Help
New-Item
Copy-Item
Cmdlet 可以接收和返回 .NET
对象
文件操作 Powershell Cmdlet 可以用 -Path
显式指定下一个参数为被操作文件的路径
Get-Help
获取帮助信息
查看某个命令的详细帮助信息Get-Help certutil
将返回命令 certutil
的详细帮助信息
Get-Command
使用通配符 *
搜索命令
在只记得命令的一部分的时候Get-Command New*
将返回所有以 New
开头的命令
New-Item
创建新的文件
New-Item...
等同于 linux bash 中的 touch ...
例如 New-Item helloworld.c
将在当前工作路径下创建一个名为 helloworld.c
的新文件
Get-ItemProperty
获取文件或文件夹的属性
Get-ItemProperty ...
将返回文件 ...
的属性
PS > Get-ItemProperty .\python-is-the-best-pl.md
目录: ...
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/5/1 16:42 502 python-is-the-best-pl.md
访问 CreationTime
与 LastWriteTime
属性将返回文件的创建/最后修改日期
PS > (Get-ItemProperty -Path .\python-is-the-best-pl.md).CreationTime
2024年5月1日 16:42:46
对返回的 .NET
对象使用 ToString()
方法可以将其转换为所需要的格式
PS > (Get-ItemProperty -Path .\python-is-the-best-pl.md).CreationTime.`
>> ToString("yyyy-MM-dd HH:mm:ss")
2024-05-01 16:42:46
Get-Command -Name
获取别名
(Get-Command -Name ...).Source
等同于 linux bash 中的 which ...
PS > Get-Command -Name g++
CommandType Name Version Source
----------- ---- ------- ------
Application g++.exe 0.0.0.0 C:\mingw64\bin\g++.exe
Windows Tools
利用 certutil
工具计算文件的哈希值
PS > certutil -hashfile .\hello.exe SHA256
SHA256 的 .\hello.exe 哈希:
17b6ba1b851e565769ec917b497e60b825f9ee79acd72f3ffed5a66777c79b66
CertUtil: -hashfile 命令成功完成
可选的哈希函数有 MD2
MD4
MD5
SHA1
SHA256
SHA384
SHA512
更多选项使用命令 certutil -hashfile -?
查看Get-Help certutil
查看
利用 dotnet
检查已安装的 .NET
SDK 与运行时
dotnet --list-sdks
dotnet --list-runtimes
利用 netsh
查看与修改 Windows 的 TCP 协议排除端口范围
在 Windows 的终端中通过 netsh int ip show excludedportrange protocol=tcp
查询操作系统的 TCP 协议被排除端口范围
通过 netsh int ip add excludedportrange protocol=tcp numberofports=1 startport=3121
为上面的范围添加排除项
注意需要先停止 NAT 服务 net stop winnat
执行成功后可以看到在 netsh int ip show excludedportrange protocol=tcp
查询的返回结果中3121
端口右侧出现了一个 *
PS > netsh int ip show excludedportrange protocol=tcp
协议 tcp 端口排除范围
开始端口 结束端口
---------- --------
3121 3121 *
5426 5426
50000 50059 *
* - 管理的端口排除.