Трюки PowerShell. Часть 1
Я начинаю серию статей, в которых буду показывать разные приемы и методы использования PowerShell.
Ну что ж, стартуем.
- Командлет Get-ItemProperty читает значения реестра. Можно создавать список установленого программного обеспечения одной строкой кода.
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Format-Table DisplayName, Publisher
- Можно использовать командлет Resolve-Path, что б посмотреть список имен файлов в заданом каталоге. Для примера выведем все log файлы в системной папке Windows.
Resolve-Path $env:windir\*.log
- Для просмотра всех записей реестра, например в разделе HKEY_CLASSES_ROOT делаем следующее:
Dir Registry::HKEY_CLASSES_ROOT
Можно также смонтировать виртуальный диск, для этой ветки реестра:
New-PSDrive HKCR Registry Registry::HKEY_CLASSES_ROOT
И набрав команду
Dir HKCR:
мы увидим все записи ветки HKEY_CLASSES_ROOT.
- Если мы работаем в консоли с папками, и перешли в какой-то каталог, то набрав команду
ii .
или
explorer .
мы увидим графическое окно Explorer с открытым каталогом.
- При запуске программы с помощью Start-Process с аргументом -passThru, вы получите объект процесса, представляющий запущеную прогроаммму. После этого вы можете использовать этот объект позже, что б, например, убить процесс программы по мере необходимости.
$notepad = Start-Process notepad -passthru Start-Sleep 2 Stop-Process -inputObject $notepad
- Начиная с Vista, у Windows появился инструмент под названием clip.exe, который копирует все, что вы ему передатите в буфер обмена.
Например код
Get-Process | clip
скопирует в буфер обмена таблицу с процессами, в таком виде:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
79 4 1064 128 21 0,11 2608 alg
139 8 2324 208 32 0,17 1712 AppleMobileDeviceS...
34 2 5592 972 30 1,01 1784 aspell
121 4 13896 13324 38 632 audiodg
127 6 3284 2176 72 80,47 2728 avgnt
117 10 82180 7956 145 158,09 1668 avguard
179 9 3832 2104 62 2 623,95 4716 bmctl
А вот такой код скопирует в буфер обмена имена файлов и папок, которые лежат в папке D:\Music.
Set-Location 'D:\Music'
$l = Get-Location
Get-ChildItem $l | clip
- А вот так можно создавать имена файлов, которые должны составлятся и текущей даты:
(Get-Date -format 'yyyy-MM-dd hh-mm-ss') + '.tmp'
Сегодня получился вот такой результат - "2010-04-11 09-38-29.tmp".
- Для того, что б узнать все IP адреса для некоторого хоста, можно использовать следующий код:
$hostname = "microsoft.com" $result = [system.Net.Dns]::GetHostByName($hostname) $result.AddressList | ForEach-Object {$_.IPAddressToString }
Результатом выполнения которого сейчас есть:
207.46.232.182
207.46.197.32
- Для упрощения создания записей в системном реестре можно с использованием вот такой функции Set-RegistryValue.
function Set-RegistryValue($key, $name, $value, $type="String") {
if ((Test-Path $key) -eq $false) { md $key | Out-Null }
Set-ItemProperty $key $name $value -type $type
}
И пример её использования:
<code>Set-RegistryValue HKCU:\Software\TestABC myValue Hello<br />Set-RegistryValue HKCU:\Software\TestABC myValue 12 Dword<br /><br /></code>
- Открыть программно веб сайт через Internet Explorer по его адресу можно так:
$ie = new-object -com "InternetExplorer.Application" $ie.Visible = $true $ie.navigate("www.microsoft.com")
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |