PowerShell 技能连载 - 识别用户 Profile

使用 $envuserprofile$home 创建用户文件的路径时要小心。当使用了 OneDrive,文档文件夹可能已重定向到名为“ OneDrive”的子文件夹。这里有些例子:

1
2
3
4
5
6
7
8
9
10
PS> $env:USERPROFILE
C:\Users\tobia

PS> $HOME
C:\Users\tobia

PS> $profile
C:\Users\tobia\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

PS>

如您所见,PowerShell 配置文件脚本并不直接位于用户配置文件内的 Documents 文件夹中。而是将其改为名为 “OneDrive” 的子文件夹。

要查找当前的 Documents 文件夹,请改用 GetFolderPath()

1
2
PS> [Environment]::GetFolderPath('MyDocuments')
C:\Users\tobia\OneDrive\Documents

您甚至可以使用它来确定 OneDrive 是否重定向了用户文件:

1
2
$redirected = [Environment]::GetFolderPath('MyDocuments') -like '*\OneDrive\*'
$redirected

当 OneDrive 重定向文件夹时,此命令返回 $true,否则返回 $false

评论