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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Помогите пожалуйста разобраться с одной проблемкой.
В общем, в папке есть куча jpg'ов с названиями в utf-8, есть программа convert из пакета imagemagick, которая такие названия файлов в упор не хочет понимать, необходимо натравить на jpg'и программу. Сам алгоритм  более менее ясен: необходимо переконвертировать названия jpg'ов во что-нибудь что будет понимать программа (я пытался в ascii, вопросы из названий убирал обычным gsar'ом), затем обработать jpg'и convert'ом и вернуть названия файлов назад.
Первый раз связался с powershell'ом, нифига не понятно Заранее спасибо.

Всего записей: 4 | Зарегистр. 25-09-2010 | Отправлено: 13:53 25-02-2011
Black_Swan



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как вариант найди ответ от PetSerAl, по этой ссылке ХТТП://otvety.google.ru/otvety/thread?tid=6ae7c76c6e675111.
Тема очень схожая...

Всего записей: 40 | Зарегистр. 20-03-2006 | Отправлено: 14:39 25-02-2011
stal104

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем получилось, для моего первого скрипта на powershell будет наверно нормально, но выглядит весьма длинно, думаю его ещё можно каким-нибудь образом сократить, да и убрать батник
 
convert.ps1

Код:
get-childitem -name -include  *.jpg | out-file 1.txt
get-childitem -name -include  *.jpg | out-file 2.txt -encoding ASCII
(get-content 2.txt) | foreach-object {$_ -replace "\?"} | set-content 2.txt
$1 = get-content 1.txt
for ($i=1; $i -le $1.count; $i++) { if ($i -le 1) {[string]$a = get-content 1.txt -totalcount $i; [string]$b = get-content 2.txt -totalcount $i; rename-item $a -newname $b} elseif ($i -le $1.count){[string]$a = (get-content 1.txt -totalcount $i)[-1]; [string]$b = (get-content 2.txt -totalcount $i)[-1]; rename-item $a -newname $b} }
.\convert.bat
for ($i=1; $i -le $1.count; $i++) { if ($i -le 1) {[string]$a = get-content 1.txt -totalcount $i; [string]$b = get-content 2.txt -totalcount $i; rename-item $b -newname $a} elseif ($i -le $1.count){[string]$a = (get-content 1.txt -totalcount $i)[-1]; [string]$b = (get-content 2.txt -totalcount $i)[-1]; rename-item $b -newname $a} }
del 1.txt
del 2.txt

 
convert.bat

Код:
for /R %%i in (*.jpg) do (convert "%%i" -fuzz 8%% -trim +repage "%%i")

Всего записей: 4 | Зарегистр. 25-09-2010 | Отправлено: 14:31 28-02-2011 | Исправлено: stal104, 14:34 28-02-2011
alterpub

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как через powershell сделать вызов программы в имени которой есть пробелы с аргументами?
C:\Program Files\Program.exe argument1 argument2 ?

Всего записей: 3 | Зарегистр. 04-07-2008 | Отправлено: 16:42 01-03-2011
01MDM



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

Код:
 
& 'C:\Program Files\Program.exe' argument1 argument2  
 



----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:28 01-03-2011
es2424



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста есть ли такая фича в команде powershel send-mailmessage, как отправка письма с уведомлением о прочтении? На манер аутлука. То что там есть ключ -dno знаю, но он сообщает только о доставке или не доставке, а о прочтении нет.

Всего записей: 10 | Зарегистр. 16-11-2005 | Отправлено: 14:52 24-03-2011
AlexNNM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Помогите решить задачу. Необходимо получить размеры папок в папке C:\Users Windows Server 2008. Пробовал следующее
Get-ChildItem C:\Users | measure-object -property length -sum
Пишет ошибку "Не удается найти свойства length в каком либо из объектов ввода", хотя в другой папке срабатывает. Нет ли какого либо другого способа в PowerShell получить размер папок? Нужно только имя папки и размер. Спасибо

Всего записей: 5 | Зарегистр. 25-03-2011 | Отправлено: 19:17 26-03-2011
01MDM



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

Код:
 
gci -force 'C:\Users' | ? { $_ -is [io.directoryinfo] } | % {
 
    $len = 0
    gci -recurse -force $_.fullname | % { $len += $_.length }
    '{0}: {1:0.00} mb' -f $_.fullname, ($len / 1mb)  
 
}
 



----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:11 26-03-2011
AlexNNM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Можно сказать работает ))) Правда на многие файлы пишет "Отказано в доступе", хотя запускал из под Администратора
 
Добавлено:
Размер соответствует, еще раз большое спасибо

Всего записей: 5 | Зарегистр. 25-03-2011 | Отправлено: 20:24 26-03-2011
legat75

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго врмени суток всем!  
Подскажите плз - есть задачка переименования нескольких файлов. Новое имя берется внутри самого файла. Но- на экране все выглядит замечательно, а вот переименовывать не хочет. Пробовал вывести в файл - получилось очь интересно- каждая буква в HEX отделена 00 от следующей, и строка начинается с 0D0A. выглядит как FF FE 50 00 69 00 74 00 и т.д.  Как выбрать из строки (лежит в переменной) только буквы? Или сменить кодировку самой строки? Что-то я запутался..

Всего записей: 3 | Зарегистр. 18-04-2011 | Отправлено: 15:02 18-04-2011
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
legat75
Допустим есть файл "old.txt", с содержанием:

Код:
 
new.txt
 

Переименовываем:

Код:
 
$new = get-content old.txt
rename-item old.txt $new
 

 
Если что-то не так - уточни.

----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:03 18-04-2011 | Исправлено: 01MDM, 20:04 18-04-2011
temio



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
название для файла должно браться из его содержания
 
legat75
$file = gc filename.txt
$file.split() | % {[Char][Convert]::ToInt32($_,16)}
 
Содержание будет простым языком и можно вычленить название

Всего записей: 163 | Зарегистр. 27-09-2009 | Отправлено: 16:48 19-04-2011
01MDM



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

Цитата:
название для файла должно браться из его содержания

Ну? А у меня откуда берется?

----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:28 19-04-2011
temio



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Pardon, my bad. Проглядел.
Я понял так, что он читает хексом, а не через Get-Content (у меня написано для примера)

Всего записей: 163 | Зарегистр. 27-09-2009 | Отправлено: 23:35 21-04-2011
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
temio
Зачем legat75 открывал файл в hex-редакторе для меня загадка.  

----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:21 23-04-2011
GooZzzRB

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Помогите в задаче.  
Нужно написать скрипт на PowerShell, который проверяет на всех рабочих станциях домена, запущен ли заданный процесс и завершает его

Всего записей: 50 | Зарегистр. 12-02-2007 | Отправлено: 18:29 25-04-2011
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GooZzzRB
Убить процесс(ы) calc.exe на локальном компьютере:

Код:
 
get-process 'calc' -ea "silentlycontinue" | stop-process
 

Как получить список компьютеров домена я не знаю. Допустим их список в файле list.txt:

Код:
 
$list = get-content list.txt
foreach ( $comp in $list ) {  
 
    get-process -name 'calc' -computername $comp -ea 'silentlycontinue' | stop-process -force
 
}
 
 


----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:31 25-04-2011 | Исправлено: 01MDM, 21:04 25-04-2011
post4



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
приветствую
помогите плз решить проблему.
запускаю скрипт для переименования нескольких ПК в домене  
 
 

Код:
 
function renameAndReboot([string]$computer, [string]$newname)
{        
$comp = gwmi win32_computersystem  -computer $computer        
$os   = gwmi win32_operatingsystem -computer $computer        
$comp.Rename($newname)        
$os.Reboot()}Import-Csv mylist3.csv
foreach ($entry in $list){    renameAndReboot($entry.oldname,$entry.newname)}
 

 
выводится ошибки:
 

Код:
 
Get-WmiObject : Invalid namespace
C:\work\net\massrename.ps1:3 знак:13
+ $comp = gwmi <<<<  win32_computersystem  -computer $computer
    + CategoryInfo          : InvalidOperation: ( [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
 
Get-WmiObject : Invalid namespace
C:\work\net\massrename.ps1:4 знак:13
+ $os   = gwmi <<<<  win32_operatingsystem -computer $computer
    + CategoryInfo          : InvalidOperation: ( [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
 
Нельзя вызвать метод для выражения со значением NULL.
C:\work\net\massrename.ps1:5 знак:13
+ $comp.Rename <<<< ($newname)
    + CategoryInfo          : InvalidOperation: (Rename:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 
Нельзя вызвать метод для выражения со значением NULL.
C:\work\net\massrename.ps1:6 знак:11
+ $os.Reboot <<<< ()}Import-Csv mylist3.csv
    + CategoryInfo          : InvalidOperation: (Reboot:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
 

Всего записей: 58 | Зарегистр. 07-02-2009 | Отправлено: 14:49 27-04-2011 | Исправлено: post4, 14:57 27-04-2011
01MDM



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

Код:
 
$comp = invoke-command { gwmi win32_computersystem } -computer $computer
 


----------
Вопросы в личке останутся без ответа

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:00 27-04-2011
post4



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

Код:
 
Invoke-Command : Недопустимое имя одного или нескольких компьютеров. Если необходимо передать URI, используйте параметр
 "-ConnectionUri" или передайте URI-объекты вместо строк.
 

Всего записей: 58 | Зарегистр. 07-02-2009 | Отправлено: 06:36 28-04-2011 | Исправлено: post4, 06:36 28-04-2011
   

Страницы: 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