|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] скрипт отрабатывает только через PS ISE |
|
PowerShell - [решено] скрипт отрабатывает только через PS ISE
|
Пользователь Сообщения: 102 |
Здравствуйте!
скрипт корректно отрабатывает только через PS ISE. При запуске самого скрипта двойным щелчком черное окно PS открывается и тут же закрывается. При запуске через открытое окно - зависает. при этом другие скрипты отрабатывают как положено. такая же проблема и у другого скрипта, где есть создание формы выбора файла (хотя раньше на вин xp работало). проверил на другой машине (терминал вин серв 2008) черное окно ps открывается и висит. сам же скрипт открывает xml файл и извлекает из него данные и записывает в ексель. сам скрипт
<# .SYNOPSIS обработка XML росреестра .DESCRIPTION читает XML файл росреестра ЕГРН и сохраняет записи о частях в ексель .NOTES Автор: Александр Анатольевич Почта: Телефон: #> param ( # создаем форму для запроса файла [string]$Title, [string]$Directory, [string]$Filter="All Files (*.xml)|*.xml" ) [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null $objForm = New-Object System.Windows.Forms.OpenFileDialog $objForm.InitialDirectory = $Directory $objForm.Filter = $Filter $objForm.Title = $Title $Show = $objForm.ShowDialog() If ($Show -eq "OK"){ $path=$objForm.FileName } Else { read-host "Файл не выбран. выход." start-sleep 8 break } # создаем новый объект как xml $oXmlDocument = New-Object -TypeName System.Xml.XmlDocument # загружаем текущий файл в переменную обработки $oXmlDocument.load($path) $OutNameXlsx=$path -Replace "xml","xlsx" #---#------------------------------------------------------------------------------------------------------- #-->Функция оформления строки в екселе function Excel_format_1 { #оформляем шапку $lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type] $colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type] #---по центру, рамка, выделить жирным $selection.Interior.ColorIndex = 40 $selection.VerticalAlignment = -4108 #по центру $selection.HorizontalAlignment = -4108 #по центру # Выделяем таблицу (рамка) $selection.borders.LineStyle = $lineStyle::xlContinuous $selection.borders.ColorIndex = $colorIndex::xlColorIndexAutomatic # Разукрашиваем $selection.Font.Size = 12 $selection.Font.ColorIndex = 55 $selection.Font.Color = 8210719 # Выделяем жирным $selection.Font.Bold = $true # Ровняем ширину столбцов $UsedRange = $ws.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null } function Excel_format_2 { #оформляем основное содержимое $lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type] $colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type] #---по центру, по лево $selection.VerticalAlignment = -4108 #по центру $selection.HorizontalAlignment = -4131 #по лево # Ровняем ширину столбцов $UsedRange = $ws.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null } #--<Функция оформления строки в екселе #---#------------------------------------------------------------------------------------------------------- #href="https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Big/ZU/07/Common.xsl" if (!($oXmlDocument."xml-stylesheet".split("/")[6] -eq "Reestr_Extract_Big")) { Read-Host "Схема файла не соответствует Reestr_Extract_Big" break } else { Write-Host "Созаем таблицу координат.." #-->Создаем эксель-файл, форматируем #-->Первый лист $ex = New-Object -Com Excel.Application #-----------------$ex.visible = $true #-----------------$ex.DisplayAlerts = $False $wb = $ex.Workbooks.Add() $ws = $wb.Worksheets.Add() $ws = $wb.Worksheets.Item(1) # получить листы $s1 = $wb.worksheets | where {$_.name -eq "лист1"} $s1.activate() $s1.Name = 'Учетный номер части' $Row=1 # Заполняем ячейки - шапку таблицы $s1.Cells.Item($Row,1) = "Учетный номер части" $s1.Cells.Item($Row,2) = "Учетный номер части и номер" # Оформляем $selection = $s1.Range(("A{0}" -f $Row),("B{0}" -f $Row)) Excel_format_1 # Ровняем ширину столбцов $UsedRange = $s1.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null $selection = $null $wb.SaveAs("$OutNameXlsx") Write-Host "таблица создана" Write-Host "заполняем таблицу.." start-sleep -s 2 #<--Таблица создана #-->Заполнение 1 листа () $Row = $s1.Range("A65536").End(-4162).Row + 1 $CadastralNumber = $oXmlDocument.KVZU.Parcels.Parcel.CadastralNumber #-->Прогресс-бар $КоличествоЧастей = 0 foreach ($item in $oXmlDocument.KVZU.Parcels.Parcel.SubParcels.SubParcel) { $КоличествоЧастей++ } $percent=$КоличествоЧастей/100 $c = 0 Write-Host "Будет обработано $КоличествоЧастей записей" #<--Прогресс-бар $oXmlDocument.KVZU.Parcels.Parcel.SubParcels.SubParcel |` ForEach-Object -Process { #-->Прогресс-бар $c++;[int]$a = $c/$percent Write-Progress -Activity "Идет обработка…"` -PercentComplete $a -CurrentOperation "$a% завершено" ` -Status "Пожалуйста подождите" #<--Прогресс-бар # Заполняем $s1.Cells.Item($Row,1) = $_.NumberRecord #$Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName $s1.Cells.Item($Row,2) = $CadastralNumber + "/" + $_.NumberRecord $Row++ } Write-Progress -Activity "Идет обработка…" ` -Completed ` -Status "готово" # Оформляем $selection = $s1.Range(("A{0}" -f $Row),("F{0}" -f $Row)) Excel_format_2 # Ровняем ширину столбцов $UsedRange = $s1.UsedRange $UsedRange.EntireColumn.AutoFit() | Out-Null $selection = $null $wb.Save() Write-Host "таблица координат заполнена" start-sleep -s 2 $wb.Close($true) $ex.Quit() Write-Host "Готово!" start-sleep -s 8 }#<--доп инфа из ЕГРН |
|
Отправлено: 06:41, 23-08-2017 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать так и не понял в чем проблема. обновил PS до 5-й версии и все работает (была 2, хотя ранее на ней работало)
|
Отправлено: 09:42, 24-08-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - скрипт отключения пользователей из Exel в AD через PS | yuriy.nepomnyashchiy.3@fb | Скриптовые языки администрирования Windows | 31 | 12-07-2017 17:25 | |
Разное - [решено] Не отрабатывает скрипт создания точки восстановления. | sonyas75 | Microsoft Windows 10 | 16 | 22-07-2016 09:35 | |
2008 R2 - [решено] Не отрабатывает logon скрипт | nokogerra | Windows Server 2008/2008 R2 | 10 | 15-08-2014 14:11 | |
Не отрабатывает logoff скрипт в групповой политике | FreedomF2000 | Microsoft Windows NT/2000/2003 | 0 | 30-12-2010 11:21 | |
[решено] Некорректно отрабатывает скрипт финализации | saavaage | AutoIt | 4 | 01-08-2010 14:28 |
|