- ps-провайдеры
ls env: | fl #Отобразить все переменные окружения
$env:path #Обращение к итему через символ $
#Отобразить содержимое переменной PATH
start $env:programfiles # показать папку в windows explorer
start $env:programfiles(x86) # а так не работает из-за скобок и кавычки не спасают (никакие нигде)
start (ls 'env:programfiles(x86)').Value #а вот заработало
#Добавить путь в переменную PATH (к сожалению с реестром так нельзя)
$envvar = $env:path + ';C:\Python25\'
$env:path = $envvar
#Можно проще (именно ", а не ')
$env:path = "$env:path;C:\Python25\"
- Write-Host вывод текста (foregroundcolor - цвет текста, backgroundcolor - цвет фона)
Write-Host "Hello world" -foregroundcolor red
- New-PSdrive - новый драйв (алиас: mount)
New-PSdrive -name scripts -PSprovider filesystem -root C:\bin\PowerShellScripts
теперь можно будет писать script:\
для того, чтобы получить нормальное виндовое имя из PowerShell'ного, чтобы отдать каким-нибудь программам, не знакомым с этими алиасами можно пользовать convert-path. Вот мы открываем папку в проводнике:
& explorer (convert-path xtools:\XToolsPro)
и самое главное! для реестра есть драйвы: HKLM и HKCU, но нет HKCR.
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
- Еще одна фишь по последней ссылке: провайдер Registry не поддерживает опцию filter. Но можно смошенничать. И добиться схожего через pipeline
сd HKLM:\SOFTWARE\
dir | ?{$_.Name -like '*Int*'}
Вот несколько более
ls 'hkcr:\clsid' -rec |? {$_.Name -like '*ProgID*'} | gp |? { $_.'(default)' -like '*XTools*'} | % {$_.'(default)', $_.PSPath} | ogv
Ищем в HKCR\CLSID все ProgID, такие, что содержат XTools в дефолтном ключе (т.е. в строковом имени COM-серверов содержат XTools) и выводим в табличку строковое имя и путь
- Еще проблема: запустить обычный ls для для сетевого ресурса при location в реестре
PS HKCR:\.kml\Google Earth.kmlfile> ls \\yoda\incoming
Get-ChildItem : Cannot process argument because the value of argument "path" is invalid. Change the value of the "path"
argument and run the operation again.
At line:1 char:3
+ ls <<<< \\office\temp
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.GetChildItemCommand
нужно явно указать провайдера:
PS HKCR:\.kml\Google Earth.kmlfile> ls filesystem::\\yoda\incoming
- Read-Host - считать строку
$a = Read-Host "Enter your name"
Write-Host "Hello" $a
И много всего полезного
здесь а
здесь чудо: демо для работы с WinForms