我遇到问题,需要你的帮助。我正在尝试从活动URL创建快捷方式。我试了几件事,终于做到了。
Param([switch]$Full, [switch]$Location, [switch]$Content)
$urls = (New-Object -ComObject Shell.Application).Windows() |
Where-Object {$_.LocationUrl -match "(^https?://.+)|(^ftp://)"} |
Where-Object {$_.LocationUrl}
if($Full)
{
$urls
}
elseif($Location)
{
$urls | select Location*
}
elseif($Content)
{
$urls | ForEach-Object {
$ie.LocationName;
$ie.LocationUrl;
$_.Document.body.innerText
}
}
else
{
$urls | ForEach-Object {$_.LocationUrl}
}
$Shortcut = $WshShell.CreateShortcut("E:PowershellZielshort.lnk")
$Shortcut.TargetPath = "$urls"
$Shortcut.Save()
但我得到了一条毫无意义的捷径。我做错了什么?我对任何建议都很满意。
我现在试着这样做:
Param([switch]$Full, [switch]$Location, [switch]$Content)
$urls = (New-Object -ComObject Shell.Application).Windows() |
Where-Object {$_.LocationUrl -match "(^https?://.+)|(^ftp://)"} |
Where-Object {$_.LocationUrl}
if($Full)
{
$urls
}
elseif($Location)
{
$urls | select Location*
}
elseif($Content)
{
$urls | ForEach-Object {
$ie.LocationName;
$ie.LocationUrl;
$_.Document.body.innerText
}
}
else
{
$urls | ForEach-Object {$_.LocationUrl}
}
$url = $urls | ForEach-Object {$_.LocationUrl} | select -First 1
$Shortcut = $WshShell.CreateShortcut("E:PowershellZielshort.lnk")
$Shortcut.TargetPath = $url
$Shortcut.Save()
但不,它告诉我"$Shortcut=$WshShell.CreateShortcut("E:\Powershell\Ziel\short.lnk")"的值为NULL。我的意思是,这怎么可能。我不明白。请帮忙。
这个错误。。。(这不是一个有效的url,它只是一个对象数组)
$Shortcut.TargetPath = "$urls"
您需要选择url的第一个,例如:
$url = $urls | ForEach-Object {$_.LocationUrl} | select -First 1
然后:
$Shortcut = $WshShell.CreateShortcut("E:PowershellZielshort.lnk")
$Shortcut.TargetPath = $url
$Shortcut.Save()
如果要为每个url的数组创建一个url,则可以使用foreach,像这样:
foreach ($url in $URLs)
{
$UrlName = $url.LocationName.Substring(0,8)
$Link = $url.LocationUrl
$Shortcut = $WshShell.CreateShortcut("E:PowershellZiel$UrlName.lnk")
$Shortcut.TargetPath = $Link
$Shortcut.Save()
}