2012-07-05 76 views
2

我有一個腳本,我使用LANDesk進行部署,並在腳本中調用PowerShell腳本將快捷方式添加到用戶桌面上的網絡文件夾。 LANDesk登錄以使用本地計算機帳戶運行腳本,但我不想將該快捷方式放在該桌面上,而是放在當前登錄的用戶的桌面上。是否有方法在PowerShell中執行此操作?使用powershell獲取當前登錄用戶以添加桌面快捷方式

這裏是我添加快捷方式代碼,如果你運行該腳本作爲登錄的用戶(因爲他們沒有管理員權限無法自己管理的用戶)提前

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

謝謝求助。

回答

0

難道您不能使用[Environment]::GetFolderPath("Desktop")獲取當前用戶的桌面路徑嗎?

+0

當藍代斯克部署它運行腳本以本地管理員帳戶(而不是最終用戶)的腳本。雖然用戶已登錄,但他們不被視爲「當前用戶」,因此他們$ env將返回最終用戶無法訪問的管理員帳戶的桌面。 – bilestrojanman 2012-07-05 19:13:21

1

如果您在使用藍代斯克和您使用的是包分發腳本,可以執行腳本一樣本地系統這是默認的,或者作爲當前用戶帳號之間進行選擇。

只需打開包裝的屬性,轉到帳戶並選擇「當前用戶的帳戶」。如果沒有用戶登錄到機器,該任務將失敗。

但是,如果我理解正確,問題是用戶不允許在自己的桌面上創建鏈接?如果是這樣,這個解決方案將無法工作,並且任務無論如何都會失敗!

我經常使用的另一種方法是執行一個腳本,它遍歷所有本地配置文件並在每個用戶的桌面上創建一個鏈接。如果它的好供您使用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