命令行环境下的 Windows
This is a placeholder for excerpt (there should be no excerpt for this post).
This post is a placeholder for the microsoft powershell learning notes. The content will be added later.
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
对象。这意味着可以将一个 cmdlet 的输出直接传递给另一个 cmdlet,而不需要解析文本或格式化输出。
文件操作 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
属性将返回文件的创建/最后修改日期:
对返回的 .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 -?
查看,或者在 Powershell 中使用 Get-Help certutil
查看。
利用 dotnet
检查已安装的 .NET
SDK 与运行时¶
利用 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
端口右侧出现了一个 *
: