Powershell,网址快捷方式

时间:2016-01-10 09:50:07

标签: powershell

我遇到了问题,我需要你的帮助。我正在尝试从活动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:\Powershell\Ziel\short.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:\Powershell\Ziel\short.lnk")
$Shortcut.TargetPath = $url
$Shortcut.Save()

但是没有它告诉我“$ Shortcut = $ WshShell.CreateShortcut(”E:\ Powershell \ Ziel \ short.lnk“)”的值为NULL。我的意思是,这怎么可能。我不明白。请帮忙。

1 个答案:

答案 0 :(得分:1)

这个错误......(这不是一个有效的网址,只是一个对象数组)

$Shortcut.TargetPath = "$urls"

您需要先选择其中一个网址,例如:

$url = $urls | ForEach-Object {$_.LocationUrl} | select -First 1

然后:

$Shortcut = $WshShell.CreateShortcut("E:\Powershell\Ziel\short.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:\Powershell\Ziel\$UrlName.lnk")
    $Shortcut.TargetPath = $Link
    $Shortcut.Save()
}