Windows Server Core 管理与 PowerShell 笔记(二)———— 导航文件系统
这里我们将会简单记录 PowerShell 目录浏览的相关命令。此外还将介绍 PowerShell 的广义启动器变量。
一、PowerShell 的启动器变量
众所周知,Windows 将磁盘驱动器分配盘符,并使用盘符加以访问,比如 C:, D: 等。在 Windows PowerShell 中,驱动器将拥有更加广泛的内涵。我们通过命令 Get-PSDrive
来列出系统中有那些驱动器:
PS C:\Users\ertuil> Get-PSDrive
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 16.34 23.33 FileSystem C:\ Users\ertuil
Cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
从 Name 属性,可以获知每一个驱动器的名称。比如 C、D 等。从 Provider 属性可以看到除了传统的文件系统 FileSystem 之外,还可以看到更多的属性。
- FileSystem 提供商用于挂在磁盘驱动器。这就是传统的 C: 等磁盘驱动器的映射。可以看到 Uesd 和 Free 属性是用量,而 Root 属性指定了挂在位置。
- Alias 驱动器,提供了 PowerShell Alias 虚拟目录,这个目录中记录了全部 Alias 的键值对,例如下面 Alias 记载了 wget 指向 Invoke-WebRequest 命令。
PS C:\Users\ertuil> cd Alias: ; Get-Item wget
CommandType Name Version Source
----------- ---- ------- ------
Alias wget -> Invoke-WebRequest
- Environment 驱动器保存了当前环境下全部的环境变量。注意的是,在这里修改环境变量并不会永久保存,我们可以使用像下面这样使用,来获取当前系统内核信息。
PS C:\Users\ertuil> $env:OS
Windows_NT
- Function 驱动器定义了 PowerShell 所定义的函数
- Variable 定义了 PowerShell 当前定义的变量
- Cert 映射了证书存放位置。
- Registry 驱动器是注册表驱动器,默认挂载了注册表中的 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 子树。
这些广义上的驱动器,给了我们统一的操作接口来新增、查询、删除、修改所有的文件、环境变量、函数、别名甚至注册表。下面将会详细介绍一些常用的 Comlet 调用。
二、驱动器浏览常用命令
2.1 列出当前目录(Get-ChildItem,Alias:ls,dir)
这个命令列出了当前文件夹下的所有子内容。Powershell 对这个命令由多个别名,保证不管是 Linux 还是 Windows 管理员都能顺利上手。
PS C:\Users\ertuil> ls
目录: C:\Users\ertuil
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/3/29 17:06 .conda
d----- 2019/3/29 18:48 .vscode
d-r--- 2019/3/29 14:53 3D Objects
d-r--- 2019/3/29 14:53 Contacts
d----- 2019/3/30 10:33 CTF
d-r--- 2019/3/30 10:33 Desktop
d-r--- 2019/3/30 10:33 Documents
d-r--- 2019/4/2 16:38 Downloads
d-r--- 2019/3/29 14:53 Favorites
d-r--- 2019/3/29 14:53 Links
d-r--- 2019/3/29 14:53 Music
d-r--- 2019/3/29 14:53 Pictures
d-r--- 2019/3/29 14:53 Saved Games
d-r--- 2019/3/29 14:53 Searches
d-r--- 2019/3/29 14:53 Videos
d----- 2019/3/30 10:18 WorkSpace
-a---- 2019/3/29 16:04 156 .condarc
通常情况下,我会使用 ls 来列出目录。注意其中的 Mode 属性,并不是 Linux 意义下的权限表示,而是文件类型,比如 ’d’ 代表目录,‘r’ 代表只读。
2.2 查看当前位置(Get-Location,Alias: pwd)和修改当前位置(Set-Location,Alias:cd)
这是一对对偶命令,使用 Get-Location 命令来查询当前位置,以及使用 Set-Location 来改变位置。我通常情况下习惯使用 pwd 和 cd 别名。值得注意的是,Linux 常用的 “.” , “..” , “~” 等标记依然可用。
2.3 查看文件内容(Get-Item 和 Get-Content,Alias:cat,和 more)
Get-Item
命令用于获取单个文件的信息,比如:Get-Item test.txt
等。另外有 Get-Content 命令可以查看文件的内容。他有一个别名叫做 cat
。
PS C:\Users\ertuil> cat .\test.txt
Hello,World
PowerShell
Windows Server Core
Microsoft
PowerShell 中也有 more 命令,可以查看较长的文本。
2.4 新建文件和文件夹(New-Item 和 mkdir)
新建文件和文件夹都是使用命令 New-Item。 其中,当使用参数 -Type Directory
时候,会新建文件夹。但是这样比较麻烦,因此 PowerShell 提供了 mkdir
来直接新建文件夹。
PS C:\Users\ertuil> mkdir a
目录: C:\Users\ertuil
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/4/4 21:59 a
PS C:\Users\ertuil> New-Item -Type Directory b
目录: C:\Users\ertuil
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/4/4 21:59 b
PS C:\Users\ertuil> New-Item c
目录: C:\Users\ertuil
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/4/4 21:59 0 c
2.5 删除文件和文件夹(Remove-Item,alias:rm)
删除文件和文件夹都是使用 Remove-Item 命令,也可以使用别名 rm。当文件夹有内容时,windows 会给出进一步操作提示:
PS C:\Users\ertuil> rm a
确认
C:\Users\ertuil\a 处的项具有子项,并且未指定 Recurse 参数。如果继续,所有子项均将随该项删除。是否确实要继续?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“Y”):
2.6 拷贝(Copy-Item,alias:copy,cp,ci)和移动(Move-Item,alias:mv,move,mi)
这两个命令使用基本上没有什么太大区别。因此不再介绍具体使用。只是要提示一句,Windows 的文件权限机制和 Linux 的并不相同,在移动文件和拷贝文件时,可能会产生权限的变化,
三、总结
这里主要介绍了 Windows PowerShell 的常见目录操作。由于使用了别名机制,使得我们能够通过使用与 Linux Shell 以及 Windows CMD 非常相似的命令来操作文件,直接减少了我们上手 PowerShell 的难度。
本人保留对侵权者及其全家发动因果律武器的权利
版权提醒
如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/ps2/。
如有其它需要,请邮件联系!版权所有,违者必究!