В том же направлении вопроса о сценариях автогорячей клавиши: https://superuser.com/questions/7271/, сейчас это о Powershell.
Любые полезные, удобные или powefull сценарии. Опишите то, что они делают. Не стесняйтесь включать сценарии, которые не имеют никакого отношения к заданиям сервера или задачам системного администратора.
Например:
Эта команда рекурсивно переместит Ваши изображения *.jpg в текущий каталог и добавит первоначально содержание имени каталога как префикс для файла изображения.
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
Или что-то можно работать на текстовых документах:
$badString = "This is not the way it should be."
$badString #for debug only
while ($badString.Contains(" ")){
$badString = $badString -replace " "," "
}
$badString #tada
Поскольку Powershell является будущим.
Get-RecentUpdates.ps1
, это перечислит недавнее (значение по умолчанию: прошлые 7 дней), обновляет от Microsoft Update (это - несколько происходящая работа, часть форматирования должна быть перемещена в a .xmlps1
определение формата):
#requires -Version 2.0
# Copyright Richard J Cox 2009. Use freely at your own risk
param([switch]$RawDisplay,
[DateTime]$After = $([datetime]::Today.AddDays(-7)),
[string]$Computer = '')
$extraArgs = @{}
if ($Computer.Length -gt 0) {
$extraArgs.Computer = $Computer
}
$events = get-eventlog -After $after -logname system -InstanceId 19 -source "Microsoft-Windows-WindowsUpdateClient" @extraArgs |
select-Object -property EventId, Index, Source, TimeGenerated,
@{n='Message';e={$_.ReplacementStrings | Select-Object -first 1}}
if ($rawDisplay) {
$events
} else {
$events | ft -a -wrap Index, TimeGenerated, Message
}
Мой сценарий профиля - получает общий каталог с набором полезных сценариев:
$SharedScripts = '\\FileServer\Share\PowerShell\Scripts'
Get-ChildItem "$SharedScripts\*.ps1" | % {
. $_
Write-Host ('Loaded shared library: ' + [System.IO.Path]::GetFileNameWithoutExtension($_))
}
Мой фаворит отсюда... получает серийный ключ Windows в его реальной форме!..
function Get-WindowsKey {
## function to retrieve the Windows Product Key from any PC
## by Jakob Bindslet (jakob@bindslet.dk)
param ($targets = ".")
$hklm = 2147483650
$regPath = "Software\Microsoft\Windows NT\CurrentVersion"
$regValue = "DigitalProductId"
Foreach ($target in $targets) {
$productKey = $null
$win32os = $null
$wmi = [WMIClass]"\\$target\root\default:stdRegProv"
$data = $wmi.GetBinaryValue($hklm,$regPath,$regValue)
$binArray = ($data.uValue)[52..66]
$charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9"
## decrypt base24 encoded binary data
For ($i = 24; $i -ge 0; $i--) {
$k = 0
For ($j = 14; $j -ge 0; $j--) {
$k = $k * 256 -bxor $binArray[$j]
$binArray[$j] = [math]::truncate($k / 24)
$k = $k % 24
}
$productKey = $charsArray[$k] + $productKey
If (($i % 5 -eq 0) -and ($i -ne 0)) {
$productKey = "-" + $productKey
}
}
$win32os = Get-WmiObject Win32_OperatingSystem -computer $target
$obj = New-Object Object
$obj | Add-Member Noteproperty Computer -value $target
$obj | Add-Member Noteproperty Caption -value $win32os.Caption
$obj | Add-Member Noteproperty CSDVersion -value $win32os.CSDVersion
$obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture
$obj | Add-Member Noteproperty BuildNumber -value $win32os.BuildNumber
$obj | Add-Member Noteproperty RegisteredTo -value $win32os.RegisteredUser
$obj | Add-Member Noteproperty ProductID -value $win32os.SerialNumber
$obj | Add-Member Noteproperty ProductKey -value $productkey
$obj
}
}
Затем используйте -
Добраться-WindowsKey
или даже -
Получите-WindowsKey "pc1", "pc2", "server999", "server777"