2016-03-17 5 views
1

Попытка скопировать обновленный ярлык в шаблон подстановки. Код работает, когда я запускаю его в тестовом сценарии на локальном компьютере:Powershell: путь назначения подстановочного символа копирования-объекта

$Source1 = "C:\Temp\Updated Shortcut\MyShortcut.lnk" 
$destination1 = "C:\Temp\Users\*\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\MyShortcut.lnk" 
Get-ChildItem -Path $destination1 | ForEach-Object { Copy-Item -Path $Source1 -Destination $_.DirectoryName } 

Но запустить его на целевой производственный путь не работает:

$Source1 = "C:\Temp\Updated Shortcut\MyShortcut.lnk" 
$destination1 = "U:\Users\*\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\MyShortcut.lnk" 
Get-ChildItem -Path $destination1 | ForEach-Object { Copy-Item -Path $Source1 -Destination $_.DirectoryName } 

Он также будет работать, если я удалить подстановочная и использовать реальный путь:

$Source1 = "C:\Temp\Updated Shortcut\MyShortcut.lnk" 
$destination1 = "U:\Users\JohnSmith\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\MyShortcut.lnk" 
Get-ChildItem -Path $destination1 | ForEach-Object { Copy-Item -Path $Source1 -Destination $_.DirectoryName } 

The U: \ Users папки действительно содержит 1181 папки есть (по одному для каждого из 1181 пользователей), так что не уверен, если это может быть проблема тоже ??

+0

Какие ошибки (если есть) вы получаете, когда пытаетесь использовать подстановочный знак? Вы пытались добавить -Verbose в Copy-Item, чтобы узнать, что происходит? – boeprox

+0

Я думаю, что запуск кода по WAN-ссылке может быть вызван тем, что он зависает или заставляет его, похоже, висеть. – Jez

ответ

3

Просто потому, что код может быть записан на одной строке или с использованием конвейера, не означает, что код легко отлаживать или поддерживать.

Перерыв код вниз, отладить его, добавить протоколирование и т.д.

$Source1 = "C:\Temp\Updated Shortcut\MyShortcut.lnk" 
$destination1 = "U:\Users\*\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\MyShortcut.lnk" 
$items = Get-ChildItem -Path $destination1 

Write-Verbose "Number of items: $($items.Count)" -Verbose 

foreach ($item in $items) 
{ 
    Write-Verbose "Item: $item" -Verbose 
    # use -Force here? Does $_ have a DirectoryName property? 
    # 
    #Copy-Item -Path $Source1 -Destination $_.DirectoryName 

    Copy-Item -Path $Source1 -Destination $item -Force -WhatIf 
} 

Я думаю, что как только вы начинаете искать в диагностике, вы будете изолировать проблемы быстро.

+0

Спасибо, Кори, я модифицировал свой код с вашими битами. На этот раз я запустил его с компьютера ближе к целевому серверу (я его запускал с моей машины, которая превышает 100-мегагерцовую WAN-ссылку), и похоже, что она сработала. – Jez