|
13177 / 4625 / 168
Регистрация: 25.10.2010
Сообщений: 9,413
|
|||||||||||||||||||||
Введение в PowerShell08.08.2012, 17:28. Показов 77603. Ответов 8
Метки нет (Все метки)
PowerShell Windows PowerShell — это новая оболочка командной строки на основе задач и язык сценариев. Она специально разработана для администрирования систем. Встроенная в .NET Framework, оболочка Windows PowerShell помогает ИТ-специалистам и опытным пользователям контролировать и автоматизировать процесс администрирования операционной системы Windows и приложений, работающих в системе Windows. Возможности стандартного командного интерпретатора cmd в Windows довольно скудны, особенно по сравнению с командными интерпретаторами Unix: ksh, bash, zsh. В Microsoft это тоже поняли и разработали новую оболочку. Вначале она имела кодовое имя Monad, она же MSH, которая впоследствии была переименована в Windows PowerShell. Используя оболочку Windows PowerShell, администраторы могут управлять системами с помощью отдельных команд или сценариев, автоматизирующих задачи управления. Exchange Server 2007, System Center Operations Manager 2007, System Center Data Protection Manager V2 и System Center Virtual Machine Manager используют оболочку Windows PowerShell для повышения эффективности и производительности. Если вы раньше не слышали о PowerShell – представьте, что командную строку Windows (cmd.exe) и интегрировали с VBScript, сделав её лёгкой в употреблении и позволяющей вам автоматизировать и контролировать задачи по администрированию системы. Оболочка PowerShell - это интерактивный командный интерпретатор. С его помощью можно создавать сценарии, позволяющие администраторам автоматизировать управление системными задачами как на сервере, так и на других компьютерах сети. PowerShell, в отличие от cmd, предоставляющего доступ только к файловой системе, позволяет управлять всей операционной системой и ее приложениями. Например, мы можем работать с реестром Windows как с обычной файловой системой. Технология PowerShell постепенно завоевывает сердца админов, привыкших расходовать время с пользой. Действительно, зачем постоянно тратить время на выполнение одной и той же операции, если ее можно автоматизировать? На PS это сделать легко. К счастью, программирование на PowerShell не сравнить с аналогичной разработкой под bash, а значит, освоить данную вещь сможет даже начинающий программист. В Windows 7 PowerShell обзавелся графической средой разработки. Программировать сценарии стало еще проще и понятней. Среда обладает всеми необходимыми средствами для комфортной разработки (Отладчик, подсветка синтаксиса и т.д.), что делает процесс разработки схожим с созданием приложения в таких средах как Visual Studio. Количество доступных командлетов существенно возросло. Добавились командлеты для получения информации и управления такими службами как: IIS, ActiveDirectory и т.д. Поддержка удаленной работы дарит возможность одновременно выполнять команды на удаленных компьютерах с одного, на котором работает служба. Несмотря на сходство с командной строкой, PowerShell предоставляет значительно больше функций и более гибка в использовании. Вот некоторые полезные команды, которые нужно знать для начала работы в PowerShell: Get-Command - получить список доступных команд; Get-Help - получить справку по указанной команде; Get-Drive - получить список дисков; Set-Location - изменить текущее местоположение (аналог команды cd в cmd); Set-Alias - создать псевдоним для команды; Get-Date - вывести дату. Как и в cmd.exe, поддерживается перенаправление ввода/вывода, например: Get-Date > current-date.txt Работа с текстом Выделите нужный текст с помощью мыши. Нажмите на правую кнопку мыши - произойдет копирование текста в буфер обмена. Поместите курсор в нужное место. Нажмите правую кнопку мыши - произойдет вставка текста из буфера обмена. Команды для работы с файловой системой type - просмотр файла; more - постраничный вывод файла; copy - копирование одного или нескольких файлов; move - перемещение одного или нескольких файлов (или переименование каталога); del - удаление одного или нескольких файлов; ren - переименование файла; attrib - изменение атрибутов файла/каталога (скрытый, системный, только чтение, архивный); fc - сравнение файлов; find - поиск текстовой строки в одном или нескольких файлах; grep - поиск текстовой строки (можно использовать регулярные выражения) в файле или в списке файлов; cd - смена каталога; dir - вывод содержимого каталога; tree - вывод дерева каталогов; md (или mkdir) - создание каталога; rd - удаление каталога или дерева каталогов. Автоматическое завершение ввода команды Используйте клавишу TAB для автоматического завершения ввода команды. Это поможет вам избежать опечаток. С помощью клавиши «Стрелка вверх» можно вызвать последнюю использованную команду, а с помощью клавиши «Home» переместить курсор в начало строки, а затем ввести данные. Вывести содержимое переменной можно, просто напечатав в командной строке $P. Прерывание вывода информации Если на экран выводится много информацию, и вам необходимо прервать эту операцию, то вывод можно прервать комбинацией клавиш CTRL+C. Переменные Переменные всегда должны начинаться в символа $. Сохраняя промежуточные результаты в переменной, вы можете всегда получить к ней доступ для ваших целей. Присвоить значение переменной очень просто:
Команды, исполняемые в Windows PowerShell, могут быть в форме командлетов, которые являются специализированными классами .NET, созданными с целью предоставления функциональности в PowerShell в виде сценариев PowerShell (.PS1) или являются обычными исполняемыми файлами. Если команда является исполняемым файлом, то PowerShell запускает её в отдельном процессе; если это командлет, то он исполняется внутри процесса PowerShell. PowerShell предоставляет интерфейс командной строки, в котором можно вводить команды и отображать выводимые ими данные в текстовом виде. Этот пользовательский интерфейс, базирущийся на стандартном механизме консоли Windows, предоставляет настраиваемый механизм автозавершения команд, но не обладает возможностью подсветки синтаксиса, хотя при желании её можно обеспечить[2]. В PowerShell также можно создавать псевдонимы (англ. alias) для командлетов, которые при вызове преобразуются в оригинальные команды. Кроме того, поддерживаются позиционные и именованные параметры для командлетов. При выполнении командлета работа по привязке значений аргументов к параметрам выполняется самим PowerShell, но при вызове внешних исполняемых файлов аргументы передаются им для самостоятельного разбора. Другое понятие, используемое в PowerShell, — это конвейер (англ. pipeline). Подобно конвейерам в UNIX, они предназначены для объединения нескольких команд путём передачи выходных данных одной команды во входные данные второй команды, используя оператор |. Но в отличие от аналога в UNIX, конвейер PowerShell является полностью объектным, то есть данные между командлетами передаются в виде полноценных объектов соответствующих типов, а не как поток байтов. Когда данные передаются как объекты, содержащиеся в них элементы сохраняют свою структуру и типы между командлетами, без необходимости использования какой либо сериализации или посимвольного разбора данных. Объект также может содержать некоторые функции, предназначенные для работы с данными. Они также становятся доступными для получающего их командлета. Вывод последнего командлета в конвейере PowerShell автоматически передаёт на командлет Write-Host, который создаёт текстовое представление объектов и содержащихся в них данных и выводит его на экран. Так как все объекты PowerShell являются объектами .NET, они содержат метод .ToString(), возвращающий текстовое представление данных объекта. PowerShell использует этот метод для преобразования объекта в текст. Кроме того, он позволяет указать правила форматирования, так что текстовое представление объектов может быть настроено. Однако, с целью поддержания совместимости, если в конвейере используется внешний исполняемый файл, то он получает текстовый поток, представляющий объект, и не интегрируется с системой типов PowerShell. Расширенная система типов (англ. Extended Type System, ETS) PowerShell базируется на системе типов .NET, но реализует некоторые дополнения. Например, она позволяет создавать различные представления объектов, отображая лишь некоторые из их свойств и методов, а также применять специальное форматирование и механизмы сортировки. Эти представления привязываются к оригинальным объектам с помощью конфигурационных файлов в формате XML. PowerShell ISE После удачного выпуска консольной программы PowerShell, разработчики Microsoft сделали графическую консоль/редактор, который называется PowerShell ISE (Integrated Scripting Environment). PowerShell ISE является полноценным редактором с подсветкой кода, закладками, и возможностью выполнения интерактивных команд. Это крайне удобно при написании сценариев: можно легко протестировать команду, и затем добавить её в основной код. Или наоборот выполнить несколько строк выделенных в открытом файле. Кроме этого ISE автодополняет набираемый код по нажатию Tab как в командной строке, так и в файлах скрипта. Естественно автодополняются не только названия команд, но и параметры, имена переменных, и т.д., так же как и в привычной консоли. Еще в ISE встроен отличный отладчик. Вы можете расставлять брейкпойнты (F9), запускать пошаговое выполнение, просматривать содержимое переменных наводя на них курсор, и т.д. В PowerShell ISE доступен специальный объект, $PsISE, с помощью которого можно управлять интерфейсом утилиты, и даже расширять его, например добавляя свои собственные элементы меню. Так как ISE создавался с нуля, для PowerShell, он не страдает болезнями доставшимися PowerShell.exe от консольной подсистемы Windows. Так например он изначально, полностью, стопроцентно поддерживает Unicode, и в нем можно легко менять шрифты, и их размер. Cmdlets Cmdlets (произносится как commandlets) основаны на синтаксе типа глагол-существительное в ед.ч. Команды записываются на английском языке, например, get-service, get-process, stop-service, get-wmiobject. Get-Help вызывает интерактивную справку по синтаксису Windows PowerShell. Get-Help - выводит на экран справку об использовании справки Get-Help * - перечисляет все команды Windows PowerShell Get-Help команда - выводит справку по соответствующей команде Get-Help команда -Detailed - выводит подробную справку с примерами команды В Windows PowerShell также включены псевдонимы многих известных команд. Например, команды help (классический стиль Windows) и man (классический стиль Unix) работают так же, как и Get-Help. Чтобы увидеть весь список, состоящий, из более чем 130 предустановленных cmdlets, наберите в командной строке
Чтобы увидеть все процессы, которые начинаются с буквы «w», и все зависящие от них, нужно просто набрать
Тестирование программы перед выполнением Windows PowerShell имеет функцию whatif, которая сообщит вам о результате команды, без её исполнения. Например, мы хотим узнать, какие команды начинающиеся с «w3» могут быть остановлены.
Получение расшифровки PowerShell позволяет вам получить расшифровку всех ваших команд. Это облегчит тестирование команд, и одновременно сохранят их для последующего исполнения в скриптах.
Диски PowerShell PowerShell позволяет получить доступ к различных дискам. Следует иметь в виду, что в качестве дисков могут выступать не только привычные нам объекты файловой системы, но и другие элементы, например, разделы реестра, переменные среды и т.д. Для доступа к этим дискам используется командлет Get-Psdrive, который выводит все диски. Диски выделяются двоеточием после их имени (:). Get-Psdrive cd HKCU: dir или cd ENV: ls или cd CERT: Get-Childitem Как видите, мы используем три варианта вывода содержимого диска dir - как в Windows ls - как в UNIX Get-Childitem - собственный командлет Команды dir, ls и Get-Childitem имеют одинаковые возможности. Это означает, что вы можете использовать те псевдонимы, которые вам больше нравятся. Одно замечание о реестре. По нему можно перемещаться при помощи команд dir и cd, но они не позволяют просмотреть значения ключей реестра. Причина в том, что значения реестра являются свойствами объектов реестра, в то время как размер (Size) или дата последнего изменения (Date last accessed) – это свойства файла. Чтобы увидеть значения реестра, необходима команда Get-ItemProperty. Эта команда выводит все свойства элемента реестра и их значения. Дополнительные сведения можно найти в справке по Windows PowerShell. Псевдонимы Чтобы свести к минимуму количество вводимой информации, PowerShell предлагает различные способы сокращения команд при помощи псевдонимов. Введите
Поддержка событий — одна из превосходных особенностей ОС Windows. Всякий раз, когда в операционной системе что-то происходит, она инициирует событие. Приложения могут подписываться на уведомления о конкретных событиях и реагировать на них, например выполнением определенных действий. В частности, при щелчке кнопки в диалоговом окне приложение может получать уведомление о событии «щелчок кнопки» и выполнять все предназначенные для этого события действия. Инициировать события способна также служба Windows Management Instrumentation (WMI), и можно подписать Windows PowerShell версии 2 для получения этих событий. После этого можно задействовать Windows PowerShell для выполнения любых команд, которые должны выполняться в ответ на эти события. Обычно WMI порождает одно из довольно ограниченного числа событий, но это может происходить в одном из огромного количества различных классов WMI. Существуют три ключевых момента использования событий WMI: понимание, какое событие требуется отслеживать понимание класса требуемого события использование командлета Register-WmiEvent для подписки на уведомления о событиях Простые события Инициировать события могут некоторые классы WMI. Например, класс Win32_ProcessStartTrace инициирует события в момент запуска процесса. Он делает то же самое в других ситуациях. Когда инициируется событие создания нового процесса, в качестве идентификатора источника оно содержит «Process Started». Для подписки на события необходимо выполнить следующую команду:
Конечно, простая информация о запуске процесса не очень полезна. Скорее всего потребуется определить какие-то действия для регистрации процесса в журнале, отправки сообщения по электронной почте или даже завершения процесса. Выполните командлет Get-EventSubscriber, чтобы увидеть только что созданную подписку на уведомления о событии. Чтобы удалить все подписки на события, выполните команду Get-EventSubscriber | Unregister-Event. Также можно задействовать командлет Unregister-Event, чтобы удалить подписку по ее идентификационному номеру. Полезные события WMI может инициировать и намного более полезные события системного уровня. Например, событие __instancecreationevent инициируется всякий раз, когда создается новый экземпляр класса WMI, а событие __instancedeletionevent — при удалении экземпляра. Это может показаться не совсем полезным, но только подумайте:почти каждый элемент операционной системы и компьютерного оборудования представлен некоторым экземпляром класса WMI. Например, при подключении съемных устройств хранения данных создается новый экземпляр класса Win32_LogicalDisk. А при завершении процесса удаляется экземпляр класса Win32_Process. Хотите отобразить на экране сообщение, когда пользователь подключит внешний USB-диск? Register-wmievent –query "select * from __instancecreationevent within 5 where targetinstance isa 'win32_logicaldisk'" –action { Write "You had better not put any proprietary information on that!" } Этот непростой запрос, поэтому поясним, что он делает: SELECT * FROM __instancecreationevent (кстати, в названии события два подчеркивания) просто указывает, что нужно получить все свойства данного события; WITHIN 5 означает, что надо проверять события каждые 5 секунд. Не задавайте слишком малое число, иначе слишком много вычислительных мощностей будет тратиться на постоянную проверку обновлений; WHERE TARGET INSTANCE ISA 'Win32_LogicalDisk' сообщает WMI, что нужны только события создания нового экземпляра класса Win32_LogicalDisk. Наконец, параметр –action является заключенным в фигурные скобки блоком сценария, который содержит действия, которые нужно выполнить при возникновении данного события. Использование параметра –computerName для подписки на события, которые происходят на удаленном компьютере, — это такая особая уловка. Это связано с тем, что необходимо иметь права локального администратора на удаленном компьютере, а само действие происходить на локальном компьютере. Кстати, не поддавайтесь соблазну подписаться на события создания экземпляра класса CIM_DataFile, который представляет файлы на диске. Служба WMI не очень эффективна для мониторинга создания новых файлов. Скорее всего события будут теряться, а попытки перехватить все события могут создать довольно существенную нагрузку на систему. Предостережения и уловки Конечно, реагирование на события будет продолжаться, пока работает оболочка. При закрытии оболочки или при прекращении ее работы по каким-то иными причинам, регистрация событий прекращается. Это делает события WMI несколько менее полезными для использования на компьютерах пользователей, поскольку вряд ли PowerShell будет всегда работать на каждом компьютере. Однако это очень полезный прием для мониторинга процессов и других компонентов на серверах, где существует больше возможностей для контроля. Из блока сценария –action есть доступ к автоматической переменной $args, которая содержит все аргументы, передаваемые от события. Используйте Write $args в блоке сценария –action, чтобы увидеть, какие аргументы есть у данного события WMI.
13
|
|||||||||||||||||||||
| 08.08.2012, 17:28 | |
|
Ответы с готовыми решениями:
8
PowerShell vs PowerShell ISE Введение Введение в IT! |
|
13177 / 4625 / 168
Регистрация: 25.10.2010
Сообщений: 9,413
|
||||
| 08.08.2012, 17:28 [ТС] | ||||
|
Часто задаваемые вопросы
Как запускать файлы EXE, COM, CMD, BAT Просто укажите полный путь к файлу или только имя файла, если путь к нему содержится в переменной Path Как вызвать скрипт из текущей папки если папка не содержится в переменной Path Укажите полный путь к файлу или используйте .\ для обозначения текущего каталога: .\Test.Ps1 Как использовать переменные окружения? В PowerShell переменные окружения вынесены в специальный диск: Env:\ Чтобы получить содержимое переменной окружения используется следующая конструкция: Write-Host "Добро пожаловать $($env:computername)!" Как выполнить VB Script код в PowerShell (например если вы знаете как что то сделать в VBS, но не знаете как в PowerShell)? $vbs = New-Object -com MSScriptControl.ScriptControl $vbs.Language = "VBScript" $vbs.Eval('msgbox("Привет!")') $code = 'InputBox("Введите ваше имя","Анкета")' $vbs.Eval($code) Как выбрать файлы с размером более 1 Мб dir | where {$_.length -ge 1mb} Все процессы запущенные из папки Windows Get-Process | where {$_.path -like "c:\windows*"} | Stop-Process -whatif Расшаренные диски Get-WmiObject win32_share | where {$_.path -like "?:"} Как посмотреть какие свойства есть у объекта? С помощью команды Get-Member:
Используйте Select-String: Get-Content C:\Windows\WindowsUpdate.log | Select-String "error|warning" Get-Content C:\Windows\WindowsUpdate.log | where {$_ -match "error 0x(\d+)"} | foreach {$_.matches[1]} Включить регистр символов Операторы -eq -like -match и т.п. не чувствительны к регистру символов. Припишите к оператору букву "c" (от Case), если регистр важен: "Test" -eq "test" "Test" -ceq "test" Как посмотреть что это за команды - "%", "?", "gps" или "fl"? Get-Command % | fl Get-Command `? | fl Get-Command gps, fl | ft -AutoSize Как изменить приглашение (prompt)? Надо переопределить функцию prompt. Всё что вернёт эта функция будет приглашением. А можно в ней же выполнить и другие команды: function prompt { $host.UI.RawUI.WindowTitle = Get-Location ; $env:username + "@" + $env:computername + ":" + (get-location | split-path -leaf) + "> "} Получить текущий каталог В cmd.exe есть переменная %cd% возвращающая текущий каталог. В PowerShell используется команда $pwd. Кроме того можно получить текущий каталог с помощью команды Get-Location. Как вывести текст, и не переводить курсор на другую строку? Write-Host "Начало строки." -noNewLine; Write-Host " Конец строки." Как изменить фон и цвет шрифта в окне PowerShell? Задать соответствующие свойства объекта $host: $host.UI.RawUI.BackgroundColor = "Black" $host.UI.RawUI.ForegroundColor = "Green" Иногда бывает необходимо выделить результаты при помощи цвета, сделав их удобнее для чтения. Команда Write-Host имеет такие параметры, как -Foregroundcolor и -Backgroundcolor. Write-Host "Ошибка!" -ForegroundColor "Red" Write-Host "Красный текст на синем фоне" -Foregroundcolor red -Backgroundcolor blue Команда Get-Help Write-Host -Detailed даст вам полный список возможных цветов. Более наглядный пример для вывода всех 16 цветов. 0..15 | %{Write-Host " " -back $_ цвет;[System.ConsoleColor]$_} Но, по возможности используйте командлеты Write-Error, Write-Verbose и Write-Warning. Например: Write-Warning "Будьте внимательны" Как изменить цвета других сообщений, например ошибок или предупреждений? Нужно задать соответствующие свойства $host.PrivateData.ErrorForegroundColor $host.PrivateData.WarningForegroundColor $host.PrivateData.VerboseForegroundColor Как создать алиас (псевдоним)? Set-Alias ss Select-String Если необходимо задать параметры для команды, то можно просто создать функцию: function fh ($Topic) {Get-Help $Topic -full | more} А если вы хотите чтобы эти алиасы/функциии сохранились - надо поместить их в свой профиль. Как создать/изменить профиль? Если он уже существует (Test-Path $Profile) то можно открыть его например так: notepad $profile Если же он еще не создан (при установке PowerShell не создает профиль) то можно создать его вот так:
$e = Get-Process explorer Write-Host "Путь к проводнику: $e.Path" # не получится Write-Host "Путь к проводнику: $($e.Path)" Write-Host "Путь к проводнику: $((Get-Process explorer).Path)" Write-Host "Дважды два равно $(2 * 2)!" Как посчитать количество объектов в конвейере? Используйте командлет Measure-Object или свойство массивов .Count Get-Process | where {$_.ws -gt 50mb} | Measure-Object (Get-Process | where {$_.ws -gt 50mb}).count Как запустить скрипт из планировщика? Следует запустить C:\Windows\system32\WindowsPowerShell\v1 .0\powershell.exe с ключем -Command Скрипт Еще полезные ключи powershell.exe: -NoLogo -NonInteractive -NoProfile У командлетов зачастую весьма длинные названия аргументов. Можно не писать их полностью? У большинства команд задан порядок следования аргументов. Если известен этот порядок, то можно вообще не писать названия аргументов: Set-Content -Path test.txt -Value "Text" Set-Content test.txt "Text" Можно дополнять имена аргументов с помощью клавиши табуляции. Можно просто писать только первые несколько букв аргумента, и если у данного командлета нет других аргументов, начинающихся на эти буквы - то сработает: Write-Host test -f red -b blue Get-Command -n process # Не сработает, потому что есть еще аргумент -Name Get-Command -no process # Сработает, потому что это уже точно не -Name Как при написании скрипта или команды перейти на следующую строчку? Используйте символ апострофа: Get-Command ` -Name Explorer Как использовать в строке символы перевода строки, табуляции, и т.п.? С новой строки - `n;`t - табуляция, символ кавычек - `" и апострофа ` - ` В качестве маскирующего символа в PowerShell используется апостроф. Если бы, как обычно, использовался обратный слеш - из PowerShell получился бы ужасный шелл. Как посмотреть справку по команде? Get-Help Get-Help Get-Process Get-Help Get-Process -Full Get-Help Get-Process -Parameter Name Get-Help Get-Process -Examples Как посмотреть справку по конструкции языка или другой теме? Get-Help about_* | Format-List Name, Synopsis Get-Help About_if | more Как подключать расширения PowerShell , например расширение для работы с Exchange 2007 Get-pssnapin -registered | add-pssnapin Каким образом в теле функции определяется результат, который должна вернуть функция? Всё, что не присваивается переменной - возвращается. В общих чертах так. Т.е. function test {"text"} вернёт строку "text" Как управлять групповыми политиками C выходом Windows 7 и Windows Server 2008 R2 появилась возможность не только работать с объектами групповых политик GPO, но делать более сложные вещи: Создавать, удалять, проводить резервное копирование, собирать отчеты и импортировать GPO; Создавать, обновлять и удалять связь объектов групповых политик с контейнерами Active Directory Directory Services; Конфигурировать наследование и права доступа к организационным единицам OU; Настраивать параметры Group Policy Preferences хранящиеся в реестре; Мне действительно нужно выбрать только некоторые строки, например я хочу обработать текстовый файл. Используйте Select-String: Code Snippet Get-Content C:\Windows\WindowsUpdate.log | Select-String "error|warning" Get-Content C:\Windows\WindowsUpdate.log | where {$_ -match "error 0x(\d+)"} | foreach {$_.matches[1]} Все что здесь написано, было найдено в инете два года назад, для написания курсовой работы. Так, что за достоверность данных я поручиться не могу
0
|
||||
|
|
||||||
| 08.08.2012, 23:50 | ||||||
|
А главное, если ни разу не пользовались,
разрешить политику запуска неподписанных скриптов,
Запускаем CMD от имени администратора. Задаем команды:
иначе система проигнорирует самописный файл, или вручную введенную команду. Здесь http://technet.microsoft.com/e... 76949.aspx про:
9
|
||||||
|
Модератор
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
|
|
| 13.05.2013, 19:12 | |
|
К сожалению, разобраться в этом для новичка достаточно сложно, система вложенности методов/свойств едва ли не уникальна для большинства объектов.
1
|
|
|
Модератор
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
|
|
| 06.12.2013, 21:29 | |
|
Вот изучаю справку и понимаю, что этот язык невероятно мощный...
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2016
Сообщений: 13
|
|
| 04.11.2016, 14:27 | |
|
Не вижу здесь команды (завис) каким образом преобразовать полученные данные из powershell s текстовый читабельно-удобный формат. Какая команда и как вообще находить нужные команды?
0
|
|
|
1 / 1 / 0
Регистрация: 13.11.2017
Сообщений: 4
|
||
| 08.02.2018, 13:36 | ||
ls * -ex *.tmp | select n*, le* писать -ex вместо -Exclude. Проблема в том, что я никак не могу найти про эту фичу в документации!Впрочем, настоящие псевдонимы параметрам тоже можно зарегистрировать - см. про атрибут Alias в тексте, возвращаемом командой Get-Help about_Functions_Advanced_ParametersА писать n* вместо name и le* вместо length в этом примере можно потому, что в параметры Select-Object, Get-Help и многих других командлетов можно передавать шаблоны значений, а не значения (то есть, можно "использовать подстановочные знаки", как это называется в документации. См. Get-Help about_Parameters и Get-Help about_Wildcards). А в кавычки их можно не заключать, потому что есть режим парсинга аргументов, про что написано в Get-Help about_parsingТак же стоит упомянуть, что подробности про алиасы командлетов, функций, скриптов и файлов есть в тексте, возвращаемом Get-Help about_Aliases
1
|
||
|
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,812
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| 01.03.2021, 01:04 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
и что делать вам, когда вы пытаетесь исполнить скрипт на другом языке из-под powershell, а он начинает разбирать строку". Испытуемой исполняемой программой я назначаю perl; во-первых, потому что знаю про ком. строку запуска perl всё возможное и невозможное, во-вторых, потому что perl единственный из языков, кто умеет менять двойные и одинарные кавычки, как перчатки, что облегчает проведение опытов, и, в-третьих, потому что perl имеет схожий с powershell синтаксис, что вносит дополнительную сложность, когда powershell суёт свой нос в содержимое при запуске не только perl, но и l tcl / awk / bash / etc скриптов с $-префиксом в имени переменной. 1) Традиционный для unix-shell запуск однострочника; Одинарные кавычки после опции -e предохраняют пробелы и предлагают shell-интерпретатору воспринимать всю заковыченную строку как один аргумент. Двойные кавычки должны при этом уйти внутрь perl как есть.
А вот что. Одинарные кавычки он сдёрнет ( и это правильно ) и передаст строку в запускаемую программу как один аргумент. И это тоже правильно. Но он сдёрнет также и двойные кавычки и внутрь perl на исполнение уйдёт строка 「print OK, dude\n」 А вот это уже неправильно. Чтобы добиться нужного результата двойные кавычки придётся удвоить;
Для полноты картины засунем perl-скрипт в powershell переменную
print "Hello, dude\n" То есть, внутри переменной $perl_script живёт вполне себе полноценный perl скрипт. Исполняем:
То есть, тот же эффект; powershell сдёрнул двойные кавычки и при использовании переменной вместо литерала. 2) читаем содержимое about_parsing
Пробуем:
Да? Но, нет. Значит powershell опять двойные кавычки сдёрнул. Проверяем:
ОКВ документации, стало быть, неточность, двойные кавычки даже после появления в ком. строке значка стоп-разбор--% продолжают интерпретироваться. но в целом применение --% в комплекте с perl может выглядеть интригующе:
800 и даже так:
200 400 600 или так:
200 курей 400 индюшек 600 уток
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| 01.03.2021, 01:04 | |
|
Помогаю со студенческими работами здесь
9
Введение в Ассемблер Введение в 1C программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|