Powershell for Windows

18.08.2010

Получить список открытых файлов на удаленном сервере.

Filed under: PowerShell — Метки: , , , , , , — Yamshikov Pavel @ 10:58 дп

Вариант 1. Используем WMI

$server = «server»

$command = ‘cmd /k net file > c:\openfiles.txt’

([wmiclass]»\\$server\root\cimv2:Win32_Process»).create($command)

Start-Sleep 2

Invoke-Item \\$server\c$\openfiles.txt

# Remove-Item \\$server\c$\openfiles.txt

__________________________________________________________

Вариант 2. Используем ADSI.

$server = «server»

$adsi = [adsi]»WinNT://$server/LanmanServer»

$users = $adsi.psbase.invoke(«resources») | foreach {$_.gettype().invokeMember(«user»,»GetProperty»,$null,$_,$null)}

$paths = $adsi.psbase.invoke(«resources») | foreach {$_.gettype().invokeMember(«path»,»GetProperty»,$null,$_,$null)}

for($i = 0;$i -lt $users.length; $i++) { «{0}: {1}» -f $users[$i],$paths[$i] }

_____________________________________________________________

Вариант 3. Используем WS-Management.

winrm -r:fs C:\Windows\System32\openfiles.exe

Вариант 4. Сергей (AKA ShS) :

C:\Windows\System32\openfiles.exe /query /S <ComputerName>

Источник

Настройка прав доступа для выполнения запросов WMI на удаленной системе.

Filed under: PowerShell — Метки: , , , — Yamshikov Pavel @ 10:52 дп

Обычно удаленные запросы WMI делает администратор или человек, который имеет права администратора на удаленной системе. И это не вызывает никаких затруднений. А что если надо дать права обычной учетной записи для получения некоторой информации с удаленной системы посредством запроса WMI?

Тут надо учесть несколько моментов:

1.       Надо иметь сетевой доступ к удаленной системе. (Это не относится к правам администратора, но упомянуть про это надо обязательно). Фаервол разрешает доступ на локальной и удаленной системе (Remote management Enable) Для удаленной системы команда: netsh firewall set service RemoteAdmin enable

2.       Надо разрешить удаленный доступ для WMI. Настройка описана в статье Securing a Remote WMI Connection

3.       И самое интересное: даже если вы разрешили удаленный доступ по WMI это не значит, что вы сможете выполнить запрос WMI на удаленной системе! Дело в том, что WMI запустит какой-то провайдер для выполнения запроса и далее будет обращение к некоторым компонентам системы – вот на них тоже надо установить права доступа!

Аналогичная ситуация будет с другими запросами WMI: учетная запись, от имени которой выполняется запрос, должна иметь права доступа на соответствующие элементы удаленной системы.

Источник

01.06.2010

Получение списка членов локальной группы на всех компьютерах доменной сети.


function Seach-LocalGroupMemberDomenNetwork(){
param(
$Domen,
$GroupSID

)

function Ping ($Name){
$ping = new-object System.Net.NetworkInformation.Ping
if ($ping.send($Name).Status -eq "Success") {$True}
else {$False}
trap {Write-Verbose "Error Ping"; $False; continue}
}


[string[]]$Info
[string[]]$Computers


# Получам список компьютеров доменной сети
$Computers = Get-QADComputer -Service $Domen -OSName '*XP*','*Vista*','*7*' -SizeLimit 0 -ErrorAction SilentlyContinue |
Select-Object name -ExpandProperty name

foreach ($Computer in $Computers){
# Проверяем доступен компьютер или нет
$Alive = Ping $Computer
if ($Alive -eq "True"){Write-Host "Seach $Computer" -BackgroundColor Blue

# Получаем имя группы
Trap {Write-Host "Error WMI $Computer";Continue}
$GroupName = Get-WmiObject win32_group -ComputerName $Computer |
Where-Object {$_.SID -eq '$GroupSID'} |
Select-Object name -ExpandProperty name

if ($GroupName){
# Получаем список членов локальной группы
Trap {Write-Host "Error ADSI $Computer";Continue}
$Users = ([ADSI]"WinNT://$Computer/$GroupName").psbase.invoke("Members") |
% {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

# Записываем результаты
$Info += $Users | % {$_ | Select-Object @{e={$Computer};n='Computer'},@{e={$_};n='Login'}}
}
}
}
# Вывод результатов
$Info

}

Для переменой $GroupSID данные можно найти в документе Well-known security identifiers in Windows operating systems.

Пример:

Seach-LocalGroupMemberDomenNetwork -Domen Mydomen -GroupSID S-1-5-32-544
Получаем список пользователей локальной группы администраторов на всех компьютерах домена.

Блог на WordPress.com.