antikvar2013 |
08-04-2016 18:47 2624500 |
Проверить наличие файла и удалить
Добрый День!
Прошу помощи, необходимо определить наличие конкретного ярлыка расположенного в общем профиле пользователя (OS разные) на рабочем столе и удалить его.
Предварительно включить проверку доступности ПК. После многих попыток все это собрать в одно целое, получилось только 1/3. Проверку доступности проходит, остальное нет.
Еще понять не могу как прикрутить определить какая OS (так как зависит путь к рабочему столу)
Код:
$Computers = Get-Content -Path d:\ps.txt
foreach ($Server in $Computers)
{
if (test-Connection -ComputerName $Server -Count 2 -Quiet)
{
write-Host "$Server; доступен" -ForegroundColor Green
}
elseif (test-path -path "$env:allusersprofile\desktop\аc.lnk")
{
Write-Host "$Server; Есть файл" -ForegroundColor Green
}
else
{
Write-Host "$Server; Нет такого файла" -ForegroundColor Red
}
}
|
Цитата:
Цитата antikvar2013
Еще понять не могу как прикрутить определить какая OS (так как зависит путь к рабочему столу) »
|
Путь к Рабочему столу зависит не от ОС, а от применения правильных методов, например: Easily Finding Special Paths for PowerShell Scripts | PowerShell content from Windows IT Pro (потребует .Net Framework 4 для наличия потребного свойства). Более простой и рабоче-крестьянский вариант — использование объектов старого доброго WSH:
Код:
(New-Object -ComObject WScript.Shell).SpecialFolders.Item("AllUsersDesktop")
Мне только непонятна Ваша логика с проверкой.
|
Цитата:
Цитата Iska
Мне только непонятна Ваша логика с проверкой. »
|
Тоже не понял, зачем проверять соединение, а потом у себя искать аc.lnk
Вам сначала надо получить список переменных другого компьютера, через WMI:
Код:
get-wmiobject -class win32_environment -computer $server | select name,variablevalue
|
antikvar2013 |
08-04-2016 19:49 2624521 |
Я конечно чайник в этом вопросе, но цель была такая:
Беру список
Код:
$Computers = Get-Content -Path d:\ps.txt
Потом пытаюсь проверить ПК на доступность
Код:
if (test-Connection -ComputerName $Server -Count 2 -Quiet)
Он мне говорит я доступен, а потом нужно я так думаю проверить какая ОС стоит и проверить на рабочем столе
Код:
test-path -path "$env:allusersprofile\desktop\аc.lnk"
наличие этого файла и удалить его например через Rename-Item
Собрать в условия не получается
|
Цитата:
Цитата antikvar2013
а потом нужно я так думаю проверить какая ОС стоит »
|
Не нужно. Нужно получить доступ к удалённому управлению им — Wbem или WinRM. А затем уже можно будет пытаться играться с получением пути к тамошнему AllUsersDesktop и т.д.
Цитата:
Цитата antikvar2013
проверить на рабочем столе … наличие этого файла и удалить его »
|
Можно просто тупо пытаться удалять, задав для командлета «… -ErrorAction SylentlyContinue» (пишу по памяти).
|
antikvar2013 |
09-04-2016 09:53 2624598 |
Через WinRM проще, но как понимаю нужно чтоб служба включена была на ПК.
Через Wbem мне в короткие сроки не освоить.
Может все таки можно через условия решить проблемку?
|
Цитата:
Цитата antikvar2013
Может все таки можно через условия решить проблемку? »
|
В вашем примере, вы проверяете наличие компьютера в сети, а потом на СВОЕМ компьютере ищите файл аc.lnk
Разберитесь с удаленным подключением (а не пингом машины в сети), только после этого можно говорить, как там удалять файлы.
|
Время: 04:06.
© OSzone.net 2001-