Thursday, 1 September 2022

Закавыка в Powershell.


Всем привет.

В процессе написания кода был вынужден еще раз вернуться к... кавычкам в Powershell.

Итак, одинарными кавычками ' ' в Powershell выделяют нерасширяемые строки. В таких строках не действуют escape-последовательности и не происходит подстановка значений переменных.

Двойные кавычки " " используются для создания расширяемых строк. Если внутри такой строки встречается имя переменной или другое выражение, кото­рое может быть вычислено, то в строку подставляется значение данной пере­менной или результат вычисления выражения. Также в расширяемых строках действуют escape-последовательности. Например, если в переменной $name хра­нится слово ’’Иван”, то в переменной $hello = "Привет, $паше! `n" будет записа­на строка ’Привет, Иван!’ и символ перевода строки.

Знак ` (обратный апостроф или гравис) является в PowerShell экранирующим символом. Внутри строки в двойных кавычках обратный апостроф задает escape-последовательность (например, `n означает перевод строки). Использова­ ние его перед пробелом внутри параметров команды позволяет не указывать ка­вычки для путей к файлам или каталогам, содержащим пробелы (например, cd C:\Program Files). Если обратный апостроф является последним символом в командной строке, то ввод команды продолжается со следующей строки (это позволяет выполнять в PowerShell многострочные команды). По сути гравис не является кавычкой как таковой, но его укажем тоже.

Ок, а теперь наглядные примеры по всем трем видам:

Clear-Host

 

Write-Host '1)'

Write-Host "String text"

Write-Host 'String text'

Результат работы скрипта:

1)

String text

String text

 

Saturday, 27 August 2022

Обратный звонок.

Всем привет. 

Еще одна почемучка на злобу дня.

- Вадим Николаевич?

- Нет, это не Вадим Николаевич. А кто спрашивает?

- Это Нина.

- Нина? Почему у вас такой странный голос? И кто такой  Вадим Николаевич?

- Странный голос? Мне  Вадим Николаевич звонил с этого номера. Простите, а Вы кто?

- Все-таки странный у вас голос. Неожиданно тонкий. Похоже Вы огорчены чем-нибудь?

- Не знаю. И все же кто говорит со мной?

- Вы меня не знаете, скоре я Вас тоже. А Вадим Николаевич Вам кто?

— Наверное, я все-таки ошиблась номером, — сказала Нина. — И я Вас не знаю.

— Ок, я точно не Вадим Николаевич! Я Олег. Подойдет?

— Ну вот! — Нина вздохнула, будто ей жаль было прекращать разговор. — Теперь еще и Олег.

— Простите, — я извинился и дал отбой связи.

Я не сразу набрал ответный вызов. Конечно, я не  Вадим Николаевич. Какое у меня может быть дело к неизвестной Нине? Никакого. Просто хотелось узнать, откуда она. Есть ли у нее дом, а если она не дома как многие сейчас, то это ничего не меняет. 

Friday, 26 August 2022

WinForms альтернативи.

Всім привіт.

Сьогодні поговоримо про альтернативи створення WinForms.

WPF vs ShowUI

Windows Presentation Foundation (WPF) є іншим, новішим засобом створення GUI в .NET. Ми не говоримо про інструмент точно так само, як PowerShell Studio для WPF, але ви можете не відчувати того що він вам потрібен. WPF не створює графічний інтерфейс програмно, як це робить WinForms. Натомість визначення графічного інтерфейсу  міститься у файлі XML (технічно конкретний формат XML називається XAML, для Extensible Application Markup Language). Ви можете отримати будь-яку з  безкоштовних «Express» версій Visual Studio та використовувати її вбудований інструмент для створення форм WPF, який дуже схожий на PowerShell Studio, для створення файлу XAML. Тоді просто скажемо PowerShell (ну, ви скажете .NET) завантажити XAML і щось з ним зробити. Наступний код демонструє приклад того, про що ми говоримо.


Wednesday, 24 August 2022

Output data by Poweshell Studio in runtime.

Hi all.

If you newbee coder in Poweshell Studio you need simple method for output debug information in runtime. So I can present some variants for you.


1. You can easy test your form by sending output to Out-String and then Write-Host. For

example, in your form you could end up with a line like this:

<code to get data> | Out-String | Write-Host


2. So the next it's very popular method for output data in WinForms. It's Out-GridView, I wrote about it super commandlet early:

$entries = Get-EventLog -Computer $ComputerName.Text -Log $EventLogName.SelectedItem

$entries | Out-GridView


3. If you don’t want to create additional forms, there are several controls you can use within the form itself to display your results. You can use a Label control for a simple one-line result. Just set the Text property:

$labelDeviceID.Text=$data.deviceID

$labelFreespace.Text=$data.FreeGB

$labelSize.Text=$data.SizeGB

$labelVolume.Text=$data.Volumename

Sure, don't forget to set property $label.Visible = False for finishing, or remove all debug's labels from your Form before Build.


4. You could use a RichTextBox control. This control has some interesting visual properties you can experiment with. If you use this control, set the font to a fixed-width font like Consolas, especially if you want to display PowerShell output. Both of these controls expect strings, so you might need to reformat any PowerShell output by piping it to Out-String:

#clear any existing text box values

$RichTextBoxResults.Clear()

$data=<my command>

$RichTextBoxResults.Text=$data | Out-String


5. And the last option, although the most complicated of the bunch, is a DataGridView control. This is like what you get when you pipe results to Out-Gridview, except the table is in your form. You put data in the control via its DataSource property, which is an array of binding values. Fortunately, PowerShell Studio has a helper function called Update-DataGridView that makes it easier to populate it. Here’s a code snippet of what that might look like:

#clear the grid before

$datagridview1.ClearSelection()

#get data

$data=Get-WmiObject Win32_LogicalDisk -Filter "drivetype=3" -ComputerName $Computername.Text | Select "DeviceID",@{Name="SizeGB";Expression={"{0:N2}" -f ($_.Size/

1GB)}}, @{Name="FreeGB";Expression={"{0:N2}" -f ($_.Freespace/1GB)}},"VolumeName"

#add the data to the control

Update-DataGridView -DataGridView $datagridview1 -Item $data


See you later.

Tuesday, 23 August 2022

Измеряем пропускную способность сети с помощью IPERF3.

Всем привет.

Утилита IPERF3 позволит убедиться что ваша система не имеет узких мест.

IPERF3 можно использовать для выявления узких мест или проблем, которые могут возникнуть во время передачи данных по сети. IPERF3 - это бесплатный инструмент с открытым исходным кодом, который широко используется для измерения максимально достижимой пропускной способности между двухточечными соединениями и может использоваться с протоколами TCP и UDP.

Узкие места могут возникать при попытке передать файлы в разные места сети. Низкая пропускная способность может произойти либо на уровне сети, либо на уровне файлового хранилища (обычно при записи и чтении с диска). 

С чего начать?

Скопируйте утилиту IPERF3 на хосты, которые вы хотите протестировать (для Windows нужна еще будет cygwin1.dll). Обеcпечьте себе доступ к обеим машинам, на которых вы будете запускать тесты. Убедитесь, что вы разрешаете трафик UDP (чтобы гарантировать, что мы сможем использовать ускорение).

Синтаксис командной строки IPERF3 прост. Общий синтаксис для запуска теста описан ниже:

  • команды на стороне сервера: iperf3 -s [ опции ]
  • команды на стороне клиента: iperf3 -c [ опции ]

Ниже перечислены некоторые из вариантов:

Общие команды IPERF3:

-f, –format [кмКМ]

Буква, указывающая формат для печати чисел пропускной способности. Поддерживаемые форматы:

'k' = Кбит / сек 'K' = КБайт / сек

'm' = Мбит / с 'M' = МБит / с

-J, –Json вывод в формате JSON.

Серверные команды IPERF3:

-F, -имя файла. На стороне сервера: чтение из сети и запись в файл, а не выбрасывание данных.

Клиентские команды IPERF3:

-F, -имя файла. На стороне клиента: чтение из файла и запись в сеть вместо использования случайных данных;

-u, –udp Используем UDP, а не TCP.

-b, – пропускная способность n [км]. Установите целевую полосу пропускания на n бит / сек (по умолчанию 1 Мбит / сек для UDP, без ограничений для TCP). Если имеется несколько потоков (флаг -P), ограничение полосы пропускания применяется отдельно к каждому потоку.  Обязательно при тестировании UDP.

-R, – реверс. Запуск в обратном режиме: сервер отправляет, клиент получает. Что очень удобно, нам не надо переключаться с клиента на сервер фактически. 

-t, –время n. Время в секундах для передачи. По умолчанию 10 секунд.

Версия на печать

Популярное