【问题标题】:Powershell, URL shortcutPowershell,网址快捷方式
【发布时间】:2016-01-10 09:50:06
【问题描述】:

我有一个问题,我需要你的帮助。我正在尝试从活动 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。我的意思是,这怎么可能。我不明白。请帮忙。

【问题讨论】:

    标签: powershell


    【解决方案1】:

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

    $Shortcut.TargetPath = "$urls"
    

    你需要先选择一个url的第一个,例如:

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

    然后:

    $Shortcut = $WshShell.CreateShortcut("E:\Powershell\Ziel\short.lnk")
    $Shortcut.TargetPath = $url
    $Shortcut.Save()
    

    如果你想为每个 URL 的 Array 创建一个 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()
    }
    

    【讨论】:

    • 感谢您的回答。我试过这样: $url = $urls | ForEach-对象 {$_.LocationUrl} | select -First 1 $Shortcut = $WshShell.CreateShortcut("E:\Powershell\Ziel\short.lnk") $Shortcut.TargetPath = $urls $Shortcut.Save() 我仍然得到相同的快捷方式。这是我的资源管理器而不是 IE 的捷径。你知道为什么吗?
    • | select -First 1 行只是一个示例,仅使用一个 url,如果要添加多个 url/快捷方式,请使用第二个示例...
    • 是的,我明白这一点,但我没有从 URL 获得快捷方式。它创建的快捷方式来自资源管理器,这是我不明白的。
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2015-10-06
    相关资源
    最近更新 更多