Пытаюсь сделать две вещи.
Проверить включен ли компьютер, если выключен - скинуть информацию в файл , что компьютер такой-то выключен.
Пытаюсь показать каждого пользователя на компьютере.
Вот такой скрипт показывает пользователей
Код:

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 {"Компьютер выключен"}}