2013-09-25 125 views
-1

有人可以檢查這個腳本,並指向正確的方向。雖然我沒有收到任何錯誤,但腳本無法按預期工作。我想實現一個快捷方式目標發生變化,按記錄user.My PowerShell的技能是基本的,我敢肯定,必須在這裏失去了一些邏輯: -Powershell取代快捷方式目標

#$shell = new-object -com wscript.shell 
$loguser="username" 
$link ="test1.lnk" 
$oldtarget=$link.tragetpath 
$oldpath="c:\notepad.exe" 
Get-ChildItem -Filter $link -Recurse 
if ($oldtarget -eq $oldpath) 
{ 
$csvfile=Import-csv "c:\test.csv" 
$newtarget=$row.newpath 
$user=$row.user 
(get-Content $csvfile) | foreach-object {$_.$user -match $loguser} | -replace  $oldtarget $newtarget 
} 
$link.SaveInfo 
+0

你能編輯你的問題並解釋一下你的腳本應該做什麼嗎? – JPBlanc

+0

您好我正在嘗試基於登錄用戶更改快捷方式目標路徑。腳本將運行並檢查登錄用戶,然後查找是否存在快捷方式,並比較目標路徑(如果目標路徑爲$ oldpath),則腳本將導入csv文件並查找用戶名(登錄用戶)第一行,第二行將爲新路徑。腳本將用newpath替換$ oldpath。謝謝 – Rajni

+0

這段代碼無法運行。對象屬性有誤(「tragetpath」),$ row從不定義,$ link.SaveInfo來自任何地方......請給你的*實際*代碼提供足夠的上下文來運行它。 –

回答

0

的一種方式更好的方式來修改快捷方式是讓擺脫VBScript shell並使用P/Invoke。在Poshcode中查看sample code。它包含大約1200行代碼,所以我不會在這裏複製它。

+0

謝謝我想堅持VBS或PowerShell的這項任務。有人可以請建議該怎麼辦謝謝 – Rajni

+0

@Rajni,代碼*是* Powershell。它恰好在內部使用.Net,這是一種完全有效的方法,在某些情況下,這是實現特定目標的唯一方法。 – vonPryz

+0

可以請你指導我到具體的腳本來實現這個任務或更近一些。 – Rajni