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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Есть PowerShell-скрипт по резервному копированию Hyper-v, Windows server 2008 R2,при выполнение скрипта появляется ошибка :
Исключение при вызове "Add" с "2" аргументами: "Ключ не может быть неопределенным.
Имя параметра: key"  
C:\HVBACKUP\VM_Backup.ps1:148 знак:20
+         $VMList.add <<<< ($VM.ElementName, $State)
 
Вот сам скрипт:
Код скрипта
 
Подскажите в чем может быть проблема?

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 17:56 24-01-2014
Syllion

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, вот хорошая дискуссия на тему сравнения PowerShell c Bash. Есть много примеров. Может кому пригодится http://linexp.ru/forum/896-bash-vs-cmd-vs-powershell

Всего записей: 194 | Зарегистр. 07-06-2007 | Отправлено: 16:51 28-01-2014
Vadimus3000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Появилась такая задачка:
Необходим Отчёт Службы удаленных рабочих столов Windows 2008 R2
Сделать отчёт в виде скрипта на Power Shell, VBS, Microsoft Log Parser. Таблица кто логинился и отключался из Remote Desktop. Отчёт должен создаваться из логов, которые находятся в
Диспетчер сервера -> Журналы приложений -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Microsoft-Windows-TerminalServices-LocalSessionManager/Operational
На выходе должна получиться табличка со столбцами:
Time, Username, Computer name, IP address, Logon/Logoff
 
Аудит включаться на сервере не должен. Необходимо брать логи именно из вышеупомянутого места
 
Буду благодарен за помощь

Всего записей: 19 | Зарегистр. 08-02-2012 | Отправлено: 22:39 04-02-2014
mikel23

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста
Не могу дойти как сделать.  
есть две папки c:\in и c:\out  
В IN лежат файлики: 1111.txt  
2212.txt  
3333.txt  
4414.txt  
Нужно скопировать из IN только те файлы у которых третий символ имени "1" и скопировать в OUT отрезая первые три символа.  
Получиться должно что бы в OUT лежали 11.txt  
12.txt  
14.txt  
Substring(3,0) - он работает только со строкой а я получаю  
foreach  
($file in Get-ChildItem c:\in\*1* )  
 
$file System.IO.FileInfo  
 
Помогите пожалуйста.

Всего записей: 3 | Зарегистр. 04-10-2011 | Отправлено: 08:22 02-04-2014
KapralBel



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

Цитата:
foreach ($file in Get-ChildItem d:\in\*1* ) {$file.name}

 
Добавлено:
А еще более удобно  
foreach ($file in Get-ChildItem d:\in\??1* ) {$file.name}

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:56 02-04-2014
muxa81

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте уважаемые гуру скриптинга на powershell!
 
помогите с задачей:
 
есть скрипт
 

Код:
 
################################################################################
# Send E-mail from eml file in PowerShell
# Tested on PowerShell 2.0
#
# Usage:
# 1. Configure the variables defined in Main()
#    $server = "localhost"
#    $port = "25"
#    $mailfrom = "from@example.com"
#    $rcptto = "to@example.com"
#    $filename = "test.eml"
#
# 2. Run the script in PowerShell
#
################################################################################
 
$encoding = New-Object System.Text.AsciiEncoding
 
Function SendCommand($stream, $writer, $command) {
  # Send command
    foreach ($line in $command) {
        $writer.WriteLine($line)
    }
    $writer.Flush()
    Start-Sleep -m 100
 
    # Get response
    $buff = New-Object System.Byte[] 4096
    $output = ""
    while ($True) {
        $size = $stream.Read($buff, 0, $buff.Length)
        if ($size -gt 0) {
            $output += $encoding.GetString($buff, 0, $size)
        }
        if (($size -lt $buff.Length) -or ($size -le 0)) {
            break
        }
    }
 
    if ([int]::Parse($output[0]) -gt 3) {
        throw $output
    }
    $output
}
 
Function SendMessage($server, $port, $mailfrom, $rcptto, $filename) {
    try {
        $socket = New-Object System.Net.Sockets.TcpClient($server, $port)
        $stream = $socket.GetStream()
        $stream.ReadTimeout = 1000
        $writer = New-Object System.IO.StreamWriter $stream
 
        $endOfMessage = "`r`n."
 
        SendCommand $stream $writer ("EHLO " + $server)
        SendCommand $stream $writer ("MAIL FROM: <" + $mailfrom + ">")
        SendCommand $stream $writer ("RCPT TO: <" + $rcptto + ">")
        SendCommand $stream $writer "DATA"
        $content = (Get-Content $filename) -join "`r`n"
        SendCommand $stream $writer ($content + $endOfMessage)
        SendCommand $stream $writer "QUIT"
    }
    catch [Exception] {
        Write-Host $Error[0]
    }
    finally {
        if ($writer -ne $Null) {
            $writer.Close()
        }
        if ($socket -ne $Null) {
            $socket.Close()
        }
    }
}
 
Function Main() {
    $server = "emailserver.com"
    $port = "25"
    $mailfrom = "from-some@mail.ru"
    $rcptto = "to-some@email.ru"
    $include = @('*.eml')
    $filename = Get-ChildItem "C:\emlfiles\" -Recurse  -Include $include
        
        SendMessage $server $port $mailfrom $rcptto $filename
    
            
}
 
Main | Out-Null
 
 

 
В папке  "C:\emlfiles\" есть много *.eml, отправляется только первый,  как сделать рекурсивную отправку писем по одному на каждый eml файл?

Всего записей: 15 | Зарегистр. 23-09-2010 | Отправлено: 12:44 02-06-2014 | Исправлено: muxa81, 13:11 03-06-2014
Vadimus3000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Такая вот задача:
Необходимо вытащить из логов имя создаваемого в AD пользователя.
Взять все эти события можно командой:
Get-EventLog –LogName Security –InstanceID 4720
Теперь вопрос, как взять имя созданного пользователя из последнего события?
Это нужно, что бы потом отправить это имя в качестве параметра к другому скрипту.
 
Заранее спасибо за помощь!

Всего записей: 19 | Зарегистр. 08-02-2012 | Отправлено: 17:15 22-09-2014
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vadimus3000
$Events = Get-WinEvent -FilterHashtable @{Logname='Security';Id=4720}
foreach ($event in $Events){$Event =[xml]$Event.ToXml(); $event.Event.EventData.data[8]}
 
8 - SamAccountName
9 - DisplayName
10 - UserPrincipalName

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

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 07:14 02-10-2014
Vadimus3000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!
На данный момент у меня получился вот такой скрипт:
 
$Event=Get-EventLog -LogName Security -InstanceId 4720 | Select-Object -First 1 | fl -Property Message | find "SAM Account Name:"
$user=$Event -replace "              SAM Account Name:    "

Всего записей: 19 | Зарегистр. 08-02-2012 | Отправлено: 10:26 02-10-2014
VovaMozg



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vadimus3000
Тогда уж find заменить на select-string
имхо с xml удобнее работать - получаешь все свойства именно как свойства объекта, а не как большой стринг.
Но ведь главное, чоб задача выполнялась

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

Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 19:21 02-10-2014
Mosl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Написал скрипт на powershell для создания бекапа:

Код:
 
Add-PSSnapin Windows.ServerBackup
$pol = new-wbpolicy
$disk = get-wbdisk | where {$_.disknumber -eq 2}
$target = new-wbbackuptarget -disk $disk -Label "Backup Dogovora"
$source1 = new-wbfilespec -filespec "G:\Входящие договора"
$source1 | add-wbfilespec -policy $pol
add-wbbackuptarget -policy $pol -target $target
Start-WBBackup –Policy $pol
 

 
При выполнении выдает такую ошибку:

Код:
 
Start-WBBackup : В экземпляре объекта не задана ссылка на объект.
строка:8 знак:15
+ Start-WBBackup <<<<  –Policy $pol
    + CategoryInfo          : NotSpecified: (:) [Start-WBBackup], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.Windows.ServerBackup.Commands.StartWBBackup
 

Подскажите, пожалуйста, в чем проблема?

Всего записей: 620 | Зарегистр. 09-05-2006 | Отправлено: 12:33 31-10-2014 | Исправлено: Mosl, 12:34 31-10-2014
Odarchuk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть AD и VPN построенный на Cisco. Они "дружат" между собой и если у юзера активирован Network Access Permison на вкладке Dial-In (скрин http://joxi.ru/8An0vjOcqXKzmO ) то он может пользоваться ВПНом используя свой доменный логин/пароль.
 
Но вся соль в том что ВПН разрешается только на определенное время: день/неделя/декада/месяц.
Нужно автоматизировать прекращение доступа к ВПН.
Как я это вижу:
1) создается новый атрибут (или используется существующий) в котором указывается срок действия ВПН
2) При активации ВПНа пользователь добавляется в группу VPN
3) каждый день запускается скрипт который:
а) получает список юзеров группы VPN
б) проверяет каждого юзера и получает значение данного атрибута
в) если атрибут = сегодняшней дате то скрипт меняет значение Network Access Permison и удаляет юзера из группы
 
4) как опция: шлет мыло со списком удаленных юзеров.
 
Кто-то встречал пододбные скрипты??

----------
ManageEngine OpManager и ManageEngine DesktopCentral

Всего записей: 671 | Зарегистр. 20-03-2007 | Отправлено: 12:54 21-11-2014 | Исправлено: Odarchuk, 13:01 21-11-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Несколько вопросов.
 
- как для Get-Content указать кодировку считываемого файла?
- какая есть команда (или чем она там является) типа -replace, но читающую файл не построчно, а как "непрерывный", чтобы можно было в качестве поиска для замены указать что-то типа "^[a-z]+\r?\n" ?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 13:33 17-04-2015
hydromarine666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Прошу помощи в этой теме http://forum.ru-board.com/topic.cgi?forum=33&topic=14331#1

Всего записей: 4 | Зарегистр. 15-04-2015 | Отправлено: 11:25 05-08-2015
NeoAnomaly

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

Цитата:
- как для Get-Content указать кодировку считываемого файла?  

Get-Content для FileSystem провайдера имеет параметр Encoding.
 

Цитата:
- какая есть команда (или чем она там является) типа -replace, но читающую файл не построчно, а как "непрерывный"

Заключи Get-Content в скобки (Get-Content my.txt) | Foreach-Object {$_ -replace <params> } | ...
и тогда контент в pipeline будет уходить не построчно, а после полного чтения.

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 14:48 05-08-2015 | Исправлено: NeoAnomaly, 14:50 05-08-2015
zerbino



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, уважаемые. Подскажите пожалуйста по такому моменту.
В cmd выполняется следующая команда для поиска определенных обновлений - в данном случае KB2923545, но можно через запятую указать любые требуемые

Код:
powershell get-hotfix -id KB2923545,KB2970228

при нахождении любого из перечисленных обновлений в cmd выводится содержимое по типу как ниже, где для каждого обновления своя строка

Код:
 
Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
THIS-PC       Update           KB2923545     THIS-PC\This
THIS-PC       Update           KB2970228     THIS-PC\This
 

если же не находит, туда же, в cmd, выводит

Код:
 
C:\Windows\System32>powershell get-hotfix -id KB2923545,KB2970228
get-hotfix : Не удается найти запрошенное исправление на компьютере "localhost"
. Проверьте введенные данные и повторите выполнение команды.
строка:1 знак:1
+ get-hotfix -id KB2923545
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: ( [Get-HotFix], ArgumentExcept
   ion
    + FullyQualifiedErrorId : GetHotFixNoEntriesFound,Microsoft.PowerShell.Com
   mands.GetHotFixCommand
 

после этого идёт pause для возможности просмотра найденных обновлений, а после нажатия на клавишу Any Key идут друг за другом команды на удаление всего списка обновлений без разбора по очереди

Код:
 
echo Delete KB2923545
start /w wusa.exe /uninstall /kb:2923545 /quiet /norestart
echo Delete KB2970228
start /w wusa.exe /uninstall /kb:2970228 /quiet /norestart
 

Хочется сделать так, чтобы при выводе сообщения "get-hotfix : Не удается найти запрошенное исправление на компьютере "localhost"...." был переход в cmd файле сразу на эхо с выходом - т.е. каким-то образом передать errorlevel или пропарсить вывод powershell в cmd и исходя из этого уже goto или ещё какой if сделать.
В идеале бы хотелось вообще, чтобы после вывода найденных обновлений выполнялись только команды те, которые удаляют только и именно найденные обновления, а не все по порядку.
 
Сможете мне помочь?
Спасибо!

Всего записей: 545 | Зарегистр. 09-06-2003 | Отправлено: 22:03 14-09-2015 | Исправлено: zerbino, 22:14 14-09-2015
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а где код скрипта или хотя бы часть, генерирующая ошибку?
если я правильно понял...
$LastExitCode, Exit, $?

Всего записей: 3522 | Зарегистр. 16-08-2012 | Отправлено: 08:29 15-09-2015
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток.
 
 
Есть две папки  
 
В первой содержится n-ое кол-во папок, вторая изначально пустая.
 
Стоит следующая задача.Чтобы при запуске скриптаво второй папке  появлялись симлинки на все папки из первой(с теми же именами) и соответственно при удалении из первой-пропадали симлинки
 
Заранее спасибо

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 18:09 16-09-2015 | Исправлено: Scaramanga, 18:09 16-09-2015
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scaramanga
а, что не получается? на чём застрял?
 
какую задачу таким способом решаешь?
например для бекапа на симлинках есть прожка

Всего записей: 3522 | Зарегистр. 16-08-2012 | Отправлено: 10:31 17-09-2015 | Исправлено: iNNOKENTIY21, 10:32 17-09-2015
zerbino



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

Цитата:
а где код скрипта или хотя бы часть, генерирующая ошибку?
если я правильно понял...  

 
Спасибо за ответ.. Так мой вопрос как раз в том, как реализовать это.. Мои попытки не увенчались успехом.
 
Сейчас скрипт выглядит так. Я его хочу подшаманить для удаления спай патчей от M$.
 
win7spy_delete.cmd

Всего записей: 545 | Зарегистр. 09-06-2003 | Отправлено: 03:43 19-09-2015 | Исправлено: zerbino, 03:46 19-09-2015
Открыть новую тему     Написать ответ в эту тему

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