Инструменты пользователя

Инструменты сайта


scripts:ps

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
scripts:ps [26.06.2025 22:00] – [Прочее] viacheslavscripts:ps [31.07.2025 14:17] (текущий) – [Псевдонимы (алиасы)] viacheslav
Строка 26: Строка 26:
 </code> </code>
 https://devblogs.microsoft.com/scripting/powertip-reload-your-powershell-profile/ https://devblogs.microsoft.com/scripting/powertip-reload-your-powershell-profile/
 +
 +==== Неправильная кодировка в консоли ====
 +Особенно характерно для Powershell ISE.
 +
 +<code powershell>
 +# Сохранить исходную кодировку
 +$oldEnc = [console]::OutputEncoding
 +# Задать нужную и выполнить команду
 +[console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
 +$result = & curl.exe -X GET -su $cred $url
 +# Вернуть исходную кодировку
 +[console]::OutputEncoding = $oldEnc
 +</code>
 +https://stackoverflow.com/questions/58438095/powershell-string-variable-with-utf-8-encoding
 ===== Active Directory ===== ===== Active Directory =====
 ==== Показать значение атрибута msDS-cloudExtensionAttribute1 текущего пользователя ==== ==== Показать значение атрибута msDS-cloudExtensionAttribute1 текущего пользователя ====
Строка 800: Строка 814:
 </code> </code>
  
-Вычистить ненужные строки и мусор, разделить текст на сегменты, создать структурированные объекты. Разделителем для ''ConvertFrom-StringData'' должен быть ''=''.+Вычистить ненужные строки и мусор, разделить текст на сегменты, создать структурированные объекты. Разделитель ''ConvertFrom-StringData'' по умолчанию ''=''.
 <code powershell> <code powershell>
 (Get-Content .\opera.adr -Raw) -replace '^Opera[\s\S]*?#CONTACT' -split '#CONTACT|#FOLDER' |% { (Get-Content .\opera.adr -Raw) -replace '^Opera[\s\S]*?#CONTACT' -split '#CONTACT|#FOLDER' |% {
Строка 893: Строка 907:
 https://stackoverflow.com/questions/6413182/how-to-display-values-in-asp-net-chart-control\\ https://stackoverflow.com/questions/6413182/how-to-display-values-in-asp-net-chart-control\\
 https://stackoverflow.com/questions/1058572/hiding-the-gridlines-on-an-asp-net-chart-control/1368853 https://stackoverflow.com/questions/1058572/hiding-the-gridlines-on-an-asp-net-chart-control/1368853
 +
 +===== Локальная сеть =====
 +==== При входе на терминальный сервер выход из старых сессий на других серверах ====
 +Логон-скрипт для пользователя.\\
 +Из списка, где перечислены все терминальные сервера, выбираются все, кроме того, на котором сработал скрипт.\\
 +Далее для каждого сервера выполняется выборка и выход из сессии, если юзер найден.
 +<code powershell>
 +$servers = @(
 +"SRV-TL-TSD0108"
 +"SRV-TL-TSD0208"
 +"SRV-TL-TSD0308"
 +"SRV-TL-TSD0408"
 +"SRV-TL-TSD0508"
 +"SRV-TL-TSD0608"
 +) -ne $env:COMPUTERNAME
 +
 +$servers |% {
 +$users = qwinsta /server:$_ |% {$_.trim() -replace "\s+",","} |ConvertFrom-Csv
 +    if ($user = $users |? ПОЛЬЗОВАТЕЛЬ -eq $env:username) {
 +        logoff /server:$_ $user.id
 +    }
 +}
 +</code>
  
 ===== Интернет ===== ===== Интернет =====
Строка 1167: Строка 1204:
 [environment]::getfolderpath('startup') [environment]::getfolderpath('startup')
 C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
 +</code>
 +
 +==== Объём каталогов у пользователей на терминальном сервере ====
 +<code powershell>
 +# Корень с каталогами пользователей
 +$users = dir "c:\users" -Directory
 +# Файл отчёта
 +$reportFile = "c:\temp\$(get-date -f yyyy-MM-dd-HH-mm-ss) Отчёт по профилям пользователей.csv"
 +
 +function Measure-Folder ($path,$displayname) {
 +    if (test-path $path) {$size = ((dir $path -file -recurse |select -expand length |measure -Sum).sum / 1mb).ToString("0.00")}
 +    else {$size = "Отказано в доступе"}
 +    "$($path.Split('\')[-2]);$displayname;$size"
 +}
 +
 +$report = foreach ($user in $users) {
 +    Measure-Folder -path "$($user.fullname)\desktop" -displayname "Рабочий стол"
 +    Measure-Folder -path "$($user.fullname)\downloads" -displayname "Загрузки"
 +    Measure-Folder -path "$($user.fullname)\videos" -displayname "Видео"
 +}
 +
 +# Сохранение
 +"Имя пользователя;Папка;Размер (МБ)" > $reportFile
 +$report >> $reportFile
 </code> </code>
  
Строка 1187: Строка 1248:
 https://learn.microsoft.com/en-us/dotnet/api/microsoft.win32.registryvaluekind https://learn.microsoft.com/en-us/dotnet/api/microsoft.win32.registryvaluekind
 ===== Время ===== ===== Время =====
 +==== Секунды в dd.hh:mm:ss ====
 +<code powershell>
 +[timespan]::fromseconds("336621").tostring()
 +3.21:30:21
 +</code>
 +
 ==== Дата старого стиля в новый ==== ==== Дата старого стиля в новый ====
 <code powershell> <code powershell>
-$d = (read-host "Введите дату, например, 27.11.1906") -as [System.DateOnly]+$d = (read-host "Введите дату, например, 27.11.1906") -as [datetime]
  
 switch ($d) switch ($d)
 { {
-    {$_ -lt ('5.10.1582' -as [System.DateOnly])} {"Неприменимо"; break} +    {$_ -lt ('5.10.1582' -as [datetime])} {"Неприменимо"; break} 
-    {$_ -lt ('19.2.1700' -as [System.DateOnly])} {$_.AddDays(10).ToLongDateString(); break} +    {$_ -lt ('19.2.1700' -as [datetime])} {$_.AddDays(10).ToLongDateString(); break} 
-    {$_ -lt ('18.2.1800' -as [System.DateOnly])} {$_.AddDays(11).ToLongDateString(); break} +    {$_ -lt ('18.2.1800' -as [datetime])} {$_.AddDays(11).ToLongDateString(); break} 
-    {$_ -lt ('17.2.1900' -as [System.DateOnly])} {$_.AddDays(12).ToLongDateString(); break}+    {$_ -lt ('17.2.1900' -as [datetime])} {$_.AddDays(12).ToLongDateString(); break}
     default {$_.AddDays(13).ToLongDateString()}     default {$_.AddDays(13).ToLongDateString()}
 } }
Строка 1213: Строка 1280:
 https://www.pluralsight.com/blog/tutorials/measure-powershell-scripts-speed https://www.pluralsight.com/blog/tutorials/measure-powershell-scripts-speed
  
-==== Секунды в dd.hh:mm:ss ==== +
-<code powershell> +
-[timespan]::fromseconds("336621").tostring() +
-3.21:30:21 +
-</code>+
 ==== Текст в речь ==== ==== Текст в речь ====
 <code powershell> <code powershell>
Строка 1303: Строка 1366:
  
 https://www.timatlee.com/post/powershell-itext/ https://www.timatlee.com/post/powershell-itext/
 +
 +==== Число прописью ====
 +<code powershell>
 +function levels {
 + #((n-10^k*(n//10^k))//(10^(k-1))
 + param ([decimal]$number, [int]$degree)
 + [decimal]::truncate(($number-([math]::pow(10,$degree))*
 + [decimal]::truncate($number/[math]::pow(10,$degree)))/
 + [math]::pow(10,$degree-1))
 +}
 +
 +function Amount {
 + param ([bigint]$argument)
 + if($argument -lt -999999999999 -or $argument -gt 999999999999){
 + return $argument
 + } elseif ($argument -eq 0){
 + return 'ноль'
 + } elseif ($argument -lt 0){$argument=[bigint]::abs($argument);$m = 'минус '}
 +
 + $arg1 = @('','один ','два ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять ')
 + $arg2 = @('','десять ','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ',
 + 'семьдесят ','восемьдесят ','девяносто ')
 + $arg3 = @('','сто ','двести ','триста ','четыреста ','пятьсот ','шестьсот ','семьсот ',
 + 'восемьсот ','девятьсот ')
 + $arg4 = @('','одна ','две ','три ','четыре ','пять ','шесть ','семь ',
 + 'восемь ', 'девять ')
 + $arg5 = @('десять ','одиннадцать ','двенадцать ','тринадцать ','четырнадцать ',
 + 'пятнадцать ','шестнадцать ','семнадцать ','восемнадцать ','девятнадцать ')
 +
 + $units = levels -n $argument -d 1 
 + $dicker = levels -n $argument -d 2
 + $hundred = levels -n $argument -d 3
 + $thousand = levels -n $argument -d 4
 + $dicker_thousand = levels -n $argument -d 5
 + $hundred_thousand = levels -n $argument -d 6
 + $millions = levels -n $argument -d 7
 + $dicker_millions = levels -n $argument -d 8
 + $hundred_millions = levels -n $argument -d 9
 + $billions = levels -n $argument -d 10
 + $dicker_billions = levels -n $argument -d 11
 + $hundred_billions = levels -n $argument -d 12
 +
 + $units_t = $arg1[$units]
 + switch -r ($dicker){
 + 1 {$units_t = $arg5[$units]}
 + '[2-9]' {$dicker_t = $arg2[$dicker]}
 + }
 + $hundred_t = $arg3[$hundred]
 + switch -r ($thousand){
 + 0 { if ($dicker_thousand -gt 0) { $thousand_t = $arg4[$thousand] + 'тысяч '}}
 + 1 {$thousand_t = $arg4[$thousand] + 'тысяча '}
 + '[2-4]' {$thousand_t = $arg4[$thousand] + 'тысячи '}
 + '[5-9]' {$thousand_t = $arg4[$thousand] + 'тысяч '}
 + }
 + switch -r ($dicker_thousand){
 + 1 {$thousand_t = $arg5[$thousand] + 'тысяч '; break}
 + '[2-9]' {$dicker_thousand_t = $arg2[$dicker_thousand]}
 + }
 + $hundred_thousand_t = $arg3[$hundred_thousand]
 + if (($dicker_thousand -eq 0) -and ($thousand -eq 0) -and ($hundred_thousand -gt 0)) {
 + $hundred_thousand_t = $hundred_thousand_t + 'тысяч '
 + }
 + switch -r ($millions) {
 + 0{if($dicker_millions -gt 0){$millions_t=$arg1[$millions]+'миллионов '}}
 + 1 {$millions_t = $arg1[$millions] + 'миллион '}
 + '[2-4]' {$millions_t = $arg1[$millions] + 'миллиона '}
 + '[5-9]' {$millions_t = $arg1[$millions] + 'миллионов '}
 + }
 + switch -r ($dicker_millions) {
 + 1 {$millions_t = $arg5[$millions] + 'миллионов '; break}
 + '[2-9]' {$dicker_millions_t = $arg2[$dicker_millions]}
 + }
 + $hundred_millions_t = $arg3[$hundred_millions]
 + if (($dicker_millions -eq 0) -and ($millions -eq 0) -and ($hundred_millions -gt 0)) {
 + $hundred_millions_t = $hundred_millions_t + 'миллионов '
 + }
 + switch -r ($billions) {
 + 0 {if($dicker_billions -gt 0){$billions_t=$arg1[$millions]+'миллиардов '}}
 + 1 {$billions_t = $arg1[$billions] + 'миллиард '}
 + '[2-4]' {$billions_t = $arg1[$billions] + 'миллиарда '}
 + '[5-9]' {$billions_t = $arg1[$billions] + 'миллиардов '}
 + }
 + switch -r ($dicker_billions) {
 + 1 {$billions_t = $arg5[$billions] + 'миллиардов '; break}
 + '[2-9]' {$dicker_billions_t = $arg2[$dicker_billions]}
 + }
 + $hundred_billions_t = $arg3[$hundred_billions]
 + if (($dicker_billions -eq 0) -and ($billions -eq 0) -and ($hundred_billions -gt 0)) {
 + $hundred_billions_t = $hundred_billions_t + 'миллиардов '
 + }
 + $amount = $m+$hundred_billions_t+$dicker_billions_t+$billions_t+$hundred_millions_t+
 + $dicker_millions_t+$millions_t+$hundred_thousand_t+$dicker_thousand_t+$thousand_t+
 + $hundred_t+$dicker_t+$units_t
 + return $amount
 +}
 +
 +amount $args[0]
 +</code>
 +
scripts/ps.1750975242.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki