创建将使用动态%username%

时间:2015-10-23 10:14:07

标签: 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%。有没有办法使这种动态,以便谁登录将有他们在网络上的共享的快捷方式?

2 个答案:

答案 0 :(得分:2)

使用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资源管理器,然后使用环境变量pre expansion指定目标路径。

答案 1 :(得分:0)

创建快捷方式 - >

seen = set()
lst = []

for i, v in enumerate(original):
    if not v in seen:
        lst.append(key[i])
        seen.add(v)
print(lst)

或用VBscript放置快捷方式