Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» PowerShell

Автор: TCPIP
Дата сообщения: 10.06.2009 01:40
Refugee

Цитата:
проще МСДН посмотреть

В данном случае да. Хотя вот... по флагу написано следующее:

Цитата:
The ACE is inherited by child container objects

И то, лишь в разделе на немецком языке.

Цитата:
будет наследоваться подпапкой, не имеющей AreAccessRulesProtected

Точнее, AreAccessRulesProtected = FALSE, так?
Автор: Refugee
Дата сообщения: 10.06.2009 02:04
я в platform SDK смотрел, в .NET разделе действительно что-то непонятное
NoPropagateInherit    Проверка прав доступа не применяется к данному объекту. Она применяется только к его дочерним объектам. // применяется, но у унаследовавших сбрасываются флаги наследования
InheritOnly    Маска доступа распространяется только на дочерние объекты. К ним относятся контейнеры и конечные дочерние объекты // но не применяется к самому объекту

вообще, по названиям флагов и так понятно

Цитата:
Точнее, AreAccessRulesProtected = FALSE, так?

да
если точнее, то (SECURITY_DESCRIPTOR_CONTROL) & SE_DACL_PROTECTED == 0
Автор: TCPIP
Дата сообщения: 11.06.2009 01:07
Refugee

Цитата:
я в platform SDK смотрел, в .NET разделе действительно что-то непонятное

Хм. Разумно. Вы сразу пошли смотреть сами флаги ACE. Спасибо за наводку.
А как эти структуры выцыганить-то? Чтобы на них вживую посмотреть?
Автор: Refugee
Дата сообщения: 11.06.2009 03:22
TCPIP
там в другом разделе описания функций есть.
вообще это офтоп здесь.
Автор: fedich
Дата сообщения: 15.06.2009 03:06
Уважаемые, извини если пишу не в том разделе. Мне нужен совет ил толчок в нужном направлении. Я не программист, но ситуация такая:
Есть программа, которая может вызывать любое стороннее приложение (файл). Идея в том, что мне нужно вызвать на экран окошко с 2 кнопками - Да/Нет и передать результат обратно в нужную программу. Например я могу вызвать ping ya.ru и если пинг прошел - то в программу передается 0, если нет то 1.
Ткните носом, куда смотреть для быстрого создания такой "программы"

Заранее Вам спасибо.
Автор: TCPIP
Дата сообщения: 15.06.2009 22:24
Refugee

Цитата:
там в другом разделе описания функций есть.
вообще это офтоп здесь.

Ну почему же, весьма ontopic (kinda that). Кстати, вот где, например взять Windows PowerShell SDK? Как я понимаю MSFT только в последнем WinSDK?
Вот здесь написано, как скачать только PoSH SDK для PoSH 1.x. А что делать с PoSH 2? Он есть в SDK для Windows 7?

Добавлено:
fedich

Цитата:
но ситуация такая

Честно говоря, из вашего описания тяжеловато понять постановку задачи (не могли бы вы переформулировать как-нибудь что-ли?), но на вскидку вот статья: Ouput redirection/capturing issue with Powershell and Try-Catch and external EXE
Автор: Joo1z
Дата сообщения: 16.06.2009 12:45
rosalin


Цитата:
Ребята,
несочните за наглость поделитесь плиз качественным скриптом по сбору информации об установленном ПО в сети под управлением домена.


Я пытался сделать, но пришел к выводу, что то что у меня состряпано в CMD-файле работает эффективней.
Автор: aToVille
Дата сообщения: 17.06.2009 12:20
Административные шаблоны Windows PowerShell можно загрузить с go.microsoft.com/fwlink/?LinkId=93675 - но там просит проверку подленности. В инете ниче нет, все указывает на сайт майкрософт. Может есть у кого нить?
Автор: PhoenixUA
Дата сообщения: 17.06.2009 15:22
Прямая ссылка
Автор: TCPIP
Дата сообщения: 17.06.2009 23:49
rosalin

Цитата:
поделитесь плиз качественным скриптом по сбору информации об установленном ПО в сети под управлением домена.

Наверняка вам известно это, но, навсякий случай. Старый-добрый PowerShell Get-Inventory
А вот пример, как это можно огранизовать. Только вам надо другой класс использовать, чтобы с реестром и базой Windows Installer работать.
Ну и самое тупое, это рекурсивно прочесть ключ
Цитата:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

Хотя лучше наверное начать прямо с класса Win32_Product. Здесь, в документации к Posh V2.0 и примеры есть как раз на эту тему -- Working with Software Installations.


Можно и сюда посмотреть. Хотя тоже, небось, знаете.
Уверен, что начать с PoSH намного лучше, чем начинать с CMD. Просто не вижу преимущества CMD (буду рад, если кто-нибудь расскажет).

Вот пример того, как вы можете это сделать. Пример на VB.NET. Портировать код на PowerShell вы, уверен, сможете с легкостью.

All
Есть ли у нас ветка по PowerShell в разделе с книгами? Может, у кого есть подборка? Если есть, буду рад сообщению (в PM или в ссылку на соответствующую ветку).
Автор: Joo1z
Дата сообщения: 19.06.2009 14:38
TCPIP
Согласен, простой листинг реестра дает много мусора, но обращения типа Get-WmiObject -Class Win32_Product занимают больше времени чем reg query.
А вот на счет psinfo -s не знал - это на много упрощает работу, в приведенном тобой примере posh служит только для форматирования выходных данных.
Не скажу что с PoSH проще начинать. Ели знаком с языками программирования, то да, а если нет, то CMD намного проще.
Автор: violant
Дата сообщения: 19.08.2009 08:31
Подскажите как получить время с домен-контроллера win2003 из поша или VBS?
Автор: Drunken Master
Дата сообщения: 19.08.2009 14:09
violant

У стандартной утилиты NET есть команда TIME.

Код: net time
net time /domain:mydomain.ru
net time /set
Автор: Dreem2001
Дата сообщения: 26.08.2009 09:49
Привет.

Вот така проблема у меня:
Есть некий файлик, в который приложения постоянно пишут новую информацию. Моя задача каждые 10 минут считать количество строчек по определенному парамерту.
За 10 минут файлик вырастает на 5 мегабайт.
Я читаю файл определенного байта с помощью StreamReader.ReanToEnd в переменную. И начинаю парсить: разбиваю на строки, строку передаю по конвееру, разбиваю на сегменты, передаю по конвееру, сравниваю один из элементов массива с параметром.
На маленьких объмах это не производит большой нагрузки на систему. Но вот 5-ти мегабайтный файл парсится ужасно тяжело.

Вот сам скрипт:

# Get run parameters
param ([String]$Time)

# Set logs path for parsing
$ExecutedLog = "c:\Logs\Sites\log.txt"

# Get runspace
$Run = $MyInvocation.Line.Substring(0,$MyInvocation.Line.LastIndexOf('\')+1)
# Set variables
$SizeOutput = "Sizelog.log"
$Resultlog = "Result.log"

function ReadFileFromPosition ($FileName, $SizeLog)
{
    if (Test-Path $SizeLog) {$PrevLength = Get-Content -force -path $SizeLog}
        else {$PrevLength = 0}

    $fs = [System.IO.File]::OpenRead($FileName)
    $fs.length | Out-File -force $SizeLog
    if ($PrevLength -gt $fs.length) {$fs.Position = 0}
        else {$fs.Position = $PrevLength}
    $sr = New-Object System.IO.StreamReader($fs)
    $sr.ReadToEnd()
    $sr.Close()
    $fs.Close()
}

if (-not(Test-Path $ExecutedLog)) {Write-Output "Check source log file"}
$Content = ReadFileFromPosition $ExecutedLog $Run$SizeOutput
$Results = $Content.Split() | ForEach-Object {$TempString = $_.Split(','); [array] $TempString[4]} | Where-Object {$_ -gt $Time}
$Results.Count | Out-File -filePath $Run$ResultLog -Confirm:$false -force -append

Пробовал читать StreamReader.ReadLine и тут же пасить, но это получилось дольше и еще тяжелее.

Буду рад помощи. Спасибо.


-------------------------------------------------
Проблема разрешилась как только избавился от конвейера (pipeline).
Автор: smilerZ
Дата сообщения: 26.08.2009 16:37
TCPIP
Joo1z

Доброго времени суток.
заинтересовали ваша информация и комментарии, прошу помощи если сталкивлись

1. через запрос
PS Get-WmiObject win32_product -ComputerName
Выводится не все ПО которое было установлено

2. через
PsInfo -s Applications
проблемы с кодировкой, вместо кириллицы одни знаки вопроса

кто сталкивался, помогите.
Автор: MisterXX
Дата сообщения: 07.09.2009 16:02
Господа, подскажите как с помощью powershell можно узнать серийник винды?
Автор: viur
Дата сообщения: 01.10.2009 11:02
Welcome to the Windows Management Framework RC Preview! This release provides you updated management functionality, added in Windows 7 and Windows Server 2008 R2, to be installed on your machines running Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

The included components are WinRM 2.0, PowerShell 2.0, and BITS 4.0:

https://connect.microsoft.com/windowsmanagement/
Автор: Drunken_Master
Дата сообщения: 28.10.2009 11:54
Релиз PowerShell 2.0 для всех платформ и языков:
http://support.microsoft.com/kb/968929
Автор: vova49
Дата сообщения: 28.10.2009 22:08
Drunken_Master

Вот ЭТО новость!
Автор: 01MDM
Дата сообщения: 30.10.2009 21:44
del ппц пятница
Автор: LSHunter
Дата сообщения: 31.10.2009 18:38
Никто не знает, как можно получить ип пппое соединения?
Делаю вызов через Win32_NetworkAdapterConfiguration, но нифига толком не выводит:
DHCPEnabled : False
IPAddress :
DefaultIPGateway :
DNSDomain :
ServiceName : RasPppoe
Description : WAN Miniport (PPPOE)
Index : 4

с обычным сетевым подключением все нормально, выводит ип
Автор: 01MDM
Дата сообщения: 01.11.2009 12:39
LSHunter
Если надо узнать внешний IP, то попробуй так:

Код:
$net = new-object system.net.webclient
$ip = $net.downloadstring('http://whatismyip.com/automation/n09230945.asp')
$ip
Автор: LSHunter
Дата сообщения: 01.11.2009 17:04
спасибо, то что надо!

Добавлено:
И еще один вопрос, из той же серии
как полноценно работать с виртуальными адаптерами? ип он не показывает, статус тоже
вот попробовал выключить - фиг, с обычным соединением все как всегда нормально
Автор: lordgraill
Дата сообщения: 16.11.2009 12:52
Всем привет
Подскажите пожалуйста, есть такой скрипт
Get-WmiObject -Class Win32_LogicalDisk -filter "DriveType=3" -computer (Get-Content D:\computers.txt)| Select-Object -Property Name,FreeSpace | ForEach-Object -Process {$_.FreeSpace = ($_.FreeSpace)/1024/1024/1024; $_} | Out-GridView
Он берет имена компов из файла и отображает количество свободного места на дисках. Так вот вопрос: как бы его заставить в итоговой таблице подписывать с какого компа он скачал инфу?
Автор: Drunken_Master
Дата сообщения: 16.11.2009 14:22
lordgraill

Пробуйте:

Код:
Get-WmiObject -Class Win32_LogicalDisk -filter "DriveType=3" -computer (Get-Content D:\computers.txt)| Select-Object -Property SystemName, Name, FreeSpace | ForEach-Object -Process {$_.FreeSpace = ($_.FreeSpace)/1Gb; $_} | Out-GridView
Автор: lordgraill
Дата сообщения: 16.11.2009 16:02
Drunken_Master

Сработало ))) Спасибо огромное! ))
Автор: ROSSTYA
Дата сообщения: 19.11.2009 14:27
Народ, а кто знает как отключить обрезание выводимых строк в powershell?


Код: NestedMemberOf : {CN=tech,CN=Users,DC=Dc,DC=domain,DC=com, CN=deployment,CN=Users,DC=Dc,DC=Domaind,DC=com, CN=deployment1,CN=Users,DC=Dc,DC=domain,DC=com, CN=deployment2,CN=Users,DC=Dc,DC=domain,DC=com...}
Автор: 01MDM
Дата сообщения: 19.11.2009 15:52
ROSSTYA
Можно просто отформатировать вывод, например:

Код:
get-command get-help | fl
Автор: ROSSTYA
Дата сообщения: 19.11.2009 17:11
понимаешь в чем проблема, на самом деле я выполняю команду как раз вот такую Get-Recipient | Format-List Name, EmailAddresses
Подразумевается что таким макаром я могу получить полный список адресов exchange, но вывод получается вот таким:

Код:
$Get-Recipient user | format-list Name, EmailAddresses
Name: User
EmailAddresse : {smtp:mytest3@microsoft.com, smtp:mytest2@microsoft.com, smtp:mytest1@microsoft.com, smtp:user@lex.microsoft.com...}
Автор: 01MDM
Дата сообщения: 19.11.2009 18:02
ROSSTYA
Попробуй через Foreach-object:

Код:
Get-Recipient user | % { $_.Name; $_.EmailAddresses } | fl

Страницы: 123456789101112131415161718192021222324

Предыдущая тема: Не понятная проблема с видеокартой.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.