|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Список процессов на удаленной машине |
|
PowerShell - [решено] Список процессов на удаленной машине
|
Старожил Сообщения: 173 |
Добрый день.
Есть такой скрипт. Add-PSSnapin Quest.ActiveRoles.ADManagement $pslist = Get-QADComputer -name cl-ru-cla* foreach ($1 in $pslist) {Write-host $1.name; Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program files\*"}} Не могу передать по конвейру в out-file |
|
Отправлено: 16:45, 14-10-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата tarasov.evgeny:
foreach ($1 in $pslist) { Write-host $1.name; Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program files\*"} | Out-File -FilePath "C:\out.txt" -Append } |
|
Отправлено: 10:19, 15-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать Пытаюсь написать функцию
Function Mytest { $pslist = Read-Host "Введите переменную\имя компьютера:" Get-QADComputer -Name $pslist | Select-Object name} Function Mytest2 { $pslist = Read-Host "Введите переменную\имя компьютера:" $a = Get-QADComputer -Name $pslist | Select-Object name} foreach ($1 in $a) { Write-host $1.name; Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program files\*"} | Out-File -FilePath "C:\out.txt" -Append } т.е. мне нужно полученный результат передать в другой массив, чтобы его перебрать командой foreach |
Отправлено: 18:40, 15-10-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата tarasov.evgeny:
|
|
Отправлено: 11:20, 16-10-2010 | #4 |
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать Пытаюсь сделать две вещи.
Проверить включен ли компьютер, если выключен - скинуть информацию в файл , что компьютер такой-то выключен. Пытаюсь показать каждого пользователя на компьютере. Вот такой скрипт показывает пользователей Function GetProgramFiles { $pslist = Read-Host "Введите имя компьютера" $a = Get-QADComputer -Name $pslist #foreach ($1 in $a) {Get-WmiObject -Class Win32_ComputerSystem -ComputerName $1.name | Select-Object Username}; foreach ($1 in $a) {$1.name;Get-WmiObject -Class Win32_ComputerSystem -ComputerName $1.name | Select-Object Username; Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program Files*"} | Where-Object -FilterScript {$_.path -notlike "c:\PROGRA~1\*"} | Format-Table -wrap } Write-Host "Done"} Хотелось бы перенести данные за имя компьютера и получить только имя пользователя без домена и скобок. Странно в функции foreach идет сначала имя компьютера - $1.name, затем значение Username и потом уже показывается список процессов. А в выводе получается: список пользователей, затем имя и список процессов. PS > GetProgramFiles @{Username=domen\fedya} @{Username=domen\natasha} ... computer1 Path name ---- ---- System Idle Process System computer2 Path name ---- ---- System Idle Process System ... Function GetProgramFiles2 { $pslist = Read-Host "Введите имя компьютера. " IF (Test-Connection $pslist -Count 2 -Delay 2 -Quiet) { $a = Get-QADComputer -Name $pslist foreach ($1 in $a) {$1.name; Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program Files*"} | Where-Object -FilterScript {$_.path -notlike "c:\PROGRA~1\*"} | Where-Object -FilterScript {$_.path -notlike "C:\CRMCatpro\Office\MSACCESS.EXE"} | Where-Object -FilterScript {$_.path -notlike "C:\AdminSMSecr\Scripts\BlockProcess.exe"} | Format-Table -wrap } Write-Host "Done"} Else {"Компьютер выключен"}} |
|
Последний раз редактировалось tarasov.evgeny, 19-10-2010 в 14:44. Отправлено: 13:39, 19-10-2010 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата tarasov.evgeny:
Function GetProgramFiles{ $pslist = Read-Host "Введите имя компьютера:" $a = Get-QADComputer -Name $pslist ForEach ($1 in $a) { "---------------------" "Computer: " + $1.name Get-WmiObject Win32_ComputerSystem -ComputerName $1.name | ForEach-Object {"UserName: " + [regex]::replace($_.UserName,".*\\","")} "---------------------" Get-WmiObject Win32_Process -ComputerName $1.name | Where-Object {($_.path -notlike "c:\windows\*")` -and ($_.path -notlike "c:\Program Files\*")` -and ($_.path -notlike "c:\PROGRA~1\*")} | ForEach-Object {$_.Name} } } Цитата tarasov.evgeny:
|
||
Последний раз редактировалось amel27, 21-10-2010 в 02:44. Причина: очепятка Отправлено: 08:55, 20-10-2010 | #6 |
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать amel27, спасибо огромное
Ваш скрипт не работает пока у меня, но в нем есть информация как можно форматировать вывод. Чуть позже буду совмещать ваш скрипт, со скриптом ниже. Ошибку тоже скину... по поводу того, что test-connection нужно запихнуть во внутрь - меня сегодня ночью осенило, но не успел написать. Function GetProgramFiles2 { $pslist = Read-Host "Введите имя компьютера." $a = Get-QADComputer -Name $pslist foreach ($1 in $a) {IF (Test-Connection $1.name -Count 2 -Delay 2 -Quiet) { "---------------------------------" "Computer: " + $1.name Get-WmiObject Win32_ComputerSystem -ComputerName $1.name | ForEach-Object {"UserName: " + [regex]::replace($_.UserName,".*\\","")} "---------------------------------" Get-WmiObject -Class win32_process -ComputerName $1.name | Select-Object path,name | Where-Object -FilterScript {$_.path -notlike "c:\windows*"} | Where-Object -FilterScript {$_.path -notlike "c:\Program Files*"} | Where-Object -FilterScript {$_.path -notlike "c:\PROGRA~1\*"} | Where-Object -FilterScript {$_.Name -ne "System Idle Process"} | Where-Object -FilterScript {$_.Name -ne "System"} | Format-Table -wrap } Else { "---------------------------------" "Computer " + $1.name + " turn off:" "---------------------------------"}}} http://www.quest.com/powershell/activeroles-server.aspx Странно, что у вас нет Test-Connection. Я думал это стандартная функция. У меня Windows XP стоит и она есть. Дома есть Win7 - там тоже есть |
Последний раз редактировалось tarasov.evgeny, 20-10-2010 в 15:22. Причина: Нашел ошибку в своем скрипте. Исправил Отправлено: 13:10, 20-10-2010 | #7 |
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:44, 20-10-2010 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Выполнение скриптов на удаленной машине... в частности js | RUVATA | Скриптовые языки администрирования Windows | 12 | 15-10-2010 12:20 | |
CMD/BAT - [решено] запуск на удаленной машине bat-файл с помощью psexec | ejik_off | Скриптовые языки администрирования Windows | 10 | 16-09-2010 19:31 | |
Доступ - [решено] Microsoft Management Console. Запрещен доступ к оснасткам на удаленной машине. | Clever_man | Microsoft Windows 7 | 8 | 28-05-2010 10:03 | |
Интернет - Как отключить инет на удаленной машине? | surgutfred | Microsoft Windows 2000/XP | 2 | 29-08-2008 05:00 | |
Разное - настройки iexplorer через реестр на удаленной машине | choodo | Microsoft Windows 2000/XP | 2 | 14-08-2008 14:14 |
|