2016-01-10 100 views
0

我有一個問題,我需要你的幫助。我正在嘗試從活動網址做一個快捷方式。我嘗試了一些事情並做到了這一點。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() 

但是,沒有它告訴我, 「$快捷= $ WshShell.CreateShortcut(」 E:\ PowerShell的\ ZIEL \ short.lnk 「)」 有值爲NULL。我的意思是,那怎麼可能呢?我不明白。請幫忙。

回答

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的陣列的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() 
} 
+0

感謝您的回答。我試過這樣的: $ url = $ url | ForEach-Object {$ _。LocationUrl} |選擇 - 第一1 $快捷= $ WshShell.CreateShortcut( 「E:\ PowerShell的\ ZIEL \ short.lnk」) $ Shortcut.TargetPath = $網址 $ Shortcut.Save() 我仍然得到同樣的快捷方式。這是我的探索者而不是IE的捷徑。你知道爲什麼嗎? – Tobe

+0

'|如果你想添加多個網址/快捷方式使用第二個例子,選擇「第一條線」只是一個例子,只使用一個網址... – Avshalom

+0

是的,我明白這一點,但我沒有得到一個URL的快捷方式。它創建的捷徑是來自探險家,這是我不明白。 – Tobe