1

我的用户帐户文件已移动到它自己的磁盘(即 D:\foo),我使用了推荐的做法,即通过使用 Windows 资源管理器中的属性/位置功能来移动桌面等特殊目录。现在在powershell中,找不到~/Desktop、~/Document等。

我认为重新映射波浪号可以工作,但我找不到如何做到这一点,无论如何,我不确定这是否是最佳做法。

Powershell 大师,你能帮忙吗?

4

4 回答 4

1

感谢您的回答。事后看来,我并不清楚我的意思是这个问题是在交互式设置的上下文中,例如当你在做诸如“cd ~/Desktop”或“cp ~/Desktop/foo.txt”之类的事情时。在 Powershell 窗口中。我认为收到的关于环境变量的答案(谢谢!)更适合 Powershell 脚本(即 foo.ps1)。

无论如何,我在这篇文章中找到了答案,并将这两个衬垫添加到我的启动脚本中。现在 "cd ~/Desktop" 转到 D:\foo\Desktop

http://www.vistax64.com/powershell/31790-override-filesystem-providers-treatment-tilde.html

$provider = get-psprovider filesystem
$provider.Home = 'D:\foo'
于 2013-04-01T02:32:26.363 回答
1

我喜欢你的回答,hlo,但我不喜欢用不必要的变量污染我的个人资料。我将其简化为我的个人资料:

(get-psprovider filesystem).Home = "C:\Users\fez"

现在,如果我能弄清楚为什么~并且$HOME不解决与和相同的$env:home位置%HOME%

于 2013-04-15T12:47:00.837 回答
1

默认情况下,PowerShell 配置为将“~”解析为您的用户配置文件文件夹。通常,这是“c:\users\”。

但是,如果您在机器或环境中运行,其 home/user-profile 文件夹已移动到“c:\users...”以外的其他位置,则 PowerShell 可能无法找到用户配置文件文件夹.

将您的用户配置文件文件夹移动到不同的位置可能会破坏许多应用程序,事实上,在 Win8.1 中,除了导致 PowerShell 无法正常工作外,还被认为是导致大量应用程序崩溃、系统不稳定等的原因.

Ed Bott 最近就这个问题撰写了微软最新更新的官方指南:

不要将您的 Windows 用户配置文件文件夹移动到另一个驱动器

您可以使用 Fez & HLO 给出的答案告诉 PowerShell 它应该在哪里查找您的主文件夹:

(get-psprovider filesystem).Home = "C:\Users\<user>"

您可能需要将上面的命令添加到您的默认 PowerShell 用户配置文件中,这样您就不必继续输入上面的行:

C:\Users\<user>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

如果您想移动文档、照片等的位置,将新文件夹的位置添加到相应的库中可能更有意义。那样。任何需要写入用户配置文件根目录的东西(例如 Git、SSH 等)都可以这样做,而任何需要写入 doc/photo/music 文件的东西都可以透明地重定向到备用位置。

HTH。

于 2013-11-14T17:54:31.647 回答
0

Powershell 将接受~用户的主目录,但由于我不记得使用它不是一个好主意的原因。

此处其他答案中链接的环境变量可从 PowerShell 获得,但不要使用%VARNAME%语法 - 那是批处理。使用Env:PSProvider - 因此用户主目录$Env:USERPROFILE位于 PowerShell 中。您可以使用 . 查看所有当前定义的环境变量get-childitem env:

于 2013-03-29T02:22:03.310 回答