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

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

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Открыть новую тему     Написать ответ в эту тему

tcg2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Microsoft Windows PowerShell

 
Обсуждаемые темы

    * Работа с SQL
    * Работа с Visual Studio
    * etc.

 
Помощь по использованию консоли pwsh, а также встроенной в Windows консоли powershell.exe  

Всего записей: 7 | Зарегистр. 20-11-2006 | Отправлено: 19:06 29-11-2006 | Исправлено: YuS 2, 18:04 02-06-2020
ComradG



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

Код:
#каталог с файлами для загрузки
$dir = "d:\myuploadfiles"
 
#куда будут грузится файлы
$ftp = "ftp://ftp.myserver.com/pub/destination"
#имя пользователя
$user = "user"
#пароль доступа
$pass = "pass"
 
#создаем веб-клиент
$client = New-Object System.Net.WebClient
#передаем имя и пароль для авторизации
$client.Credidentals = New-Object System.Net.NetworkCredidental($user, $pass)
 
#ну, а далее сам процесс загрузги файлов
foreach($item in (dir $dir "*.trc")) {
   "Загрузга файла $item..."
    $uri = New-Object System.Uri($ftp + $item.Name)
    $client.UploadFile($uri, $item.FullName)
}

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:44 19-01-2012
kenaut

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, по start-process -wait
что оно конкретно делать должно? я пытаюсь запустить консольное приложение, но скрипт бежит дальше не дождавшись его завершения
как бы всё таки притормозить срипт? (естественно не знаю сколько займёт времени работа приложения)
заранее благодарю за ответы

Всего записей: 67 | Зарегистр. 18-04-2007 | Отправлено: 15:37 23-01-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kenaut
командлет Start-Process запускает один или несколько процессов на локальном компьютере, параметр -wait ожидает завершения указанного процесса, прежде чем принимать следующий ввод; этот параметр отключает командую строку или удерживает окно до завершения процесса.
если требуется приостановить работу скрипта используйте Start-Sleep или его альяс sleep:
Код:
Start-Sleep -m 3000
или можете обратиться напрясую к классам .NET:
Код:
[Threading.Thread]::Sleep(3000)

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:04 23-01-2012
kenaut

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
спасибо, но, как я уже говорил, я не знаю сколько времени мне надо выждать, sleep не годится, а справку я уже прочитал
 
Добавлено:
и с Wait-Process -Name тоже не ждёт =\
 
Добавлено:
всё, разобрался, там один процесс порождал другой, сначала Start-Process первый процесс -Wait, потом Wait-Process -Name второй процесс сработало

Всего записей: 67 | Зарегистр. 18-04-2007 | Отправлено: 09:19 24-01-2012
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
День добрый. Начинаю осваивать Powershell. Сейчас допиливаю скрипт добавление пользователей в AD и создание им папки на файлопомойке + добаление ссылки в DFS на эту папку,возникло несколько вопросов:
Как реализовать проверку прав пользователя на указанную папку?
т.е. если у пользователя есть права на папку, то вывести в лог какие права в формате (полный доступ, чтение, изменения) если нет то доступ закрыт.
 
Вопрос номер два. Есть Gui окошко Лога

Код:
$Log = New-Object windows.Forms.RichTextBox  
    $Log.left= "1"
    $Log.top="150"
    $Log.width = "609"
    $Log.height = "200"
    $Log.ReadOnly = "true"
    $form.controls.add($Log)

Текст в которую приходит  

Код:
function LogAdd($msg)
    {
    $Log.text = $Log.text + $msg + [char]13
    $msg=""
     }

 
 
Вопрос следующий, в gui окне все логи выводятся страшным серым цветом, и если логов много то выглядит не очень красиво, как изменить цвет для указанного текста? Например

Код:
LogAdd ("[WARNING] Папка " + "$personal\$OU\$name\free" + " уже cуществует")

Чтобы на выходе выглядело:
[WARNING] Папка \\Mydomen.com\Бухгалтерия\Иванова Людмила Ивановна\free уже существует
 
Поменять весь текст в логе не проблема достаточно добавить "ForeColor" в настройки GUI,  
пробывал:

Код:
 $Log.SelectionColor = "Red"
LogAdd ('тест цвета')

без результатов, выводит обычным черным цветом текст
 
 
 
Третий.  
Перед созданием пользователя, необходимо проверить, а нет ли уже пользователя с таким логином(логин уже помещен в переменную $login), если такой логин существует необходим вывод всплывающего окошка с предложением ввести логин вручную (следовательно изменить переменную $login и заново произвести проверку)
PS для работы с AD использую дополнение ActiveRoles Management от Quest Software
 

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 20:00 26-01-2012 | Исправлено: Scaramanga, 23:56 26-01-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scaramanga
касательно первого вопроса. как на счет командлета Get-Acl? вот что говорит по этому поводу man Get-Acl:
Цитата:
Командлет Get-Acl получает объекты, которые представляют дескриптор безопасности файла или ресурса. Дескриптор безопасности содержит списки управления доступом (ACL) ресурса. Список ACL содержит разрешения, необходимые пользователям и группам пользователей для доступа к ресурсу.

второе. судя по куску кода используется элемент управления ричтекстбокс. если знаком с .NET языками, то разобраться с раскраской труда не составит; если не особо, то стоит смотреть в сторону ForeColor, при этом SelectionColor трогать не стоит вообще. глянь здесь пример, там встречаются семплы того, как раскрашиваются партиции данных сборок.
третье. если логин занесен в переменную $login, то не проще ли установить условия проверки вроде:
Код:
if (($login -ne $null) -and ($login -eq "пароль")) {здесь логика для окна ввода пароля}

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:06 27-01-2012 | Исправлено: ComradG, 14:08 27-01-2012
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо в принципе вопросы решены. Сейчас пытаюсь разобраться как остановить выполнение скрипта но не закрывать GUI окошко

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 22:39 27-01-2012
VseNikiZaniatiBlin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача :  
массово - всем пользователям в домене удалить номер сотового телефона и стационарного.  
win2k8  
атрибуты telephoneNumber, mobile.  
 
Тоесть не выгружать ни каких пользователей а просто ВСЕМ изменить(удалить) мобильные и стационарные.  
 
Очень очень благодарен.

Всего записей: 19 | Зарегистр. 02-10-2011 | Отправлено: 16:05 29-01-2012
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VseNikiZaniatiBlin
Получаешь список пользователей Потом для всех (foreach) вставляешь нгужный атрибут
Get-ADUser -Filter * | Foreach-Object {Set-ADUser -Identity $_ -OfficePhone "" -MobilePhone ""}
Как-то так

----------
В конце концов причина причин оказалась в начале начал...

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 07:13 31-01-2012
mag16

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуй, "все"!
Есть вопросец. Где мне искать информацию, как скриптом отправлять файл на печать, используя свойство принтера "тип печати: факс", а также передавать задавать номер адресата? Принтер Xerox WorkCentre 5755, например (т.е., один из них).
 
Пасиб заранее.

Всего записей: 28 | Зарегистр. 12-04-2008 | Отправлено: 23:01 03-02-2012
ComradG



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

Цитата:
Где мне искать информацию
если вопрос об автоматизации печати, то смотрите в сторону Win32_Printer

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 16:56 04-02-2012
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mag16
что печатать собрались? просто информацию из скрипта тогда попробуйте Out-Print. Если оффисные документы - можно использовать COM (посмотрите Bible PowerShell 2.0 Thomas Lee (раздел 4))
примерно так
$word = New-Object -ComObject word.application
$null = $word.Documents.Add("$SourceFile")
$word.PrintOut()
$word.Quit()


----------
В конце концов причина причин оказалась в начале начал...

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 05:56 09-02-2012
mag16

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

Цитата:
что печатать собрались? просто информацию из скрипта тогда попробуйте Out-Print

Вот, спасибо, милчилавек! )
Печатать собрались PDF и печатать не просто на принтере, а отправлять через принтер по факсу. Вот именно здесь прошу вашей помощи: в драйвере есть свойство "Тип печати", которое необходимо выставить "Фа(к)с" (без скобок ))).
Предполагаю, что можно как-то получить доступ к искомым свойствам программно, но как?

Всего записей: 28 | Зарегистр. 12-04-2008 | Отправлено: 09:54 09-02-2012
meskalin13

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Решаю сейчас небольшую задачу по автоматическому добавлению в ИСУ ip-адресов. Нашел такой скрипт для подключения к ИСЕ.  
 
$Root = New-Object -comObject "FPC.Root"
$arr= $root.Arrays.Connect("")
 
В описании говориться, что это мы подключились.
Первая команда вроде проходит, только непонятно почему "FPC.Root"
А вот на второй ругаеться
 
Exception calling "Connect" with "1" argument(s): "The property or method Connect is not supported when a Configuration
 Storage server is used.
The error occurred on object 'Arrays' of class 'Arrays' in enterprise scope.
"
At line:1 char:28
+ $arr = $root.arrays.connect( <<<< "")
 
Вместо "" подставлял имя сервера, имя сервера в кавычках, все равно не проходит.
В общем непойму чего он хочет. Что то слабоват я пока в COM обьектах.  
 
P.S. Используеться PoSH 1.0

Всего записей: 51 | Зарегистр. 24-08-2005 | Отправлено: 10:14 09-02-2012 | Исправлено: meskalin13, 10:37 09-02-2012
mag16

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

Цитата:
Вот именно здесь прошу вашей помощи: в драйвере есть свойство "Тип печати", которое необходимо выставить "Фа(к)с"

Даже больше! Данный скрипт предполагается крутить на сервере без вмешательства человеков. Надо не "выставить факс", а использовать данное свойство. Это предполагает к тому же и способ передачи каким-то образом и номера целевого факса.

Всего записей: 28 | Зарегистр. 12-04-2008 | Отправлено: 10:14 09-02-2012
mag16

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

Цитата:
Вместо "" подставлял имя сервера, имя сервера в кавычках, все равно не проходит.
В общем непойму чего он хочет. Что то слабоват я пока в COM обьектах.  

Я дзвыняюс глубоко, в теме не очень силён. А ничё, что root с маленькой буквы, может он не знает такой объект?

Всего записей: 28 | Зарегистр. 12-04-2008 | Отправлено: 23:16 09-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mag16
Po$h не чувствителен к регистру, а потому для него $Root все равно что $root.

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 23:48 09-02-2012
Orin_Veliki

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пишу один скрипт на powershell, одна из его задач взять из имени файла кусок(точнее номер вида 0????) и сохранить в переменную. Интересует чем это можно сделать, Get-Content и Select-String не подходят потому-что возвращают целиком соответственно объект и строку.

Всего записей: 6 | Зарегистр. 18-07-2008 | Отправлено: 14:59 20-07-2012
smaharbA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$x="Текст тут этот";echo ${x}.substring(6,3)

Всего записей: 8 | Зарегистр. 08-04-2012 | Отправлено: 22:48 15-08-2012
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Orin_Veliki
$f="c:\Windows\System32\file0123456calc.exe"
$f -match '0\d+'
$a=$matches[0]

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 10:14 16-08-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Windows PowerShell 1.x/2.x/CTP


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru