|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 | |
|