Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
PowerShell - [решено] Есть скрипт - Удаление папки с компьютера в локальной сети - подскажите пожалуйста..

Старожил


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

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


Изменения
Автор: dark-------13
Дата: 15-10-2012
Здравствуйте,
Подскажите пожалуйста:
Есть скрипт удаляющий папку или несколько папок (и даже файлов) с указанного компьютера в сети. Вопрос будет ли работать скрипт с несколькими машинами, если у казать компьютеры через запятую PK-New, PK-New2, PK-New3 ?

Код: Выделить весь код
function Deleted-ObjectLocalNetwork(){
param (
$Computer, #IP или Имя удаленного компьютера
[String[]]$SeachObjectDeleted #Объект (папка, файл) для удаления.
)

#Поиск логических дисков на компьютере.
$Disks = $null
trap {Write-Host “Error WmiObject $Computer”;Continue}
$Disks += Get-WmiObject Win32_Logicaldisk -ComputerName $Computer | Where-Object {$_.Size -ne $null}

foreach ($Disk in $Disks){

    #В имени диска заменяем “:” на “$”
    if ($Disk.Name -like “*:*”) {$Disk = $Disk.Name.replace(“:”,“$”)}
    #Загружаем в массив данные логического диска.
    $Info = $null
    trap {Write-Host “Error ChildItem $Computer”;Continue}
    $Info += Get-ChildItem “\\$Computer\$Disk\*” -recurse -ErrorAction SilentlyContinue

    if ($Info -ne $null){

        #Удаляем Объект (папка, файл) из всех расположений логического диска.
        foreach ($Folder in $SeachObjectDeleted){
        $Info | Where-Object {$_.Name -like $Folder} | % {Remove-Item $_.FullName -Recurse -Force -ErrorAction SilentlyContinue}
        }

    }
    else {Write-Host “$SeachObjectDeleted Not Found”
    }

}}



Deleted-ObjectLocalNetwork -Computer PK-New -SeachObjectDeleted Papka_

Отправлено: 20:11, 15-10-2012

 

Ветеран


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

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


Если передать,как:
"PK-New"," PK-New2", "PK-New3" | Foreach {Deleted-ObjectLocalNetwork -Computer $_ -Seach "file.txt"}

А так если добавить [string[]]$Computer и дополнительный цикл foreach.Условия trap не будут отрабатывать.

Отправлено: 22:47, 15-10-2012 | #2



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

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


Старожил


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

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


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


А вот такой скрипт работает на ура
Код: Выделить весь код
[CmdLetBinding()]
param($files = ("test007"))

foreach ($i in 15,16)
{
    $pc = "192.168.1.$i"
    if (Test-Connection $pc -Count 2 -Quiet)
    {
        Write-Verbose "осуществляется поиск на $pc"
        Get-ChildItem "\\$pc\c$" -Recurse -Force | Where {$files -contains $_.name} | Remove-Item -Force -Confirm:$false
    }
    else 
    {
        Write-Verbose "$pc не отвечает"
    }
}

Отправлено: 09:44, 16-10-2012 | #3


Ветеран


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

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


Код: Выделить весь код
function Deleted-ObjectLocalNetwork {
	[CmdLetBinding()]
	param (
		[String[]]$ComputerName, #IP или Имя удаленного компьютера
		[String[]]$SeachObjectDeleted #Объект (папка, файл) для удаления.
	)

	foreach($Computer in $ComputerName)
	{
		if (Test-Connection $Computer -Count 2 -Quiet)
		{
			Write-Verbose "осуществляется поиск на $computer"
			trap {Write-Host "Error WmiObject $Computer";Continue}
			$Disks = Get-WmiObject Win32_Logicaldisk -Filter "Size > 0 and DriveType=3" -ComputerName $Computer -ErrorAction Stop
			
			foreach ($Disk in $Disks){

				$Disk = $Disk.Name.replace(":","$")
				Write-Verbose "Загружаем в массив данные логического диска \\$Computer\$Disk"
				$Info = Get-ChildItem "\\$Computer\$Disk" -Recurse -ErrorAction SilentlyContinue
				$Info | Where-Object {$SeachObjectDeleted -contains $_.Name} | Foreach {Remove-Item $_.FullName -Recurse -Force -Verbose}
			}
		}
		else 
		{
			Write-Verbose "$computer не отвечает"
		}
	}
}

Последний раз редактировалось Kazun, 16-10-2012 в 10:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:41, 16-10-2012 | #4


Старожил


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

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


Спасибо за помощь уважаемый Kazun, скрипт работает отлично .

Отправлено: 19:30, 16-10-2012 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Скрипт для подключения локальной папки как диска. grafgeest Скриптовые языки администрирования Windows 2 22-07-2011 13:32
Прочее - [решено] Подскажите пожалуйста есть ли на роутере port-forwarder? BROTHERHOOD Сетевые технологии 2 28-06-2009 12:54
Вопрос - настройка компов в локальной сети для обновления из локальной папки WChek Защита компьютерных систем 4 08-02-2009 10:46
Доступ - Не видно компьютеров в локальной сети Zak0n Microsoft Windows Vista 23 06-07-2008 14:37
Прочее - Нет пинга от компьютеров в локальной сети. Maxwell_Forrest Сетевые технологии 4 10-03-2008 20:27




 
Переход