2

我有一个使用 LANDesk 部署的脚本,在该脚本中,它调用了一个 powershell 脚本来为用户桌面上的网络文件夹添加快捷方式。LANDesk 登录以使用本地计算机帐户运行脚本,但我不希望将快捷方式放在该桌面上,而是放在当前登录用户的桌面上。有没有办法在 powershell 中执行此操作?

如果您以登录用户身份运行脚本,这是我添加快捷方式的代码(不能以用户身份运行,因为他们没有管理员权限)

$wshshell = new-object -comobject WScript.Shell
$Ink = $wshshell.CreateShortcut("$home\Desktop\PI_Users.lnk")
$Ink.TargetPath = "\\htntfs04\PI_Users"
$Ink.Save()

提前感谢您的帮助。

4

2 回答 2

1

如果您正在使用 LANDesk,并且您正在使用一个包来分发脚本,您可以选择作为默认的LocalSystem或作为当前用户的帐户来执行脚本。

只需打开包的属性,转到 Accounts 并选择"Current user's account"。如果没有用户登录到机器,任务将失败。

但是,如果我理解正确,问题是不允许用户在自己的桌面上创建链接?如果是这样,此解决方案将不起作用,并且任务无论如何都会失败!

我经常使用的另一种方法是执行一个脚本,该脚本循环遍历所有本地配置文件并在每个用户的桌面上创建一个链接。如果您可以使用 WSH 脚本而不是 powershell 脚本,您可以使用如下内容:

Const HKEY_LOCAL_MACHINE = &H80000002

Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
Set ws = CreateObject("Wscript.Shell")

strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys

For Each objSubkey In arrSubkeys
  strValueName = "ProfileImagePath"
  strSubPath = strKeyPath & "\" & objSubkey
  objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE, strSubPath, strValueName, strProfile

  If Left(strProfile, Len(ws.ExpandEnvironmentStrings("%windir%"))) <> ws.ExpandEnvironmentStrings("%windir%") Then
    Set objShtCut = ws.CreateShortcut(strProfile & "\Desktop\PI_Users.lnk")
    objShtCut.TargetPath = "\\htntfs04\PI_Users"
    objShtCut.Save
    Set objShtCut = Nothing
  End If
Next
于 2012-10-15T21:39:54.183 回答
0

你不能[Environment]::GetFolderPath("Desktop")用来获取当前用户的桌面路径吗?

于 2012-07-05T18:51:52.387 回答