Куча мелочи для PowerShell

Jul 01, 2009 17:16

  • 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

links, powershell

Previous post Next post
Up