Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

   

Uriu

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версии

PowerShell 1.0 -  На текущий момент совершенно неактуальная версия, интересная только для истории. /Прямые ссылки/
PowerShell 2.0 и WinRM 2.0 - Последняя версия, работающая на Windows XP и Windows 2003 (Ещё) /Прямые ссылки/
PowerShell 3.0 (Windows Management Framework 3.0)
PowerShell 4.0 (Windows Management Framework 4.0)
PowerShell 5.0 (Windows Management Framework 5.0)
PowerShell 5.1 (Windows Management Framework 5.1)
PowerShell Core 6.0 (не заменяет PowerShell 5.1)



Ассоциация

Что бы ассоциировать скрипты с PowerShell, аналогично выполнению .bat/.cmd-файлов
нужно в командной строке набрать следующую команду(ы)
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\system32\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\sysWOW64\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версия 6.0 дя 32-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files (86)\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*
Версия 6.0 дя 64-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*



вопрос о подписи скриптов

Что бы PowerShell не задавал вопрос о том, что скрипты не подписаны, ввести в нем команду
set-executionpolicy unrestricted
или в командной строке
powershell Set-ExecutionPolicy Unrestricted -force
(для этих 2-х действий требуются административные права)



Прочее


  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников кодировка скриптов на PowerShell должна быть 1251 (ANSI)




Расширение возможностей PowerShell
Функции
* Write-Color
* PowerTab --- Расширение функций клавиши Tab
Провайдеры
Готовые скрипты
* Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
 


Работа со сценариями в Windows PowerShell
Раздел в MSDN
Краткие справочники по Windows PowerShell 3.0 (english)
Windows PowerShell Франк Кох (БЕРН)  Разработчик и пропагандист платформы. На русском языке в формате pdf и doc

Всего записей: 340 | Зарегистр. 25-11-2004 | Отправлено: 07:13 23-03-2006 | Исправлено: KapralBel, 09:31 29-01-2018
TCPIP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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 или в ссылку на соответствующую ветку).

Всего записей: 4667 | Зарегистр. 31-01-2003 | Отправлено: 00:49 18-06-2009 | Исправлено: TCPIP, 00:56 18-06-2009
Joo1z



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TCPIP
Согласен, простой листинг реестра дает много мусора, но обращения типа Get-WmiObject -Class Win32_Product занимают больше времени чем reg query.
А вот на счет psinfo -s не знал - это на много упрощает работу, в приведенном тобой примере posh служит только для форматирования выходных данных.
Не скажу что с PoSH проще начинать. Ели знаком с языками программирования, то да, а если нет, то CMD намного проще.

Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 15:38 19-06-2009
violant



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как получить время с домен-контроллера win2003 из поша или VBS?

Всего записей: 364 | Зарегистр. 08-11-2006 | Отправлено: 09:31 19-08-2009
Drunken Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
violant
 
У стандартной утилиты NET есть команда TIME.

Код:
net time
net time /domain:mydomain.ru
net time /set

 
Справка:

Код:
net help time

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 15:09 19-08-2009
Dreem2001

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет.
 
Вот така проблема у меня:
Есть некий файлик, в который приложения постоянно пишут новую информацию. Моя задача каждые 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).

Всего записей: 5 | Зарегистр. 06-01-2005 | Отправлено: 10:49 26-08-2009 | Исправлено: Dreem2001, 21:23 27-08-2009
smilerZ

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TCPIP
Joo1z
 
Доброго времени суток.
заинтересовали ваша информация и комментарии, прошу помощи если сталкивлись
 
1. через запрос  
PS Get-WmiObject win32_product -ComputerName
Выводится не все ПО которое было установлено
 
2. через  
PsInfo -s Applications  
проблемы с кодировкой, вместо кириллицы одни знаки вопроса
 
кто сталкивался, помогите.

Всего записей: 47 | Зарегистр. 11-10-2004 | Отправлено: 17:37 26-08-2009
MisterXX



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, подскажите как с помощью powershell можно узнать серийник винды?

Всего записей: 507 | Зарегистр. 03-01-2007 | Отправлено: 17:02 07-09-2009
viur

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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/

Всего записей: 191 | Зарегистр. 17-07-2003 | Отправлено: 12:02 01-10-2009
Drunken_Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Релиз PowerShell 2.0 для всех платформ и языков:
http://support.microsoft.com/kb/968929

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 11:54 28-10-2009
vova49



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken_Master
 
Вот ЭТО новость!

Всего записей: 365 | Зарегистр. 03-02-2003 | Отправлено: 22:08 28-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del ппц пятница

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:44 30-10-2009 | Исправлено: 01MDM, 09:38 31-10-2009
LSHunter

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не знает, как можно получить ип пппое соединения?
Делаю вызов через Win32_NetworkAdapterConfiguration, но нифига толком не выводит:
DHCPEnabled      : False
IPAddress        :  
DefaultIPGateway :  
DNSDomain        :  
ServiceName      : RasPppoe
Description      : WAN Miniport (PPPOE)
Index            : 4
 
с обычным сетевым подключением все нормально, выводит ип

Всего записей: 3 | Зарегистр. 18-03-2008 | Отправлено: 18:38 31-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LSHunter
Если надо узнать внешний IP, то попробуй так:

Код:
 
$net = new-object system.net.webclient
$ip = $net.downloadstring('http://whatismyip.com/automation/n09230945.asp')
$ip
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:39 01-11-2009
LSHunter

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо, то что надо!
 
Добавлено:
И еще один вопрос, из той же серии
как полноценно работать с виртуальными адаптерами? ип он не показывает, статус тоже
вот попробовал выключить - фиг, с обычным соединением все как всегда нормально
 

Всего записей: 3 | Зарегистр. 18-03-2008 | Отправлено: 18:04 01-11-2009 | Исправлено: LSHunter, 19:58 01-11-2009
lordgraill

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет
Подскажите пожалуйста, есть такой скрипт  
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  
Он берет имена компов из файла и отображает количество свободного места на дисках. Так вот вопрос: как бы его заставить в итоговой таблице подписывать с какого компа он скачал инфу?

Всего записей: 3 | Зарегистр. 22-06-2007 | Отправлено: 13:52 16-11-2009
Drunken_Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
 

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 15:22 16-11-2009
lordgraill

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken_Master
 
Сработало ))) Спасибо огромное! ))

Всего записей: 3 | Зарегистр. 22-06-2007 | Отправлено: 17:02 16-11-2009
ROSSTYA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, а кто знает как отключить обрезание выводимых строк в 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...}

 
Полный вывод маскируется троеточием - как этого избежеть? Спасибо

Всего записей: 14 | Зарегистр. 27-09-2005 | Отправлено: 15:27 19-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ROSSTYA
Можно просто отформатировать вывод, например:

Код:
 
get-command get-help | fl
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:52 19-11-2009
ROSSTYA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понимаешь в чем проблема, на самом деле я выполняю команду как раз вот такую 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...}
 

при этом обрезаются многие адреса, которые не влазят в 160 символов. Уже два дня пытаюсь понять в чем дело и все без толку :-\  
Самое печальное - что в таком виде вывод получается уже после первой команды, форматирование уже ничего похоже не решает. При этом и многие другие команды также режут вывод, поэтому я начинаю думать, что есть какие то переменные шела, которые могут влиять на это свойство. Только как их поменять - это вопрос.

Всего записей: 14 | Зарегистр. 27-09-2005 | Отправлено: 18:11 19-11-2009 | Исправлено: ROSSTYA, 18:15 19-11-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell
KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru