 |
|
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_
|
Если передать,как:
"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 не отвечает"
}
}
|
Код:
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.
© OSzone.net 2001-