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として実行するか、現在のユーザーのアカウントとして実行するかを選択できます。

パッケージのプロパティを開き、[アカウント] に移動して、[現在のユーザーのアカウント] を選択します。マシンにログインしているユーザーがいない場合、タスクは失敗します。

しかし、私の理解が正しければ、問題は、ユーザーが自分のデスクトップにリンクを作成することを許可されていないことですか? もしそうなら、この解決策は機能せず、とにかくタスクは失敗します!

私がよく使用するもう 1 つの方法は、すべてのローカル プロファイルをループして各ユーザーのデスクトップにリンクを作成するスクリプトを実行することです。PowerShell スクリプトの代わりに WSH スクリプトを使用しても問題ない場合は、次のようなスクリプトを使用できます。

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 に答える