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

Показать сообщение отдельно

Старожил


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

Профиль | Отправить 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               
...
вторая функция запихнута в if, но не работает с массивом, а только с одним значением:
Код: Выделить весь код
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