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

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

Ответить
Настройки темы
PowerShell - Скрипт удаленного удаления софта с компа в сети, выдает ошибку, но софт удаляет :/ ?!

Старожил


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

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


Здравствуйте,
Подскажите пожалуйста:
Есть скрипт удаленного удаления софта с указанного компьютера - по наименованию софта, но при выполнении "рандомом" может выдать ошибку непредвиденное исключение, подскажите пожалуйста почему так получается ?

Код: Выделить весь код
#Generated Form Function
function GenerateForm {
function listprograms {  

Get-WmiObject win32_product -ComputerName $text1.Text | Out-GridView  

}  

function remoteuninstall {  

$app = Get-WmiObject win32_product -ComputerName $text1.Text | Where-Object {$_.name -match $text2.Text}
$app.uninstall() | Select-Object -Property returnvalue
}

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$label2 = New-Object System.Windows.Forms.Label
$label1 = New-Object System.Windows.Forms.Label
$Text2 = New-Object System.Windows.Forms.RichTextBox
$Text1 = New-Object System.Windows.Forms.RichTextBox
$Button2 = New-Object System.Windows.Forms.Button
$Button1 = New-Object System.Windows.Forms.Button
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

#----------------------------------------------
#Generated Event Script Blocks
#----------------------------------------------
#Provide Custom Code for events specified in PrimalForms.
$Button1_OnClick=
{
#TODO: Place custom script here
remoteuninstall
}

$handler_label2_Click=
{
#TODO: Place custom script here

}

$handler_EnterComputerName_TextChanged=
{
#TODO: Place custom script here

}

$handler_label1_Click=
{
#TODO: Place custom script here

}

$handler_button2_Click=
{
#TODO: Place custom script here
listprograms

}

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
	$form1.WindowState = $InitialFormWindowState
}

#----------------------------------------------
#region Generated Form Code
$form1.BackColor = [System.Drawing.Color]::FromArgb(255,212,208,200)
$form1.Text = "Uninstall program"
$form1.Name = "form1"
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 490
$System_Drawing_Size.Height = 219
$form1.ClientSize = $System_Drawing_Size

$label2.TabIndex = 5
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 154
$System_Drawing_Size.Height = 23
$label2.Size = $System_Drawing_Size
$label2.Text = "Enter Application Name"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 271
$System_Drawing_Point.Y = 91
$label2.Location = $System_Drawing_Point
$label2.DataBindings.DefaultDataSourceUpdateMode = 0
$label2.Name = "label2"
$label2.add_Click($handler_label2_Click)

$form1.Controls.Add($label2)

$label1.TabIndex = 4
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 141
$System_Drawing_Size.Height = 23
$label1.Size = $System_Drawing_Size
$label1.Text = "Enter Computer Name"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 24
$System_Drawing_Point.Y = 92
$label1.Location = $System_Drawing_Point
$label1.DataBindings.DefaultDataSourceUpdateMode = 0
$label1.Name = "label1"
$label1.add_Click($handler_label1_Click)

$form1.Controls.Add($label1)

$Text2.Name = "Text2"
$Text2.Text = ""
$Text2.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 271
$System_Drawing_Point.Y = 36
$Text2.Location = $System_Drawing_Point
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 175
$System_Drawing_Size.Height = 29
$Text2.Size = $System_Drawing_Size
$Text2.TabIndex = 3

$form1.Controls.Add($Text2)

$Text1.Name = "Text1"
$Text1.Text = ""
$Text1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 24
$System_Drawing_Point.Y = 36
$Text1.Location = $System_Drawing_Point
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 175
$System_Drawing_Size.Height = 29
$Text1.Size = $System_Drawing_Size
$Text1.TabIndex = 2
$Text1.add_TextChanged($handler_EnterComputerName_TextChanged)

$form1.Controls.Add($Text1)

$Button2.TabIndex = 1
$Button2.Name = "Button2"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 75
$System_Drawing_Size.Height = 23
$Button2.Size = $System_Drawing_Size
$Button2.UseVisualStyleBackColor = $True

$Button2.Text = "List installed programs"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 371
$System_Drawing_Point.Y = 162
$Button2.Location = $System_Drawing_Point
$Button2.DataBindings.DefaultDataSourceUpdateMode = 0
$Button2.add_Click($handler_button2_Click)

$form1.Controls.Add($Button2)

$Button1.TabIndex = 0
$Button1.Name = "Button1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 75
$System_Drawing_Size.Height = 23
$Button1.Size = $System_Drawing_Size
$Button1.UseVisualStyleBackColor = $True

$Button1.Text = "Uninstall"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 24
$System_Drawing_Point.Y = 162
$Button1.Location = $System_Drawing_Point
$Button1.DataBindings.DefaultDataSourceUpdateMode = 0
$Button1.add_Click($Button1_OnClick)

$form1.Controls.Add($Button1)

#endregion Generated Form Code

#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm

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

 

Ветеран


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

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


Пока только несколько предположений:

1)Если не указаны поля,при выполнении функции
2)Get-WmiObject win32_product -ComputerName $text1.Text - Компьютер недоступен,поэтому можем получить ошибку
3)$app.uninstall() | Select-Object -Property returnvalue - Проблема во второй строке,то и тут получим ошибку,т.к. будет пустой объект и если программа не найдена тоже получим ошибку.

Поэтому стоит ограничить круг только одной функцией remoteuninstall и попробовать смоделировать результат,так же добавить доп.условия проверки.

function remoteuninstall {
param($comp,$prog)
$app = Get-WmiObject win32_product -ComputerName $comp| Where-Object {$_.name -match $prop}
$app.uninstall() | Select-Object -Property returnvalue
}

Отправлено: 21:21, 17-10-2012 | #2



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

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


Ветеран


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

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


dark-------13, какие ОС, какая версия Windows Installer на машинах («-ComputerName $text1.Text»), для которых возникает непредвиденное исключение?

Отправлено: 04:17, 18-10-2012 | #3


Старожил


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

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


Спасибо за помощь уважаемый Kazun, буду разбираться.

Уважаемый Iska - я на своей локальной машине пока пробовал, у меня WIN 7 x64, windows installer пока не смотрел, - сейчас пишу не из дома.

Отправлено: 07:55, 18-10-2012 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Помогите найти скрипт для удаленного удаления програм magwolf Скриптовые языки администрирования Windows 20 01-02-2016 23:35
Установка - Выдает ошибку keysib Microsoft Windows 7 6 18-12-2011 22:07
Вопрос - Антивирус выдает ошибку Shera_Best Защита компьютерных систем 10 08-09-2009 00:45
Загрузка - Dreamweaver 8 выдает ошибку... slava400 Microsoft Windows Vista 0 18-12-2008 13:37
Как загрузится с удаленного компа (то есть загрузка по сети) MJR Microsoft Windows 95/98/Me (архив) 2 09-01-2003 22:18




 
Переход