windows - 创建将使用动态 %username% 的快捷方式

标签 windows powershell

我想在用户的桌面上创建一个快捷方式,该快捷方式将指向他们将在其中备份其 .pst 文件的共享。我借用了使用 %username% 变量创建快捷方式的代码,如果我以自己的身份登录运行它,它就可以工作。但是,当实际用户登录时,它仍然以我的名字作为用户,而不是当前登录的用户。我如何使它可变?

代码如下:

# Create a Shortcut with Windows PowerShell
$TargetFile = "\\fileserver\%username%$"
$ShortcutFile = "C:\Users\Public\Desktop\Mail.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()

当我登录时,代码有效并在桌面上创建了一个快捷方式。但是当另一个用户登录时,而不是使用他们的用户名 %username%,我的用户名在我运行脚本。有没有办法让它变得动态,以便无论谁登录,都可以通过快捷方式访问他们在网络上的共享?

最佳答案

使用 Windows 资源管理器作弊

这要归功于这位绅士 TechNet post .环境路径变量扩展可以很好地为路径添加前缀,但似乎不允许中间路径扩展。我不知道这种概括是否正确,但在实践中确实如此。

$TargetFile = "%windir%\explorer.exe" 
$arguments = '/e,"\\fileserver\%username%$"'
$ShortcutFile = "C:\Users\Public\Desktop\Mail.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Arguments = $arguments
$Shortcut.Save()

所以我们用 /e argument 调用 Windows 资源管理器然后用环境变量预扩展指定目标路径。

关于windows - 创建将使用动态 %username% 的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299926/

相关文章:

正则表达式 IF 条件

powershell - 如何在调用 Add-PSSnapin 之前检查 PowerShell 管理单元是否已加载

powershell - 可以从 ps1 文件中加载 ps1 文件吗?

c++ - 在 Windows 上的 C++ 中的 for 循环中创建多个目录

windows - RegisterClass 失败 : class already exits

python - py2exe:为什么不包括一些标准模块?

c - 如何使用全新的 Windows 副本在 C 语言中编译程序?无外部软件

windows - 通过双击或从 cmd 窗口检测 bat 文件是否正在运行

c# - 如何使 PSCmdlet bool 参数像标志一样工作?

bash - cd-vs cd ..说明