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

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

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

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

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавлено в шапку:
Кодирование-декодирование символов в представление вида "\ud83d\udc4d" (UTF16). Например, для скриптов javascript

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 23:26 04-10-2019
farag



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

Код:
 
cls
# Отобразить форму с выпадающим списком накопителей
# Загрузить класс System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms
# Создать графическую форму
$window_form = New-Object System.Windows.Forms.Form
$window_form.Text ="Пример"
$window_form.Width = 600
$window_form.Height = 400
$window_form.AutoSize = $true
# Создать надпись
$Label = New-Object System.Windows.Forms.Label
$Label.Text = "Label"
$Label.Location = New-Object System.Drawing.Point(0,10)
$Label.AutoSize = $true
$window_form.Controls.Add($Label)
# Выпадающий список дисков
$ComboBox = New-Object System.Windows.Forms.ComboBox
$ComboBox.Width = 250
$Disks = Get-PhysicalDisk
Foreach ($Disk in $Disks)
{
    $ComboBox.Items.Add($Disk.FriendlyName);
}
$ComboBox.Location = New-Object System.Drawing.Point(60,10)
$window_form.Controls.Add($ComboBox)
# Надпись
$Label2 = New-Object System.Windows.Forms.Label
$Label2.Text = "Disk size:"
$Label2.Location = New-Object System.Drawing.Point(0,40)
$Label2.AutoSize = $true
$window_form.Controls.Add($Label2)
$Label3 = New-Object System.Windows.Forms.Label
$Label3.Text = ""
$Label3.Location = New-Object System.Drawing.Point(110,40)
$Label3.AutoSize = $true
$window_form.Controls.Add($Label3)
# Кнопка
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(400,10)
$Button.Size = New-Object System.Drawing.Size(120,23)
$Button.Text = "Check"
$window_form.Controls.Add($Button)
#
$Button.Add_Click(
    {
        $Label3.Text = [math]::round(($Disks | Where-Object -FilterScript {$_.FriendlyName -eq $ComboBox.SelectedItem}).Size/1GB,2)
    }
)
# Отобразить форму
$window_form.ShowDialog()
 

 
Как 47 строку правильнее оформить (размер считает правильно)?

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:06 09-10-2019 | Исправлено: farag, 12:07 09-10-2019
YuS_2



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

Цитата:
Как 47 строку правильнее оформить (размер считает правильно)?


Код:
$Label3.Text = "{0:N2} Гб" -f (($Disks | Where-Object -FilterScript {$_.FriendlyName -eq $ComboBox.SelectedItem}).Size/1GB)

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:39 09-10-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Спасибо. То есть никак не сократить эту строку?

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:21 09-10-2019
YuS_2



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

Цитата:
То есть никак не сократить эту строку?

Ну, почему же...
Можно так записать:

Код:
$Label3.Text = "{0:N2} Гб" -f (($Disks |? FriendlyName -eq $ComboBox.SelectedItem).Size/1GB)

за счет отсечения powershell 2.0 и использования алиасов...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 13:37 09-10-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Я имел в виду принципиально все написано правильно, и по-другому не напишешь, используя какие-нибудь другие методы? Просто сел читать про Windows Forms и делаю примеры.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:53 09-10-2019
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Есть вопрос
 
в ПШ сделал общими усилиями скрипт, которые проверяет доступность компов и доступные заносит в файл
это есть
 
Хочу сделать так, чтобы ПШ брал имена компов из этого файла и прибавлял к каждому  
'\\' + "имя компа" + '\c$\Program Files\1cv8'
 
Но пока не выходит
 
Предполагаю, что это лучше делать через ForEach, но ни как не допру, как мне занести с его помощью нужный мне результат в новый файл

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 15:03 09-10-2019 | Исправлено: newhk, 15:04 09-10-2019
YuS_2



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

Цитата:
Просто сел читать про Windows Forms и делаю примеры.

Лучше сразу переходить на WPF, ибо его продвигают сейчас, а Windows.Forms замер в развитии.
Да и проще рисовать формы будет и в xml виде переносить в скрипты...
 
newhk

Цитата:
 доступные заносит в файл  
это есть  

Где есть? В каком виде?
 

Цитата:
Хочу сделать так, чтобы ПШ брал имена компов из этого файла и прибавлял к каждому  
'\\' + "имя компа" + '\c$\Program Files\1cv8'  


Код:
gc in.txt -enc utf8|%{<тут обработка строк>}|sc out.txt -enc utf8


Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:16 09-10-2019
newhk



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

Код:
 
function get-failed {
    process{
        if(test-connection -comp $_ -count 1 -q){
        $failed = [pscustomobject] @{
            Fail = $_
        }
        [array]$faileds += $failed
        write-output $(
            $failed.fail
        )
        }
    }
    end {
        if($faileds){$faileds | Write-Output D:\answer\unreachible3.txt}
    }
}
 
$log = 'd:\answer\unreachible.txt'
$arr2 = @(
    'spb-p59-001'
    'spb-p59-002'
    'spb-p59-003'
    'spb-p59-004'
    'spb-p59-005'
    'spb-p59-006'
    'spb-p59-007'
    'spb-p59-008'
    'spb-p59-009'
    'spb-p59-010'
    'spb-p59-011'
    'spb-p59-012'
    'spb-p59-013'
    'spb-p59-014'
    'spb-p59-015'
    'spb-p59-016'
    'spb-p59-017'
    'spb-p59-018'
    'spb-p59-019'
    'spb-p59-020'
    'spb-p59-021'
    'spb-p59-022'
    'spb-p59-023'
    'spb-p59-024'
    'spb-p59-025'
    'spb-p59-026'
    'spb-p59-027'
    'spb-p59-028'
    'spb-p59-029'
    'spb-p59-030'
    'spb-p59-031'
    'spb-p59-032'
    'spb-p59-033'
    'spb-p59-034'
    'spb-p59-035'
    'spb-p59-036'
    'spb-p59-037'
    'spb-p59-038'
    'spb-p59-039'
    'spb-p59-040'
    'spb-p59-041'
    'spb-p59-042'
    'spb-p59-043'
    'spb-p59-044'
    'spb-p59-045'
    'spb-p59-046'
    'spb-p59-047'
    'spb-p59-048'
    'spb-p59-049'
    'spb-p59-050'
    'spb-p59-051'
    'spb-p59-052'
    'spb-p59-053'
    'spb-p59-054'
    'spb-p59-055'
    'spb-p59-056'
    'spb-p59-057'
    'spb-p59-058'
    'spb-p59-059'
    'spb-p59-060'
    'spb-p59-061'
    'spb-p59-062'
    'spb-p59-063'
    'spb-p59-064'
    'spb-p59-065'
    'spb-p59-066'
    'spb-p59-067'
    'spb-p59-068'
    'spb-p59-069'
    'spb-p59-070'
    'spb-p59-071'
    'spb-p59-072'
    'spb-p59-073'
    'spb-p59-074'
    'spb-p59-075'
    'spb-p59-076'
    'spb-p59-077'
    'spb-p59-078'
    'spb-p59-079'
    'spb-p59-080'
    'spb-p59-081'
    'spb-p59-082'
    'spb-p59-083'
    'spb-p59-084'
    'spb-p59-085'
    'spb-p59-086'
    'spb-p59-087'
    'spb-p59-088'
    'spb-p59-089'
    'spb-p59-090'
    'spb-p59-091'
    'spb-p59-092'
    'spb-p59-093'
    'spb-p59-094'
    'spb-p59-095'
    'spb-p59-096'
    'spb-p59-097'
    'spb-p59-098'
    'spb-p59-099'
    'spb-p59-100'
    'spb-p59-101'
    'spb-p59-102'
    'spb-p59-103'
    'spb-p59-104'
    'spb-p59-105'
    'spb-p59-106'
    'spb-p59-107'
    'spb-p59-108'
    'spb-p59-109'
    'spb-p59-110'
    'spb-p59-111'
    'spb-p59-112'
    'spb-p59-113'
    'spb-p59-114'
    'spb-p59-115'
    'spb-p59-116'
    'spb-p59-117'
    'spb-p59-118'
    'spb-p59-119'
    'spb-p59-120'
    'spb-p59-121'
    'spb-p59-122'
    'spb-p59-123'
    'spb-p59-124'
    'spb-p59-125'
    'spb-p59-126'
    'spb-p59-127'
    'spb-p59-128'
    'spb-p59-129'
    'spb-p59-130'
    'spb-p59-131'
    'spb-p59-132'
    'spb-p59-133'
    'spb-p59-134'
    'spb-p59-135'
    'spb-p59-136'
    'spb-p59-137'
    'spb-p59-138'
    'spb-p59-139'
    'spb-p59-140'
    'spb-p59-141'
    'spb-p59-142'
    'spb-p59-143'
    'spb-p59-144'
    'spb-p59-145'
    'spb-p59-146'
    'spb-p59-147'
    'spb-p59-148'
    'spb-p59-149'
    'spb-p59-150'
)
$arr2|get-failed |out-file $log -enc utf8 -app
 

 
Добавлено:
Здесь есть кривой кусок, но он мне не мешает пока, возможно потом им займусь
 
Добавлено:
YuS_2
Круть!
Спасибо!

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 15:49 09-10-2019
YuS_2



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

Цитата:
Здесь есть кривой кусок

там весь код не совсем ровный
Судя по названию функции, это должен быть перечень не пингующихся хостов, но в коде, как раз, всё наоборот...
При этом, зачем-то формируется пользовательский объект, затем он заносится в массив и на вывод, в конце функции вообще непонятное действие... write-output не выводит данные в файл. И т.д.
В общем, не совсем понятно, что же требовалось в итоге...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:28 09-10-2019
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просьба поделиться утилитой rplstr (из шапки) - оффсайт почему то запрашивает авторизацию при скачивании.
Спасибо !

Всего записей: 4924 | Зарегистр. 05-01-2006 | Отправлено: 21:16 09-10-2019 | Исправлено: mithridat1, 08:34 10-10-2019
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
http://www.kdzone.ru/downloads/utils/rplstr-14.7z

Всего записей: 1316 | Зарегистр. 17-01-2011 | Отправлено: 21:39 09-10-2019
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Ну, я уже написал, что общими усилиями сделал кусок (этот кусок от другого скрипта, который, как раз-таки проверяет доступность и там актуально данное название функции, просто не стал переделывать)

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 10:32 10-10-2019
YuS_2



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

Цитата:
Ну, я уже написал, что общими усилиями сделал кусок

Там много лишнего. И зачем два скрипта делать? Можно ведь обойтись одним:
script.ps1
Это если нужен отдельный лог отвечающих хостов. А если он не нужен, то ещё упростить можно...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:17 10-10-2019 | Исправлено: YuS_2, 14:18 10-10-2019
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Спасибо!
Я в нем кое что переделал, но то что надо

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 09:18 18-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sample.ps1
Код:
class Edition {
    [string] $Name
    [int] $PageCount
}
 
class Magazine : Edition {
    [string] $Periodic
}
 
class Book : Edition {
    [string] $Author
}
 
class Publishing {
    [Edition[]] $Editions = @()
 
    [void] Add([Edition] $Edition) {
        $this.Editions += $Edition
    }
 
    [void] Save([string] $Path) {
        $this.Editions | Export-Clixml -LiteralPath $Path -Force
    }
 
    [void] Load([string] $Path) {
        $this.Editions = Import-Clixml $Path
    }
}
 
$Publishing = [Publishing]::new()
$Path = "$PSScriptRoot\Editions.xml"
 
$SportMagazine = [Magazine]@{
    Periodic  = "Weekly"
    Name      = "Sport Magaszine"
    PageCount = 100
}
 
$ВойнаИМир = [book]@{
    Name      = "Война и мир"
    PageCount = 100500
    Author    = "Лев Николаевич Толстой"
}
 
$Publishing.Add($SportMagazine)
$Publishing.Add($ВойнаИМир)
 
$Publishing.Editions
 
$Publishing.Save($Path)
 
$Publishing.Editions = @()
 
$Publishing.Load($Path)
$Publishing.Editions

Код:
Исключение при задании "Editions" : "Не удается преобразовать значение "Magazine" в тип "Edition". Ошибка: "Не удается преобразовать значение "Magazine" типа "Deserialized.Magazine" в тип "
Edition".""

WTF. Где туплю?

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 14:48 18-10-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Это как бы две вещи "продвинутые" в разные стороны
 1) сериализация в clixml и  
 2) классы с наследованием
 
Ты где-то видел пример/документацию/обещание, чтобы они работали вместе?
Пробовать новые горизонты не тупость, но и результат не всегда положительный.
 
Вполне возможно, что стоит открыть Issuе на гитхабе
Если конечно в pwsh не пофикшено уже
 




Ой, думаю ты снова на коня залез. Разубеди, сделай чего. Это как бы... на землю спустись уже. Объясни, но не умничай, пришибу.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 19:35 18-10-2019 | Исправлено: KLASS, 23:20 18-10-2019
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Напрямую каст не работает. Можно попробовать так:

Код:
 
$this.Editions = Import-Clixml $Path | foreach { $_ -as [type]($_.ToString()) }
 

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 20:17 18-10-2019
iNNOKENTIY21



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

Цитата:
Напрямую каст не работает. Можно попробовать так:
$this.Editions = Import-Clixml $Path | foreach { $_ -as [type]($_.ToString()) }

Печально, что не работает. Спасибо, так работает.
Так же работает, если убрать тип:

Код:
class Publishing {
    [Edition[]] $Editions = @()

 
И как лучше?

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 20:49 18-10-2019
YuS_2



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

Цитата:
И как лучше?

Если не работает автоматическое приведение типов (а как оно будет работать, собственно? Класс типа создан вручную и поэтому соответствий ему, вряд ли будет найдено...), то лучше не задавать конкретный тип массиву, пусть там будет обычный [object[]] ... System.Array, ибо именно такой тип получаем на выходе:  
Код:
Import-Clixml $Path

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:20 18-10-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Закладки » Сценарии для Windows


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru