Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Есть скрипт - Удаление папки с компьютера в локальной сети - подскажите пожалуйста.. (http://forum.oszone.net/showthread.php?t=244743)

dark-------13 15-10-2012 20:11 2006003

Есть скрипт - Удаление папки с компьютера в локальной сети - подскажите пожалуйста..
 
Здравствуйте,
Подскажите пожалуйста:
Есть скрипт удаляющий папку или несколько папок (и даже файлов) с указанного компьютера в сети. Вопрос будет ли работать скрипт с несколькими машинами, если у казать компьютеры через запятую 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_


Kazun 15-10-2012 22:47 2006137

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

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

dark-------13 16-10-2012 09:44 2006285

Попробовал свой вариант скрипта не работает, попробовал ваш вариант, уважаемый 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 не отвечает"
    }
}


Kazun 16-10-2012 10:41 2006329

Код:

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 не отвечает"
                }
        }
}


dark-------13 16-10-2012 19:30 2006637

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


Время: 15:35.

Время: 15:35.
© OSzone.net 2001-