Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проверить наличие файла и удалить

Ответить
Настройки темы
PowerShell - [решено] Проверить наличие файла и удалить

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый День!
Прошу помощи, необходимо определить наличие конкретного ярлыка расположенного в общем профиле пользователя (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
            }
}

Отправлено: 18:47, 08-04-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 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")
Мне только непонятна Ваша логика с проверкой.

Отправлено: 19:26, 08-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата Iska:
Мне только непонятна Ваша логика с проверкой. »
Тоже не понял, зачем проверять соединение, а потом у себя искать аc.lnk
Вам сначала надо получить список переменных другого компьютера, через WMI:
Код: Выделить весь код
get-wmiobject -class win32_environment -computer $server | select name,variablevalue

Отправлено: 19:42, 08-04-2016 | #3


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я конечно чайник в этом вопросе, но цель была такая:
Беру список
Код: Выделить весь код
$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
Собрать в условия не получается

Отправлено: 19:49, 08-04-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата antikvar2013:
а потом нужно я так думаю проверить какая ОС стоит »
Не нужно. Нужно получить доступ к удалённому управлению им — Wbem или WinRM. А затем уже можно будет пытаться играться с получением пути к тамошнему AllUsersDesktop и т.д.

Цитата antikvar2013:
проверить на рабочем столе … наличие этого файла и удалить его»
Можно просто тупо пытаться удалять, задав для командлета «… -ErrorAction SylentlyContinue» (пишу по памяти).

Отправлено: 20:07, 08-04-2016 | #5


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Через WinRM проще, но как понимаю нужно чтоб служба включена была на ПК.
Через Wbem мне в короткие сроки не освоить.
Может все таки можно через условия решить проблемку?

Отправлено: 09:53, 09-04-2016 | #6


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата antikvar2013:
Может все таки можно через условия решить проблемку? »
В вашем примере, вы проверяете наличие компьютера в сети, а потом на СВОЕМ компьютере ищите файл аc.lnk

Разберитесь с удаленным подключением (а не пингом машины в сети), только после этого можно говорить, как там удалять файлы.

Отправлено: 10:04, 09-04-2016 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проверить наличие файла и удалить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Проверить наличие файла в папке %Systemdrive% turbolover Скриптовые языки администрирования Windows 5 13-03-2016 20:45
CMD/BAT - [решено] проверить наличие файла на диске icq99999999 Скриптовые языки администрирования Windows 1 06-08-2013 16:29
Любой язык - проверить наличие папок alek2012 Скриптовые языки администрирования Windows 15 11-06-2013 23:28
CMD/BAT - [решено] Проверить наличие файла с текущей датой. OlegStarov Скриптовые языки администрирования Windows 4 21-04-2009 12:11
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50




 
Переход