add drawing and paket package-manager
This commit is contained in:
parent
a54ee4e758
commit
00b407cba1
1 changed files with 125 additions and 12 deletions
137
README.md
137
README.md
|
|
@ -24,7 +24,7 @@
|
||||||
- [DHCP](#dhcpserver)
|
- [DHCP](#dhcpserver)
|
||||||
- [DFS](#dfs)
|
- [DFS](#dfs)
|
||||||
- [StorageReplica](#storagereplica)
|
- [StorageReplica](#storagereplica)
|
||||||
- [Package](#package)
|
- [Package-Manager](#package-manager)
|
||||||
- [PS2EXE](#ps2exe)
|
- [PS2EXE](#ps2exe)
|
||||||
- [NSSM](#nssm)
|
- [NSSM](#nssm)
|
||||||
- [Jobs](#jobs)
|
- [Jobs](#jobs)
|
||||||
|
|
@ -42,6 +42,8 @@
|
||||||
- [COM](#com)
|
- [COM](#com)
|
||||||
- [dotNET](#dotnet)
|
- [dotNET](#dotnet)
|
||||||
- [Console API](#console-api)
|
- [Console API](#console-api)
|
||||||
|
- [Drawing](#drawing)
|
||||||
|
- [ObjectEvent](#objectevent)
|
||||||
- [Sockets](#sockets)
|
- [Sockets](#sockets)
|
||||||
- [Excel](#excel)
|
- [Excel](#excel)
|
||||||
- [CSV](#csv)
|
- [CSV](#csv)
|
||||||
|
|
@ -1763,7 +1765,7 @@ HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | Out-GridVie
|
||||||
`Get-SRPartnership | Remove-SRPartnership` удалить реплизацию на основном сервере \
|
`Get-SRPartnership | Remove-SRPartnership` удалить реплизацию на основном сервере \
|
||||||
`Get-SRGroup | Remove-SRGroup` удалить реплизацию на обоих серверах
|
`Get-SRGroup | Remove-SRGroup` удалить реплизацию на обоих серверах
|
||||||
|
|
||||||
# Package
|
# Package-Manager
|
||||||
|
|
||||||
`Import-Module PackageManagement` импортировать модуль \
|
`Import-Module PackageManagement` импортировать модуль \
|
||||||
`Get-Module PackageManagement` информация о модуле \
|
`Get-Module PackageManagement` информация о модуле \
|
||||||
|
|
@ -1773,8 +1775,8 @@ HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | Out-GridVie
|
||||||
`[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12` включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1) \
|
`[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12` включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1) \
|
||||||
`Find-PackageProvider` поиск провайдеров \
|
`Find-PackageProvider` поиск провайдеров \
|
||||||
`Install-PackageProvider PSGallery -force` установить источник \
|
`Install-PackageProvider PSGallery -force` установить источник \
|
||||||
`Install-PackageProvider Chocolatey -force` \
|
|
||||||
`Install-PackageProvider NuGet -force` \
|
`Install-PackageProvider NuGet -force` \
|
||||||
|
`Install-PackageProvider Chocolatey -force` \
|
||||||
`Get-PackageSource` источники установки пакетов \
|
`Get-PackageSource` источники установки пакетов \
|
||||||
`Set-PackageSource -Name PSGallery -Trusted` по умолчанию \
|
`Set-PackageSource -Name PSGallery -Trusted` по умолчанию \
|
||||||
`Find-Package -Name *Veeam* -Source PSGallery` поиск пакетов с указанием источника \
|
`Find-Package -Name *Veeam* -Source PSGallery` поиск пакетов с указанием источника \
|
||||||
|
|
@ -1783,6 +1785,57 @@ HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP | Out-GridVie
|
||||||
`Import-Module -Name VeeamLogParser` загрузить модуль \
|
`Import-Module -Name VeeamLogParser` загрузить модуль \
|
||||||
`Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands` отобразить список функций
|
`Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands` отобразить список функций
|
||||||
|
|
||||||
|
### winget
|
||||||
|
|
||||||
|
Source: https://github.com/microsoft/winget-cli
|
||||||
|
|
||||||
|
`winget list` список установленных пакетов \
|
||||||
|
`winget search VLC` найти пакет \
|
||||||
|
`winget show VideoLAN.VLC` информация о пакете \
|
||||||
|
`winget show VideoLAN.VLC --versions` список доступных версий в репозитории \
|
||||||
|
`winget install VideoLAN.VLC` установить пакет \
|
||||||
|
`winget uninstall VideoLAN.VLC` удалить пакет \
|
||||||
|
`winget download jqlang.jq` загрузкить пакет (https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe) \
|
||||||
|
`winget install jqlang.jq` добавляет в переменную среду и псевдоним командной строки jq \
|
||||||
|
`winget uninstall jqlang.jq`
|
||||||
|
|
||||||
|
### jqlang-install
|
||||||
|
```PowerShell
|
||||||
|
[uri]$url = $($(irm https://api.github.com/repos/jqlang/jq/releases/latest).assets.browser_download_url -match "windows-amd64").ToString() # получить версию latest на GitHub
|
||||||
|
irm $url -OutFile "C:\Windows\System32\jq.exe" # загрузить jq.exe
|
||||||
|
```
|
||||||
|
### NuGet
|
||||||
|
```PowerShell
|
||||||
|
Invoke-RestMethod https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile "$env:TEMP\nuget.exe"
|
||||||
|
Invoke-Expression "$env:TEMP/nuget.exe search Selenium.WebDriver"
|
||||||
|
Set-Location $env:TEMP
|
||||||
|
Invoke-Expression "$env:TEMP/nuget.exe install Selenium.WebDriver"
|
||||||
|
Get-Item *Selenium*
|
||||||
|
```
|
||||||
|
### Chocolatey
|
||||||
|
```PowerShell
|
||||||
|
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
||||||
|
```
|
||||||
|
`choco -v` \
|
||||||
|
`choco -help` \
|
||||||
|
`choco list` \
|
||||||
|
`choco install adobereader`
|
||||||
|
|
||||||
|
### Scoop
|
||||||
|
|
||||||
|
`Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` \
|
||||||
|
`irm get.scoop.sh | iex` установка \
|
||||||
|
`scoop help` \
|
||||||
|
`scoop search jq` \
|
||||||
|
`scoop info jq` \
|
||||||
|
`(scoop info jq).version` \
|
||||||
|
`scoop cat jq` \
|
||||||
|
`scoop download jq` C:\Users\lifailon\scoop\cache \
|
||||||
|
`scoop install jq` C:\Users\lifailon\scoop\apps\jq\1.7 \
|
||||||
|
`scoop list` \
|
||||||
|
`(scoop list).version` \
|
||||||
|
`scoop uninstall jq`
|
||||||
|
|
||||||
# PS2EXE
|
# PS2EXE
|
||||||
|
|
||||||
`Install-Module ps2exe -Repository PSGallery` \
|
`Install-Module ps2exe -Repository PSGallery` \
|
||||||
|
|
@ -2723,6 +2776,7 @@ $ie.Quit()
|
||||||
`Set-WinUserLanguageList -LanguageList en-us,ru -Force` изменить языковую раскладку клавиатуры
|
`Set-WinUserLanguageList -LanguageList en-us,ru -Force` изменить языковую раскладку клавиатуры
|
||||||
|
|
||||||
### Wscript.Shell.SendKeys
|
### Wscript.Shell.SendKeys
|
||||||
|
|
||||||
`(New-Object -ComObject Wscript.shell).SendKeys([char]173)` включить/выключить звук \
|
`(New-Object -ComObject Wscript.shell).SendKeys([char]173)` включить/выключить звук \
|
||||||
`$wshell.Exec("notepad.exe")` запустить приложение \
|
`$wshell.Exec("notepad.exe")` запустить приложение \
|
||||||
`$wshell.AppActivate("Блокнот")` развернуть запущенное приложение
|
`$wshell.AppActivate("Блокнот")` развернуть запущенное приложение
|
||||||
|
|
@ -2764,6 +2818,7 @@ Get-AltTab
|
||||||
Get-AltTab
|
Get-AltTab
|
||||||
```
|
```
|
||||||
### Wscript.Shell.Popup
|
### Wscript.Shell.Popup
|
||||||
|
|
||||||
`$wshell = New-Object -ComObject Wscript.Shell` \
|
`$wshell = New-Object -ComObject Wscript.Shell` \
|
||||||
`$output = $wshell.Popup("Выберите действие?",0,"Заголовок",4)` \
|
`$output = $wshell.Popup("Выберите действие?",0,"Заголовок",4)` \
|
||||||
`if ($output -eq 6) {"yes"} elseif ($output -eq 7) {"no"} else {"no good"}`
|
`if ($output -eq 6) {"yes"} elseif ($output -eq 7) {"no"} else {"no good"}`
|
||||||
|
|
@ -2791,6 +2846,7 @@ Output:
|
||||||
7 Нет
|
7 Нет
|
||||||
```
|
```
|
||||||
### WScript.Network
|
### WScript.Network
|
||||||
|
|
||||||
`$wshell = New-Object -ComObject WScript.Network` \
|
`$wshell = New-Object -ComObject WScript.Network` \
|
||||||
`$wshell | Get-Member` \
|
`$wshell | Get-Member` \
|
||||||
`$wshell.UserName` \
|
`$wshell.UserName` \
|
||||||
|
|
@ -2798,6 +2854,7 @@ Output:
|
||||||
`$wshell.UserDomain`
|
`$wshell.UserDomain`
|
||||||
|
|
||||||
### Shell.Application
|
### Shell.Application
|
||||||
|
|
||||||
`$wshell = New-Object -ComObject Shell.Application` \
|
`$wshell = New-Object -ComObject Shell.Application` \
|
||||||
`$wshell | Get-Member` \
|
`$wshell | Get-Member` \
|
||||||
`$wshell.Explore("C:\")` \
|
`$wshell.Explore("C:\")` \
|
||||||
|
|
@ -2808,6 +2865,7 @@ Output:
|
||||||
`$RecycleBin.Items()`
|
`$RecycleBin.Items()`
|
||||||
|
|
||||||
### Outlook
|
### Outlook
|
||||||
|
|
||||||
`$Outlook = New-Object -ComObject Outlook.Application` \
|
`$Outlook = New-Object -ComObject Outlook.Application` \
|
||||||
`$Outlook | Get-Member` \
|
`$Outlook | Get-Member` \
|
||||||
`$Outlook.Version`
|
`$Outlook.Version`
|
||||||
|
|
@ -2840,6 +2898,7 @@ $Outlook.Quit()
|
||||||
`[System.IO.Path]::Combine("C:", "Install", "Test")`
|
`[System.IO.Path]::Combine("C:", "Install", "Test")`
|
||||||
|
|
||||||
### Match
|
### Match
|
||||||
|
|
||||||
`[System.Math] | Get-Member -Static -MemberType Methods` \
|
`[System.Math] | Get-Member -Static -MemberType Methods` \
|
||||||
`[System.Math]::Max(2,7)` \
|
`[System.Math]::Max(2,7)` \
|
||||||
`[System.Math]::Min(2,7)` \
|
`[System.Math]::Min(2,7)` \
|
||||||
|
|
@ -2847,6 +2906,7 @@ $Outlook.Quit()
|
||||||
`[System.Math]::Truncate(3.9)`
|
`[System.Math]::Truncate(3.9)`
|
||||||
|
|
||||||
### GeneratePassword
|
### GeneratePassword
|
||||||
|
|
||||||
`Add-Type -AssemblyName System.Web` \
|
`Add-Type -AssemblyName System.Web` \
|
||||||
`[System.Web.Security.Membership]::GeneratePassword(10,2)`
|
`[System.Web.Security.Membership]::GeneratePassword(10,2)`
|
||||||
|
|
||||||
|
|
@ -2861,6 +2921,7 @@ $GoodSound.SoundLocation = "C:\WINDOWS\Media\tada.wav"
|
||||||
$GoodSound.Play()
|
$GoodSound.Play()
|
||||||
```
|
```
|
||||||
### Static Class
|
### Static Class
|
||||||
|
|
||||||
`[System.Environment] | Get-Member -Static` \
|
`[System.Environment] | Get-Member -Static` \
|
||||||
`[System.Environment]::OSVersion` \
|
`[System.Environment]::OSVersion` \
|
||||||
`[System.Environment]::Version` \
|
`[System.Environment]::Version` \
|
||||||
|
|
@ -2985,6 +3046,7 @@ set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }
|
||||||
`[Audio]::Mute = $true`
|
`[Audio]::Mute = $true`
|
||||||
|
|
||||||
### NetSessionEnum
|
### NetSessionEnum
|
||||||
|
|
||||||
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/lmshare/nf-lmshare-netsessionenum?redirectedfrom=MSDN \
|
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/lmshare/nf-lmshare-netsessionenum?redirectedfrom=MSDN \
|
||||||
Source: https://fuzzysecurity.com/tutorials/24.html
|
Source: https://fuzzysecurity.com/tutorials/24.html
|
||||||
```PowerShell
|
```PowerShell
|
||||||
|
|
@ -3059,6 +3121,7 @@ echo "`nCalling NetApiBufferFree, no memleaks here!"
|
||||||
`Invoke-NetSessionEnum localhost`
|
`Invoke-NetSessionEnum localhost`
|
||||||
|
|
||||||
### CopyFile
|
### CopyFile
|
||||||
|
|
||||||
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winbase/nf-winbase-copyfile \
|
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winbase/nf-winbase-copyfile \
|
||||||
Source: https://devblogs.microsoft.com/scripting/use-powershell-to-interact-with-the-windows-api-part-1/
|
Source: https://devblogs.microsoft.com/scripting/use-powershell-to-interact-with-the-windows-api-part-1/
|
||||||
```PowerShell
|
```PowerShell
|
||||||
|
|
@ -3070,6 +3133,7 @@ $Kernel32 = Add-Type -MemberDefinition $MethodDefinition -Name "Kernel32" -Names
|
||||||
$Kernel32::CopyFile("$($Env:SystemRoot)\System32\calc.exe", "$($Env:USERPROFILE)\Desktop\calc.exe", $False)
|
$Kernel32::CopyFile("$($Env:SystemRoot)\System32\calc.exe", "$($Env:USERPROFILE)\Desktop\calc.exe", $False)
|
||||||
```
|
```
|
||||||
### ShowWindowAsync
|
### ShowWindowAsync
|
||||||
|
|
||||||
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-showwindowasync
|
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-showwindowasync
|
||||||
```PowerShell
|
```PowerShell
|
||||||
$Signature = @"
|
$Signature = @"
|
||||||
|
|
@ -3082,12 +3146,12 @@ $ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 3)
|
||||||
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 4)
|
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 4)
|
||||||
```
|
```
|
||||||
### GetAsyncKeyState
|
### GetAsyncKeyState
|
||||||
|
|
||||||
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-getasynckeystate
|
Function: https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-getasynckeystate
|
||||||
|
|
||||||
`Add-Type -AssemblyName System.Windows.Forms` \
|
`Add-Type -AssemblyName System.Windows.Forms` \
|
||||||
`[int][System.Windows.Forms.Keys]::F1`
|
`[int][System.Windows.Forms.Keys]::F1` определить номер [Int] клавиши по ее названию \
|
||||||
|
`65..90 | % {"{0} = {1}" -f $_, [System.Windows.Forms.Keys]$_}` порядковый номер букв (A..Z)
|
||||||
`65..90 | % {"{0} = {1}" -f $_, [System.Windows.Forms.Keys]$_}`
|
|
||||||
```PowerShell
|
```PowerShell
|
||||||
function Get-ControlKey {
|
function Get-ControlKey {
|
||||||
$key = 112
|
$key = 112
|
||||||
|
|
@ -3100,14 +3164,16 @@ Add-Type -MemberDefinition $Signature -Name Keyboard -Namespace PsOneApi
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Warning 'Press F1 to exit'
|
Write-Warning 'Press F1 to exit'
|
||||||
do {
|
while ($true) {
|
||||||
Write-Host '.' -NoNewline
|
Write-Host '.' -NoNewline
|
||||||
$pressed = Get-ControlKey
|
if (Get-ControlKey) {
|
||||||
if ($pressed) { break }
|
break
|
||||||
Start-Sleep -Seconds 1
|
}
|
||||||
} while ($true)
|
Start-Sleep -Seconds 0.5
|
||||||
|
}
|
||||||
```
|
```
|
||||||
# Console API
|
# Console API
|
||||||
|
|
||||||
Source: https://powershell.one/tricks/input-devices/detect-key-press
|
Source: https://powershell.one/tricks/input-devices/detect-key-press
|
||||||
|
|
||||||
`[Console] | Get-Member -Static` \
|
`[Console] | Get-Member -Static` \
|
||||||
|
|
@ -3153,7 +3219,40 @@ if ($pressed) {break}
|
||||||
sleep 1
|
sleep 1
|
||||||
} while ($true)
|
} while ($true)
|
||||||
```
|
```
|
||||||
### Register-ObjectEvent
|
# Drawing
|
||||||
|
|
||||||
|
API: https://learn.microsoft.com/en-us/dotnet/api/system.drawing?view=net-7.0&redirectedfrom=MSDN
|
||||||
|
```PowerShell
|
||||||
|
Add-Type -AssemblyName System.Drawing
|
||||||
|
$Width = 800
|
||||||
|
$Height = 400
|
||||||
|
$image = New-Object System.Drawing.Bitmap($Width,$Height)
|
||||||
|
$graphic = [System.Drawing.Graphics]::FromImage($image)
|
||||||
|
$background_color = [System.Drawing.Brushes]::Blue # задать цвет фона (синий)
|
||||||
|
$graphic.FillRectangle($background_color, 0, 0, $image.Width, $image.Height)
|
||||||
|
$text_color = [System.Drawing.Brushes]::White # задать цвет текста (белый)
|
||||||
|
$font = New-Object System.Drawing.Font("Arial", 20, [System.Drawing.FontStyle]::Bold) # задать шрифт
|
||||||
|
$text = "PowerShell" # указать текст
|
||||||
|
$text_position = New-Object System.Drawing.RectangleF(320, 180, 300, 100) # задать положение текста (x, y, width, height)
|
||||||
|
$graphic.DrawString($text, $font, $text_color, $text_position) # нанести текст на изображение
|
||||||
|
$image.Save("$home\desktop\powershell_image.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp) # сохранить изображение
|
||||||
|
$image.Dispose() # освобождение ресурсов
|
||||||
|
```
|
||||||
|
`$path = "$home\desktop\powershell_image.bmp"` \
|
||||||
|
`Invoke-Item $path`
|
||||||
|
```PowerShell
|
||||||
|
$src_image = [System.Drawing.Image]::FromFile($path)
|
||||||
|
$Width = 400
|
||||||
|
$Height = 200
|
||||||
|
$dst_image = New-Object System.Drawing.Bitmap -ArgumentList $src_image, $Width, $Height # изменить размер изображения
|
||||||
|
$dst_image.Save("$home\desktop\powershell_image_resize.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp)
|
||||||
|
|
||||||
|
$rotated_image = $src_image.Clone() # создать копию исходного изображения
|
||||||
|
$rotated_image.RotateFlip([System.Drawing.RotateFlipType]::Rotate180FlipNone) # перевернуть изображение на 180 градусов
|
||||||
|
$rotated_image.Save("$home\desktop\powershell_image_rotated.bmp", [System.Drawing.Imaging.ImageFormat]::Bmp)
|
||||||
|
$src_image.Dispose() # закрыть (отпустить) исходный файл
|
||||||
|
```
|
||||||
|
# ObjectEvent
|
||||||
```PowerShell
|
```PowerShell
|
||||||
$Timer = New-Object System.Timers.Timer
|
$Timer = New-Object System.Timers.Timer
|
||||||
$Timer.Interval = 1000
|
$Timer.Interval = 1000
|
||||||
|
|
@ -6083,3 +6182,17 @@ ansible_shell_type=powershell
|
||||||
var: wu_output
|
var: wu_output
|
||||||
```
|
```
|
||||||
`ansible-playbook /etc/ansible/win-update.yml`
|
`ansible-playbook /etc/ansible/win-update.yml`
|
||||||
|
|
||||||
|
### win_chocolatey
|
||||||
|
|
||||||
|
https://chocolatey.org/install \
|
||||||
|
https://community.chocolatey.org/api/v2/package/chocolatey \
|
||||||
|
https://docs.chocolatey.org/en-us/guides/organizations/organizational-deployment-guide
|
||||||
|
```
|
||||||
|
- name: Ensure Chocolatey installed from internal repo
|
||||||
|
win_chocolatey:
|
||||||
|
name: chocolatey
|
||||||
|
state: present
|
||||||
|
# source: URL-адрес внутреннего репозитория
|
||||||
|
source: https://community.chocolatey.org/api/v2/ChocolateyInstall.ps1
|
||||||
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue