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

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

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

Всего записей: 762 | Зарегистр. 21-04-2010 | Отправлено: 10:34 25-09-2012
komputeryuzer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот нашол такой код...
делает "ресторе", "мак" и "мин"  
 
$hwnd = @(Get-Process Notepad)[0].MainWindowHandle
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 4)
 
можно ли тут как то задать координаты окна?

Всего записей: 762 | Зарегистр. 21-04-2010 | Отправлено: 15:24 25-09-2012
kkknyazzz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, помогите пожалуйста скрипт переписать. Сеть простая - Server 2003 и домен человек на 5 компы разные XP, 7-ка. Скрипт по типу прикрепленного ниже - база Access, но сохранить в нее с других компов нужно логи из журналов. (ComputerName,TimeGenerated,EventCode,EventType,SourceName,RecordNumber,Logfile,Message). В базе одна таблица с аналогичными графами.
 
http://forum.oszone.net/thread-208521.html

Всего записей: 5 | Зарегистр. 28-06-2012 | Отправлено: 13:45 08-11-2012
kURONO



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

Цитата:
#каталог с файлами для загрузки
$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)
}  

 
если я изменю его так, то как я понимаю, он будет брать все папки из d:\Upload и заливать на FTP
 

Код:
 
#каталог с директориями для загрузки
$dir = Get-ChildItem d:\Upload -Recurse | Where {$_.psIsContainer -eq $true}
 
#куда будут грузится файлы
$ftp = "ftp://10.10.10.10/Volume_2/Backups/Bazes/"
#имя пользователя
$user = "log"
#пароль доступа
$pass = "pass"
 
#создаем веб-клиент
$client = New-Object System.Net.WebClient
#передаем имя и пароль для авторизации
$client.credentials = New-Object System.Net.NetworkCredential($user, $pass)
 
#ну, а далее сам процесс загрузки папок
foreach($item in $dir) {
   "Загрузга директории $item..."
    $uri = New-Object System.Uri($ftp + $item.Name)
    $client.UploadFile($uri, $item.FullName)
}
 

 
Однако при запуске на исполнение, я получаю ошибки

Код:
 
Исключение при вызове "UploadFile" с "2" аргументами: "Исключение во время запроса WebClient."
C:\Users\mity.FIZPRIBOR\Desktop\FTP.ps1:20 знак:23
+     $client.UploadFile <<<< ($uri, $item.FullName)
    + CategoryInfo          : NotSpecified: ( [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException
 

 
хотелось бы понять в чём ошибка и как исправить.[q][/q]
 
Update
Смысл ошибки понят, дело в принципе работы FTP
Скрипт ComradG с файлами работать будет, а для папок надо сначала создавать такую же структуру папок на FTP, а потом уже заливать файло, сам FTP создавать папки не умеет.

Всего записей: 133 | Зарегистр. 14-12-2006 | Отправлено: 16:25 29-11-2012 | Исправлено: kURONO, 13:07 30-11-2012
Wsador

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Есть скрипт:
Код:
# 28.01.2013
# Move all files from Directory folder to Data
 
$fromDirPath = "\\server\Directory$\"
$toDirPath = "F:\Folder\Data\"
 
If  ((Test-Path $toDirPath) -eq $true) # Check if script run on active node
{
    # Local and remote dirs. Format - "<local dir>*<remote dir>"
    $nameArr = @("Data1*Papka1","Data2*Papka2","Data3*Papka3","Data4*Papka4")
 
    $errorMsg = ""
 
    $logFile = "F:\Folder\Data\ScriptLogs.log"
 
    # Error messages recipient.
    $to1 = ”user@yourdomain.ru”
 
    # SMTP server settings.
    $smtpServer = "mailserver.local"
    $SMTPPort = "888"
    $msg = new-object Net.Mail.MailMessage
    $msg.From = "no-reply@yourdomain.ru"
    $msg.To.Add($to1)
 
 
    function sendEMail($subj,$body)
    {
        $msg.Subject = $subj
        $msg.Body = $body
        $smtp = new-object Net.Mail.SmtpClient($smtpServer,$SMTPPort)
        $smtp.Send($msg)
    }
 
    function moveFiles ($from, $to)
    {
        $status = 0
        
        
        $lPath = $fromDirPath + $from
        $rPath = $toDirPath + $to
        if (((Test-Path $lPath)) -and ((Test-Path $rPath)))
        {
            $items = Get-ChildItem ($lPath + "\*") -Include "*.txt"
            if ($items -ne 0)
            {
                foreach ($item in $items)
                {
                    try
                    {
                        Move-Item -Path $item.FullName -Destination ($rPath + "\" + $item.Name) -Force -Confirm:$false
                        $message = (Get-Date -UFormat "%d-%m-%Y %H:%M") + "  | INFO | File " + $item.FullName + " has been sucessfully moved to destination - " + ($rPath + "\" + $item.Name) + "."
                    }
                    catch
                    {
                        $status = 1
                        $global:errorMsg = $global:errorMsg + "`nCannot move file " + $item.FullName
                        $message = (Get-Date -UFormat "%d-%m-%Y %H:%M") + "  | ERROR | File " + $item.FullName + " cannot be moved to destination - " + ($rPath + "\" + $item.Name) + "."
                    }
                    echo $message >> $logFile
                }
            }
            if ((Get-ChildItem $lPath).Count -ne 0)
            {
                $status = 1
                $global:errorMsg = $global:errorMsg + "`nThere are unknown files: " + (Get-ChildItem $lPath)
            }
        }
        else
        {
            $status = 1
            if (!(Test-Path $lPath))
            {
                $global:errorMsg = $global:errorMsg + "`nLocal path error. (" + $lPath + ")."
            }
            elseif (!(Test-Path $rPath))
            {
                $global:errorMsg = $global:errorMsg + "`nRemote path error. (" + $rPath + ")."
            }
            else
            {
                $global:errorMsg = $global:errorMsg + "`nUnknown file error. (local - " + $lPath + " , remote  - " + $rPath + ")."
            }
        }
        return $status
    }
 
 
    foreach ($str in $nameArr)
    {
        $splitStr = $str -Split "\*"
        if ($splitStr.Count -eq 2)
        {
            if ((moveFiles $splitStr[0] $splitStr[1]))
            {
                sendEmail "Script Work Error" $errorMsg
            }
        }
    }
}

 
Суть скрипта проста - он перемещает данные с 4 папок с фтп в директории Directory в 4 соответствующие папки, хранящиеся в Data.
Все нормально работало, но тут начали заливать файлы с именами вида XX[dd.mm.yyyy]YY[dd.mm.yyyy] и тут начались проблемы. Скрипт не перемещает файлы, в которых в имени содержится знак [.  
Как его в этом скрипте лучше экранировать [ или может имя файла целиком?  

Всего записей: 2 | Зарегистр. 25-08-2010 | Отправлено: 12:36 16-03-2013
Lamerok



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день!
 
Недавно появилась такая задачка:
Сделать выборку виртуальных машин VMware по версии VMware tools,
а также отфильтровать по типу операционной системы (Windows, Linux & etc) и выложить отчет в удобочитаемом виде.  
Написал не большой скрипт.
Код ниже.  Добавил комментарии, чтобы было все понятно.
 
Код скрипта
 
Скрипт был написан для того, чтобы решить проблему когда VMware tools сыпят в лог ошибку с Event ID 1000:

Цитата:
[ warning] [vmusr:vmusr] Error in the RPC receive loop: RpcIn: Unable to send.

 
Для решения этой проблемы необходимо добавить файл tools.conf с каталог с установленными VMware Tools с параметром  

Цитата:
 
[logging]
vmusr.level = error
 

Копировать вручную , сами понимаете, очень не интересно, поэтому я написал еще один не большой скрипт,
который копирует файл tools.conf на все хосты из списка, которые я получил с помощью первого скрипта и создает два файла отчета failed.csv  и success.csv
Также данный скрипт можно использовать, если необходимо скопировать один или несколько файлов на несколько серверов или рабочих станций.
 
Код скрипта
 
Надеюсь, кому-нибудь пригодится. Пользуйтесь
 
С уважением,


----------
Когда говоришь, что думаешь — думай что говоришь и не всегда говори то, что знаешь, но всегда знай, что говоришь. (c) ¯\_(ツ)_/¯

Всего записей: 705 | Зарегистр. 17-04-2002 | Отправлено: 12:07 26-04-2013 | Исправлено: Lamerok, 12:12 26-04-2013
othernight

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

Всего записей: 3 | Зарегистр. 30-12-2011 | Отправлено: 15:25 16-07-2013 | Исправлено: othernight, 16:27 16-07-2013
beastestly

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер! Вопрос такой: мне нужно сохранить в файл страницу сайта. Можно ли сделать это средствами powershell? Заранее спасибо всем откликнувшимся.

Всего записей: 6 | Зарегистр. 26-10-2010 | Отправлено: 19:51 11-09-2013
angeltwo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
beastestly
Тут есть пример, как сохранить страницу в веб-архив. Но он уж больно странный, эмулирует нажатие клавиши в диалоговом окне Сохранить как у IE. У меня этот код работает, только если в последней строке $ie.ExecWB(4,2,"page.mht",[ref]$null) цифру 2 заменить на цифру 1. В этом случае этот диалог будет отображаться на экране. А с цифрой 2 у меня по крайней мере выдает ошибку и не сохраняет. А других методов для сохранения кроме ExecWB вроде как и нет. Если нужно сохранить просто один html, то это можно через ie.Document сделать перенаправляя вывод html в одном из его свойств в файл.

Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 22:53 14-09-2013
DarkMasterW

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

Всего записей: 284 | Зарегистр. 17-04-2010 | Отправлено: 02:34 20-10-2013
mikel23

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Что то я совсем встрял.Наверное просто должно быть.
Есть папка на диске D:\folder\
В него сохраняются файлы вида
001.zip
002.zip
003.zip
и т. д.
Как можно узнать какой файл следующий.
Т.е мне нужно получить в переменную с 004. Если там 3 файла. А если нет то 001.
 
Спасибо!

Всего записей: 3 | Зарегистр. 04-10-2011 | Отправлено: 15:50 31-10-2013
angeltwo

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

Код:
 
$NextNumberFile = 0
(Get-ChildItem d:\Folder\*.zip) | %{if ($_.BaseName) {$NextNumberFile = $_.BaseName}}
"{0:D3}" -f (([System.Convert]::ToInt32($NextNumberFile))+1)
 

 
P.S. Не делал проверку выхода за границы диапазона, не знаю, что Вы хотите видеть, когда имя файла доберется до 999.zip.

Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 08:43 01-11-2013
mikel23

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я использовал  
(Get-ChildItem D:\folder).count
 
Все равно спасибо.
 
Добавлено:
Добрый день.
Нужно скопировать файлы по сети на \\computername\c$\folder
copy-item как я понял не поддерживает аунтификацию
copy-item d:\file -destination \\computername\c$\folder -Credential("dom\administrator","123456")
так не работает
 
Как можно иначе через net use?Как то не хочется.

Всего записей: 3 | Зарегистр. 04-10-2011 | Отправлено: 09:03 01-11-2013
Rusell



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую форумчане, обращаюсь за помощью. Ситуация следующая:
Имеем домен Active Directory на Windows 2003 + Secondary Domain Controller 2008R2 (который вскоре станет основным контроллером, а первый обновим до 2008R2).
Используя PowerShell необходимо реализовать создание каталогов для пользователей домена с последующей выдачей прав.
Как то так:
\\fileserver\$Group - папка OU с наименованием отдела
 
\\fileserver\$Group\$User (выводимое имя, Иванов Виконтий Адольфович)
В корне этой папки файлы создавать нельзя никому
\\fileserver\$Group\$User\!Просмотр
Просматривать файлы может любой сотрудник. Создавать, изменять и удалять только владелец
\\fileserver\$Group\$User\!Редактирование
Создавать, просматривать, изменять и удалять файлы может любой сотрудник  
\\fileserver\$Group\$User\!Личная
Недоступна для прочих пользователей. Создавать, просматривать, изменять и удалять файлы может только владелец-сотрудник.
 
Пока накидал следующее но не работает, завтра буду перелопачивать

Код:
 
cls
Import-Module ActiveDirectory
$Dir = "D:\Users"
 
$Groups = Get-ADGroup -Filter * -SearchBase "DC=domain,DC=ru" | ft name
 
foreach ($Group in $Groups )
    {
 $Users = Get-ADGroupMember $Group
 foreach ($User in $Users)  
        {
        $Path = New-Item -ItemType Directory -Path $Dir -Name $User
        $Args = New-Object  system.security.accesscontrol.filesystemaccessrule($User,"Modify,   Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow")
        $ACL = Get-Acl $Path
        $ACL.SetAccessRule($Args)
        Set-Acl $Path $ACL
 
        }
    }
 

Всего записей: 9 | Зарегистр. 28-01-2009 | Отправлено: 16:52 23-01-2014
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
Открыть новую тему     Написать ответ в эту тему

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