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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Joolz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken Master
У меня тупо на этом висит.
Даже через wmic useraccount list brief я результата только через 2 минуты дождался.

Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 16:23 09-07-2008
Drunken Master

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

Код:
(gwmi win32_useraccount -filter "caption='$((gwmi win32_com
putersystem).username.replace("\", "\\"))'").FullName

У меня-то всё мгновенно.
Хотя этот вариант уже не выглядит простым

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 16:49 09-07-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кто знает на каком свете разработка 2-й части?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:05 10-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
 
2.0 сейчас только в CTP (Alpha). Обещают значительные улучшения и изменения (вплоть до создания командлетов прямо в консоли) при совместимости с первой версией.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:34 10-07-2008
Joolz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще один дурацкий вопрос, как привести число "2146402304" к виду "2 Gb"?
Как разделить его трижды на 1024 понятно, но как округлить?

Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 17:11 10-07-2008
Drunken Master

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

Код:
[Math]::Round(2146402304 / 1Gb)

В строке:

Код:
Write-Host "$([Math]::Round(2146402304 / 1Gb)) Gb"

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 17:51 10-07-2008 | Исправлено: Drunken Master, 17:53 10-07-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
$gb=[int](2222222222/1024/1024/1024)

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:52 10-07-2008
01MDM



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

Код:
 
$a=[math]::round((2146402304/1024/1024/1024),0)
 

 
Еще способ:

Код:
 
$a="{0:0}Gb" -f (2146402304/1024/1024/1024)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:56 10-07-2008 | Исправлено: 01MDM, 19:07 10-07-2008
Joolz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken Master
KapralBel
01MDM
Всем спасибо.
Самое изящное, на мой взгляд, решение - последнее. Красота!
01MDM, где ты это вычитал? Почитал здесь все-равно мало чего понял.

Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 10:54 11-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Joolz
Тоже изучаю по "PowerShell in Action", дается с трудом из-за отсутствия реальных задач

Цитата:
где ты это вычитал?

Задал пару месяцев назад вопрос на одном форуме. Надо было округлить значение до сотых. Предложили решение с [math]::round и это "{0:n2}" -f
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:22 11-07-2008
Joolz

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

Цитата:
дается с трудом из-за отсутствия реальных задач

 
Хочешь, предложу задачку?

Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 11:29 11-07-2008
Drunken Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, чем делить так: "/1024/1024/1024"; лучше — так: "/1Gb"
В PowerShell определены множители kb, mb, gb, tb, pb (…?)
Зацените:

Код:
> 1KB, 1MB, 1GB, 1TB | Out-Host
1024
1048576
1073741824
1099511627776
> 1GB -eq 1024*1024*1024
True
> 1PB -eq [math]::pow(1024,5)
True

Joolz, предлагай задачку!

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 13:11 11-07-2008 | Исправлено: Drunken Master, 13:13 11-07-2008
Joolz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Drunken Master
Вобщем, все мои предыдущие вопросы били связаны с одной задачкой.
Нужно прописать всем компьютерам в домене (желательно в контейнере) описание (Description), при условии, что его нет, в виде:
Полное имя пользователя; CPU; Motherboard; HDD; RAM; если не встроенное, то Video; дата когда введен в домен.
Выглядеть должно примерно так:

Код:
Vasisualiy Lohankin, Celeron 2.4 GHz,  D865GVC,  80Gb,  256Mb, add to AD 16/08/05
Vasya Pupkin, Pentium D 3 GHz, D865PERL, 200Gb, 1 Gb, ATI RADEON 9550, add to AD 22/05/06

Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 13:58 11-07-2008 | Исправлено: Joolz, 14:10 11-07-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А что доступ к ИД-железа из subj есть?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:13 11-07-2008
01MDM



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

Цитата:
А что доступ к ИД-железа из subj есть?

 
Есть, но опять же, через wmi.  

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:01 11-07-2008
Drunken Master

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Joolz
Отличная задачка Я не особо хорошо знаю WMI, поэтому пришлось помучиться. Получение указанных характеристик сделал так:

Код:
$c = Get-Credential
# Список компьютеров
$comps = gwmi ads_computer -ComputerName Server -Credential $c -Namespace "Root\Directory\LDAP"
# Имя текущего
$localcomp = (gwmi Win32_ComputerSystem).Name
foreach ($comp in $comps)
{
    $compname = $comp.DS_name
    # Проверка доступности
    ping $compname /n 1 | Out-Null
    if ($LastExitCode -ne 0)
    {
        "$compname not found."
    }
    else
    {
        # Локальный c -Credential нельзя
        if ($compname -ne $localcomp)
        {
            $cpu = (Get-WmiObject Win32_Processor -ComputerName $compname -Credential $c -Namespace "Root\CIMV2").Name.Replace("Intel(R) ", '').Replace("(TM)", '').Replace("(R)", '').Replace("CPU", '') -Replace "\s+", ""
            if ($cpu -eq "")
            {
                "$($compname): RPC disabled or Access denied."
                continue;
            }
            $mb = (Get-WmiObject Win32_BaseBoard -ComputerName $compname -Credential $c -Namespace "Root\CIMV2").Product
            # Размер HDD в "нечестных" GB
            # и подразумевается что HDD один
            $hdd = "{0:0}GB" -f ((Get-WmiObject Win32_DiskDrive -Filter "MediaType LIKE 'Fixed%'" -ComputerName $compname -Credential $c -Namespace "Root\CIMV2").Size / 1000 / 1000 / 1000)
            $ram = "{0:0}MB" -f ((Get-WmiObject Win32_PhysicalMemory -ComputerName $compname -Credential $c -Namespace "Root\CIMV2") | Foreach-Object {$s=0}{$s +=$_.Capacity}{$s / 1MB})
            $add = [System.Management.ManagementDateTimeConverter]::ToDateTime($comp.DS_whenCreated).ToString("d")
            "$($compname): $cpu, $mb, $hdd, $ram, add to AD $add"
            $cpu = $mb = $hdd = $ram = $add = ""
        }
    }
}

Всего записей: 75 | Зарегистр. 11-12-2005 | Отправлено: 18:10 11-07-2008
SAVage22



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

Цитата:
Ошибки и предупреждения в журнале событий по электронной почте (в4.0)

 
Отличный скрипт! Спасибо автору! Вот только не пойму как сделать чтобы он запускался через определённые промежутки времени.
 
Из ком.строки работает на ура и даже шлёт мне на мыло. Через виндовозный планировщик не работает, т.к. выполняется приблизительно следующее (powershell ''PATCH\script.ps1") на что появляется ошибка 'PATCH\" не является командлетом и и т.д.

Всего записей: 1104 | Зарегистр. 30-12-2003 | Отправлено: 22:23 12-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SAVage22
 
A так:

Код:
 
powershell -c ''PATCH\script.ps1"
 

 
А, нет, скорее надо к скрипту указать полный путь, если он не в %PATH%
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:37 12-07-2008 | Исправлено: 01MDM, 22:56 12-07-2008
KapralBel



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

Цитата:
Что бы ассоциировать скипты с PowerShell, аналогично выполнению .bat/.cmd-файлов
нужно в коммандной строке набрать следующую команду  
FType microsoft.powershellscript.1=%windir%\system32\windowspowershell\v1.0\powershell.exe "&'%1' %*"  
запуск вместе с параметрами  

 
У меня он работает без таких ошибок

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 00:18 13-07-2008
Kein



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
C каких пор PowerShell стала требовать валидацию на скачку?

Всего записей: 1331 | Зарегистр. 09-01-2003 | Отправлено: 02:05 13-07-2008
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru