2013-09-25 97 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