1.Основной синтаксис для начала работы с PS-программированием.
1.Основной синтаксис для начала работы с PS-программированием.

[TOC]

0x00 PS Основы программирования

Описание: Когда я только начинал изучать PowerShell, если мне не удавалось выполнить задачу с помощью однострочной команды PowerShell, я обращался за помощью к графическому интерфейсу. Затем со временем я постепенно овладел навыками написания скриптов, функций и модулей.

1. Базовый формат

  • 1.Комментарии к скрипту : Используется в ПС #персонажи для комментариев
  • 2. Именование переменных. В глобальных переменных используются имена переменных в верхнем регистре, тогда как в именах неглобальных переменных используются заглавные буквы или верблюжий регистр.
  • 3. Именование объектов: используйте формат «глагол-имя».
  • 4. Регистр. При выполнении команды регистр не учитывается.

2. Приоритет вызова

Описание: Приоритет записи вызова Powershell (сверху вниз):

  • Псевдоним:Консоль сначала ищет вводда Нет, этоодин Псевдоним,еслидаосуществлять Псевдонимотносится киз Заказ。потому чтоэтотнас Можеткпроходить Псевдоним Покройте любойpowershellЗаказ,потому чтодля Псевдонимизприоритет Самый высокий
  • Функция: если псевдоним не найден, поиск функции продолжится. Функция аналогична псевдониму, за исключением того, что она содержит больше команд PowerShell. Таким образом, вы можете настроить командлеты расширения функций для закрепления часто используемых параметров.
  • Команда: если функция не найдена, консоль продолжит поиск команды, то есть командлета, внутренней команды PowerShell.
  • Сценарий: команда не найдена, продолжайте поиск сценария Powershell с расширением «.ps1».
  • Файл: если сценарий не найден, он продолжит поиск файлов. Если файлов нет, консоль выдаст исключение.

Подведите итог: Alias > Function > Command > Script > File

3.PS специальные символы

  • ' : Знак $ в одинарных кавычках не распознается как переменная
  • "": Символ $ в двойных кавычках распознается как переменная.
  • `: escape-символ в PowerShell аналогичен обратной косой черте \ в других языках программирования. Если этот символ добавлен перед переменной, переменная не будет анализироваться.
  • @ : Введите многострочную строку в командной строке

Пример демо:

Язык кода:javascript
копировать
# -1. Сравнение использования символов.
PS C:\Users\WeiyiGeek> $a=8; $b='$a is 8'; $b
$a is 8
PS C:\Users\WeiyiGeek> $a=8; $b="$a is 8"; $b
8 is 8
PS C:\Users\WeiyiGeek> $a=8; $b="`$a is 8"; $b
$a is 8
PS C:\Users\WeiyiGeek> $json = [String]@"
>> {
>>   "test": 'json',
>>   "name": "WeiyiGeek",
>>   "age": 1024
>> }
>> "@
PS C:\Users\WeiyiGeek> $json
{
  "test": 'json',
  "name": "WeiyiGeek",
  "age": 1024
}

# -2 Escape-символы для использования новой строки при выполнении команды и использования новой строки при выводе строки.
PS C:\Users\WeiyiGeek> Get-WmiObject -Class win32_bios `
| select serialnumber
  # serialnumber
  # ------------
  # 8QVY862

"This is `nnewLine"
# This is
# newLine

Tips :PowerShellизобычныйвыражениесерединаможет произойтиизхарактер(На самом деле примерноиPerlпочти)

(1) Символ соответствия строки (заполнитель PlaceHolder):

Язык кода:javascript
копировать
. Это точка, означающая любой один символ, кроме символа новой строки (любой character except newline (Equivalent: [^\n]))
[^abc] Любой один символ, кроме указанного символа (abc), вы можете заменить abc другими группами символов. (Все characters except the ones specified)
[^a-z] Любой один нестрочный символ (Все characters except those in the region specified)
[abc] Любая единица в указанном наборе символов, то есть любая единица в abc (Один of the characters)
[a-z] Любая единица в указанном диапазоне символов, то есть любая одна строчная буква. Один of the characters in the region
\a Белл (ASCII 7))
\c Any character allowed in XML names
\cA-\cZ Control+A to Control+Z, ASCII 1 to ASCII 26
\d Любое одиночное число, эквивалентное [0-9] (Любой number (Equivalent: [0-9]))
\D Любой один, не являющийся числом. Любой non-number
\e Клавиша ESC (Выход (ASCII 27))
\f Form Feed, (ASCII 12)
\n Разрыв строки break
\r Перевозка return
\s Любая клавиша с одним пробелом (пробел, например табуляция, перевод строки) Любая whitespace (space, tab, new line)
\S Любой один символ без пробелов (Любой non-whitespace)
\t клавиша табуляции
\w Буквы, цифры и подчеркивание (Буква, number or underline)
\W Дополнение \w (небуквенное, number, or underline)

(2) Количество совпадений (квантификатор)

Язык кода:javascript
копировать
* Появляется ноль раз, 1 раз, несколько раз (Любой (no occurrence, once, many times))
? Появляется ноль раз и 1 раз (Нет occurrence or one occurrence)
{n,} Появляется как минимум n раз (при least n occurrences)
{n,m} Появляются не менее n раз и не более m раз (при least n occurrences, maximum m occurrences)
{n} Встречаются n раз (Ровно n occurrences)
+ Появляются один раз, несколько раз (Один or many occurrences)
всеиз Количество матчейизсимвол,По умолчанию обадажадныйиз,вот и все Волямаксимальная длинаиз Сделать матч。если Хочу этогоприезжатьсамый короткийизсоответствовать,Затем добавьте знак вопроса (?) после указанной выше группы символов.

(3) Соответствующая граница

Язык кода:javascript
копировать
$ Конец строки (Конец of text)
^ начало строки (Начало of text)
\b Word boundary
\B No word boundary
\G After last match (no overlaps)

0x01 PS интерактивный

описывать: нас Можеткпроходить Открытьpowershell.exeприложениеwindowsокно для продолженияинтерактивный Заказ ХОРОШОизвходить

1. Расчет командной строки

Язык кода:javascript
копировать
PS C:\Users\WeiyiGeek> (512*2)/2+512
1024
PS C:\Users\WeiyiGeek> 1gb / 1mb
1024
PS C:\Users\WeiyiGeek> 0x3389
13193

2. Выполнение внешних команд

описывать: PS Может выполнять внешние команды, а также CMD, Прямо сейчас windows Cmd По сути, все, что работает в PS, можно запустить и в PS.

Язык кода:javascript
копировать
# Просмотр состояния сетевого порта через netstat
netstat
# Просмотрите собственную конфигурацию сети через IPConfig.
ipconfig
# Запустите консоль CMD и введите cmd или cmd.exe, Выйти из cmd можно с помощью команды exit.
cmd

Вопрос: Почему я могу открыть Блокнот через Notpad, но не могу открыть WordPad через Wordpad?

отвечать: потому чтодляnotepad.exeродыC:Windows\system32 этот каталог,По умолчанию этот каталог был ВключатьсуществоватьPowershellизсредапеременная$env:Pathсередина。иwordpad.exe Местосуществоватьиз“%ProgramFiles%\Windows NT\Accessories\wordpad.exe“Нет каталога Включать;

Язык кода:javascript
копировать
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x
86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program File
s (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft\Web Platform Installer\

# Решение: Вы можете сначала войти в этот каталог, а затем запустить wordpad, или добавить каталог, где находится Воляwordpad, в окружение переменная, $env:Path=$env:Path+”%ProgramFiles%\Windows NT\Accessories”。

3. Настройка и использование псевдонима

описывать: Та же команда псевдонима для Linux, что и для Windows PSсерединатакжеподдерживатьсопределение Псевдоним,Что Псевдонимиз Две функциидаНаследовать unix-shellиwindows-cmdиУдобныйиспользовать

Основной пример:

Язык кода:javascript
копировать
# 1. Запросите реальную команду командлета, на которую указывает псевдоним.
Get-Alias -name ls

# 2. Просмотр доступных псевдонимов
Get-Alias
# Просмотр всех псевдонимов и количества псевдонимов, указывающих на командлеты.
ls alias: | Group-Object definition | sort -Descending Count

# 3. Создайте свой собственный псевдоним
PS C:\PS> Set-Alias -Name Edit -Value notepad
PS C:\PS> Edit
PS C:\PS> $alias:Edit
notepad

# 4. Удалите свой псевдоним
# Пользовательские псевдонимы будут автоматически удалены при выходе из PowerShell (при условии, что нет системы импортирования), а встроенные псевдонимы необходимо удалить вручную.
del alias:Edit

# 5. Сохраните свои псевдонимы (экспортируйте с импортировать)
Export-Alias alias.ps1
Import-Alias -Force alias.ps1

# 6. Расширить псевдонимы с помощью функций (этот метод нужен, когда простые псевдонимы не могут завершить работу), чтобы определение псевдонимов стало более гибким;
PS C:\PS> function test-conn { Test-Connection  -Count 2 -ComputerName $args}
PS C:\PS> Set-Alias tc test-conn
PS C:\PS> tc localhost  # С помощью псевдонимов сопоставления функций можно выполнять более сложные и мощные функции, где $args является заполнителем для параметра.
Source        Destination     IPV4Address      IPV6Address                              Bytes    Time(ms)
------        -----------     -----------      -----------                              -----    --------
WeiyiGeek  localhost       127.0.0.1        ::1                                      32       0

4. Выполнение файлов и скриптов

описывать: Мы можем запускать файлы и сценарии непосредственно в командной строке PS, но необходимо использовать абсолютные или относительные пути или файлы, которые нужно запускать, должны быть определены в доверенных переменных среды.

PowerShell середина МожетосуществлятьПакетная обработка летучих мышей、Вопросительный знак сценария VB、и файл сценария PS1

Советы. Скрипты и пакетные процессы представляют собой псевдоисполняемые файлы. Они просто содержат ряд кодов командной строки, которые могут интерпретироваться и выполняться интерпретатором командной строки.

Пример 1. Выполнение пакетной обработки ping.bat в PS

Язык кода:javascript
копировать
# ping.bat
@echo off
echo #batch File Test#
echo %1%
%1%
pause

Демонстрационный эффект:

Язык кода:javascript
копировать
PS C:\Users\WeiyiGeek> ./ping whoami
#batch File Test#
whoami
weiyigeek\weiyigeek
Пожалуйста, нажмите любую клавишу, чтобы продолжить. . .
PS C:\Users\WeiyiGeek> ./ping hostname
#batch File Test#
hostname
WeiyiGeek
Пожалуйста, нажмите любую клавишу, чтобы продолжить. . .

WeiyiGeek.ping

Советы: ввод ping в cmd не приведет к выполнению команды ping, а напрямую запустит ping.bat (т. е. .bat охватывает команду cmd), а пакетный файл ping, запускаемый на PS, должен быть в формате ./ping, поэтому Команда такая же, как и в PowerShell, обфускация сценария не произойдет, поскольку PowerShell имеет более безопасный механизм.

Пример 2. Выполнение файла сценария VB в PS.

Язык кода:javascript
копировать
# осуществлять .\test.vbs Он будет проходить текущий процесс Win32 и отображать подробную информацию о каждом процессе в окне.
# test.vbs
Set wmi = GetObject("winmgmts:")
Set collection = wmi.ExecQuery("select * from Win32_Process")
For Each process in collection
WScript.Echo process.getObjectText_
Next

# существоватьpowershellсерединаосуществлятьVBСкрипт
PS C:\PS> cscript.exe .test.vbs
instance of Win32_Process
{
  Caption = "System Idle Process";
  CreationClassName = "Win32_Process";
  CSCreationClassName = "Win32_ComputerSystem";
  ....
}

Tips : Как сделать вывод скрипта VB через консоль? Wscript //H:CScript Tips : каквозвращаться ОригиналVBСкрипт выводится через окно??WScript //H:WScript

Пример 3. Выполнение файла сценария ps1 в PS. описывать: Powershell имеет собственное расширение скрипта «.ps1».

Язык кода:javascript
копировать
PS C:\PS> echo "dir;Get-PSProvider;help dir" >test.ps1
PS C:\PS> Get-Content ./test.ps1
dir;Get-PSProvider;help dir
PS C:\PS> ./test.ps1

0x02 введение в конвейер PS

1. Основные понятия

Вопрос: Что такое трубопровод?

отвечать: Труба ведет себя как серия соединенных сегментов трубы, при этом элементы перемещаются по трубе, проходя через каждый сегмент трубы;

описывать:существовать PS середина Создайте пайплайн, пожалуйстаиспользоватьтрубопроводоператор“|”Воля Заказсоединятьсуществовать Вместе,каждый Заказиз Результат:Воляодеялоиспользоватьсделать следующий Заказизвходить,иLinuxсерединаShellиспользоватьпохожий, нодадругойиздаоно проходитиз Данные недатекстидаобъект;

Режим обработки труб:

  • 1.последовательный режим(помедленнее):существоватьпоследовательный режимсерединатрубопроводсерединатолько в то же времяосуществлятьодин кусочек Заказ,толькотекущийодин кусочек Заказизвсеосуществлятьполный,Только тогдавсерезультат交付Давать下один кусочек Заказ。
    • Преимущества и недостатки: Медленно и требует много памяти, поскольку для хранения промежуточных результатов необходимо выделять пространство много раз.
  • 2.потоковый режим(Быстрее):потоковый режимбудет стоять Прямо сейчасосуществлятьвсе Заказ,такой жеодинчасмежду Можетспособныйсуществоватьосуществлятьнесколько Заказ。
    • Преимущества и недостатки: Это экономит память. Определенная задача в конвейере все еще может выполняться, но некоторые результаты уже выведены, что сокращает хранение промежуточных результатов.

Tips : Команды конвейера также имеют препятствия. Например, при рекурсивной сортировке файлов вам необходимо получить все файлы перед сортировкой; (Dir C: -recurse | Sort-Object)

Советы: Каждая команда в конвейере (называемая элементом конвейера) передает свой вывод поэлементно следующей команде в конвейере.

  • 1. Традиционный конвейер Cmd основан на тексте, а Powershell — на объектной основе.
  • 2. Объект, переданный в конвейер, можно использовать в качестве параметра следующего командлета.
  • 3. Это может уменьшить рабочую нагрузку при использовании сложных команд и упростить просмотр рабочего процесса команд.
  • 4. Сократите потребление ресурсов и сразу же приступайте к получению результатов, чтобы повысить эффективность выполнения.

Часто используемые команды, требующие использования каналов:

  • Compare-Object: сравнивает два набора объектов.
  • ConvertTo-Html: преобразует объекты Microsoft .NET Framework в HTML, который можно отобразить в веб-браузере.
  • Export-Clixml: создает представление объекта на основе XML и сохраняет его в файле.
  • Export-Csv: преобразует объект Microsoft .NET Framework в серию строк переменной длины (CSV), разделенных запятыми, и сохраняет эти строки в
  • в CSV-файле.
  • ForEach-Object: выполнение операции для каждого набора входных объектов.
  • Формат-Список: отформатируйте выходные данные в виде списка свойств, где каждое свойство отображается в отдельной строке.
  • Формат-Таблица: отформатируйте вывод в виде таблицы.
  • Широкий формат: форматирование объектов в широкую таблицу, в которой отображается только одно свойство каждого объекта.
  • Get-Unique: возвращает уникальные элементы из отсортированного списка.
  • Group-Object: групповые объекты, содержащие одинаковое значение для указанного свойства.
  • Import-Clixml: импортирует файл CLIXML и создает соответствующий объект в Windows PowerShell.
  • Measure-Object: вычислитьобъектиз Числовые свойства инитьобъект(например текстовый файл)серединаизхарактерчисло、Количество слов и количество строк.
  • подробнее: Отображение результатов на разделенном экране.
  • Out-File: отправить вывод в файл.
  • Out-Null: удаляет вывод без отправки его на консоль.
  • Out-Printer: отправить вывод на принтер.
  • Out-String: отправить объект на хост в виде списка строк.
  • Select-Object: выбирает указанное свойство объекта или группы объектов. Он также может выбирать уникальные объекты из массива объектов или из начала или конца массива объектов.
  • Выберите указанное количество объектов.
  • Сортировка-Объект: Сортировка по объектам значений атрибутов.
  • Tee-Object: сохраните вывод команды в файл или переменную и отобразите его в консоли.
  • Где-Объект: создайте фильтры, которые контролируют, какие объекты передаются по командному конвейеру.

2. Однострочная команда

описывать: PowerShell one Команда представляет собой непрерывный конвейер, а не обязательно команду на физической линии. Но не все команды на физической линии являются однострочными командами.

Советы. Символ вертикальной черты — это символ в PowerShell, который допускает естественные разрывы строк, включая запятые (,), а также квадратные левые скобки ([), фигурные скобки ({) и круглые скобки (()).

Советы. Другие менее распространенные символы включают точку с запятой (;), знак равенства (=), а также левые одинарные и двойные кавычки (’,”).

Пример 1. Несмотря на то, что следующая команда состоит из нескольких физических строк, это однострочная команда PowerShell, поскольку она представляет собой непрерывный конвейер.

Язык кода:javascript
копировать
# 1) Получение системных услуг и просмотр атрибутов
Get-Service |
  Where-Object CanPauseAndContinue -eq $true |
    Select-Object -Property *

# 2) Выводить файлы в текущий каталог и сортировать их через канал
ls | sort -Descending Name | Format-Table Name,Mode

Пример 2. Использование обратных кавычек (`) или диакритических знаков в качестве символов продолжения строки — спорная тема (ее рекомендуется по возможности избегать), поскольку команды, показанные в примерах выше и ниже, отлично работают в консоли PowerShell. Но если я попытаюсь запустить их на панели консоли PowerShell ISE, я получу ошибку.

Язык кода:javascript
копировать
# PS (осуществлятьOK)
Get-Service -Name w32time |
>> Select-Object -Property *

# PS ISE : PowerShell ISE Панель консоли не ждет оставшейся части команды на следующей строке (например, PowerShell консоль).
Get-Service -Name w32time |
Пустые элементы труб не допускаются.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordEx 
   ception
    + FullyQualifiedErrorId : EmptyPipeElement

WeiyiGeek.PowerShellиISE

Решение: избегать PowerShell ISE Эта проблема возникает на панели консоли Shift+Enter,и Нетда Толькодасуществоватьпродолжатьосуществлятьна другой линиииз Заказчасв соответствии с Enter。

Язык кода:javascript
копировать
# PS ISE
PS C:\Users\WeiyiGeek> Get-Service -Name w32time | 
  # Select-Object -Property *

  # Name                : w32time
  # RequiredServices    : {}
  # CanPauseAndContinue : False
  # CanShutdown         : True
  # CanStop             : True
  # DisplayName         : Windows Time
  # DependentServices   : {}
  # MachineName         : .
  # ServiceName         : w32time
  # ServicesDependedOn  : {}
  # ServiceHandle       : 
  # Status              : Running
  # ServiceType         : Win32OwnProcess, Win32ShareProcess
  # StartType           : Manual
  # Site                : 
  # Container           :

Пример 3. Следующий пример не PowerShell 单ХОРОШОЗаказ,потому чтодляэто Нетдаодиннепрерывныйтрубопровод,этодана одной линиииздвое одни Заказ,Используйте точку с запятой(;)отдельный。

Язык кода:javascript
копировать
$Service = 'w32time'; Get-Service -Name $Service
  # Status   Name               DisplayName
  # ------   ----               -----------
  # Running  w32time            Windows Time

Пример 4. Вывод форматированного текста в канале описывать: PS Результаты объекта можно преобразовать в текст и отобразить на консоли.

Язык кода:javascript
копировать
# Пример 1. Фактически Out-Default сначала вызовет Format-Table, и по умолчанию будут скрыты дополнительные атрибуты, а затем результат вызова Out-Host будет выведен на консоль.
ls | Out-Default
ls | Format-Table | Out-Host
ls | Format-Table * -Wrap # показыватьскрыватьизобъектсвойство

3. Перенаправление

описывать: Мы можем сохранить вывод команды в файл с помощью символа перенаправления ‘>’ покрыть ’>>’ добавление;

Идентификатор перенаправления:

  • 1 > stdio.out
  • 2 > errorout
  • 6 > infoout

Основной пример:

Язык кода:javascript
копировать
# Пример 1. Простой пример
PS C:\PS> "Powershell Routing" >.txt
PS C:\PS> "Powershell Routing1" >>.txt
PS C:\PS> Get-Content .\.txt
Powershell Routing
Powershell Routing1

# Пример 2. Перенаправление вывода ошибок
Get-Command Get-Acl 1> out.txt 2> error.txt 6> info.txt

4.ETS и трубопроводы

описывать: система расширенного типаExtended Type System (ETS),ETSвстречавернотрубопроводсерединаобъектизменять Заменить натекстиз机制进ХОРОШО宏观настраивать控。

ЭТС состоит из двух частей:

  • Расположение некоторых объектов управления: необходимо создать файл конфигурации .ps1xml.
  • Часть свойств объекта управления: после преобразования результата объекта в текст в конвейере вы больше не можете преобразовать текст в объект, поскольку ETS не может обрабатывать текст.

Совет: Объекты типов, содержащиеся в конфигурации ETS, будут преобразованы в текст наилучшим образом. Мы знаем, что объекты типов, содержащиеся в конфигурации ETS, будут преобразованы в текст наилучшим образом.

Язык кода:javascript
копировать
# 1. Сначала определите тип объекта результата, возвращаемого командой.
PS > $object = Get-WmiObject Win32_Processor | Select-Object -first 1
PS > $object.GetType().FullName
System.Management.ManagementObject #Обнаружен целевой тип: System.Management.ManagementObject

# 2. Затем создайте один файл конфигурации: Win32_Processor.format.ps1xml.
System.Management.ManagementObject
<label>Name</label>
<label>Description</label>
<label>ID</label>

PS > Update-FormatData .Win32_Processor.format.ps1xml #Загрузить в ETS
PS > Get-WmiObject win32_processor
# Name         Description                    ID
# ----         -----------                    --
# CPU0         x64 Family 6 Model 15 Stepp... BFEBFBFF000006FD

Дополнение: у этого определения может быть недостаток. Когда мы получаем другие объекты WMI, они также будут отображаться в соответствии с определенными нами правилами.

Базовый экземпляр

Язык кода:javascript
копировать
# 0. Введите следующую команду, чтобы просмотреть полный список в удобочитаемой форме, передать его другим командлетам и использовать.
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap
# Clear-Variable [-Name] <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Force] [-PassThru] [-Scope <string>] [-WhatIf] [-Confirm] [<CommonParameters>]


# 1. Например, если использовать Out-Host для принудительного постраничного отображения вывода другой команды (который выглядит как переданный текст)
Get-ChildItem -Path F:  | Out-Host -Paging
Get-ChildItem F: |  Out-Host -Paging
<SPACE> next page; <CR> next line; Q quit
# Оглавление: F:\
# Mode                LastWriteTime         Length Name
# ----                -------------         ------ ----
# d-----        2019/7/11     12:29                BadUSB-code


# 2. Если работает Get-Location, в то время как текущее местоположение C Корневой путь диска
PS C:\Users\WeiyiGeek> gl
  # Path   #Текстовый вывод представляет собой сводку информации, а не Get-Location Полное представление возвращаемого объекта
  # ----              
  # C:\Users\WeiyiGeek
#Заголовок в выводе добавляется в процессе форматирования данных отображения на экране, и вы можете получить информацию о Get-Location Возвращенная информация об объекте.
Get-Location | Get-Member -MemberType Property
Get-Location | Get-Member -Name Path
  # TypeName: System.Management.Automation.PathInfo
  # Name         MemberType Definition
  # ----         ---------- ----------
  # Equals       Method     bool Equals(System.Object obj)


# 3.еслихотетьосуществлятьнесколько больших запросов,Может Запросодин次и Волярезультатхранилищесуществоватьпеременнаясередина Позжеиспользоватьпеременнаяизсодержание,иникто Нужно повторитьиспользовать Некоторые накладные расходы вышеиз Запрос。property - Британия [ˈprɒpəti]
$TimeService = Get-Service -Name W32Time
$TimeService | Select-Object -Property Name,Status,ServiceType
  # Name     Status                        ServiceType
  # ----     ------                        -----------
  # W32Time Running Win32OwnProcess, Win32ShareProcess


# 4. Остановите службу через канал и посмотрите, какие файлы получают символ канала.
# Stop-Service из InputObject параметрAccept по значению (по типу) через канал ServiceController объект 。
Get-Service -Name w32time | Stop-Service
# По трубопроводу Воля w32time перешел к Get-Member, чтобы подтвердить, что это одна строка.
'w32time' | Get-Member
  # TypeName: System.String


# 5. в PowerShell середина,всегда должениспользоватьодинарная кавычкаи Нетдадвойные кавычки,Если не указаноизнитьизсодержание Включатьнеобходимо расширить до фактического значенияценитьизпеременная。проходитьиспользоватьодинарная кавычка,PowerShell Не нужно разбирать цитатысередина Включатьизсодержание,потому чтоэтот Может Немного ускорить кодбегатьскорость。
'w32time' | Get-Service
  # Status   Name               DisplayName
  # ------   ----               -----------
  # Running  w32time            Windows Time
# По трубопроводу Воля w32time перешел к Стоп-Сервис для тестирования
'w32time' | Stop-Service


# 6.Нажмите Stop-Service из Name параметризсвойствоимясказатьсоздаватьсопределениеобъект,к测试трубопроводвходить。
$CustomObject = [pscustomobject]@{
 Name = 'w32time'
}
# CustomObject переменнаяизсодержаниеда PSCustomObject тип объекта,ииэто Включатьназванный Name изсвойство 。
# Если вы хотите быть в $CustomObject Если вы используете кавычки с обеих сторон переменной, вам необходимо использовать двойные кавычки. В противном случае, если используются одинарные кавычки, текстовая строка будет иметь вид $CustomObject проходитьтрубопроводперешел к Get-Member,и Нетдапередачапеременная Включатьизценить。
$CustomObject | Get-Member

# хотя Воля $CustomObject изсодержаниепроходитьтрубопроводперешел к Stop-Service cmdlet Будет Воля Этот контент связан с Name параметр, но на этот раз он будет связан с именем свойства, а не со значением, потому что $CustomObject изсодержаниедаодиниметьназванный Name изсвойствоизобъект 。
# попробуй По трубопроводу Воля $CustomObject перешел к Stop-Service выдаст ошибку, потому что он не генерирует ServiceController или String объект,ии Нетназванный Name изсвойство 。
$CustomObject | Stop-Service

# еслиодин Заказизвыходи Другойодин Заказизтрубопроводвходить Параметры Нетпоследовательный,но Можеткиспользовать Select-Object Переименуйте свойства, чтобы они были настроены правильно.
# использовать Select-Object Воля Service Объект переименован в Name изсвойство 。
$CustomObject |
  Select-Object -Property @{name='Name';expression={$_.Service}} |
    Stop-Service

# 7.использоватьодин Заказизвыходделатьдля Другойодин Заказизвходить。 
# Сначала несколько Воля Windows Услуга из Отображаемое имя Сохранить текст проживания файле.
'Background Intelligent Transfer Service', 'Windows Time' | Out-File -FilePath $env:TEMP\services.txt
# Можеткбегать Заказ,существоватьскобкисередина提供Место需выход,делатьдля需хотетьвходитьиз Заказизпараметрценить。
Stop-Service -DisplayName (Get-Content -Path $env:TEMP\services.txt)

# 8.использовать PowerShellGet модульсередина Включатьиз Find-Module командлет, в PowerShell Найдите имя в библиотеке MrToolkit измодуль。и进ХОРОШО安装
Find-Module -Name MrToolkit | Install-Module

Примечание:

1. Разбивка на страницы также снижает загрузку ЦП, поскольку, когда вся страница готова к отображению, обработка командлета, находящегося ранее в конвейере Out-Host, приостанавливается до тех пор, пока не станет доступна следующая страница вывода.

2. Не все хосты PS поддерживают параметр Paging. Например, при попытке использовать параметр Paging в PowerShell ISE вы увидите следующую ошибку:

3. Простой способ найти входные данные конвейера. Установите модуль MrToolkit, содержащий функцию Get-MrPipelineInput;

Язык кода:javascript
копировать
# этот cmdlet Можетиспользовать Юй Цинцин Конечноприниматьтрубопроводвходитьиз Заказпараметр、приниматьизтип объекта,а такжедав соответствии сценитьвозвращатьсядав соответствии ссвойствоимясказатьприниматьтрубопроводвходить 。
Find-Module -Name MrToolkit | Install-Module
Get-MrPipelineInput -Name Stop-Service
  # ParameterName ParameterType                             ValueFromPipeline ValueFromPipelineByPropertyName
  # ------------- -------------                             ----------------- ---------------
  # InputObject   System.ServiceProcess.ServiceController[]              True           False
  # Name          System.String[]                                        True            True

0x03 переменная PS

описывать:переменнаяVariableсуществоватьлюбойодин门Скриптязыкили Автор сказалдаязык программированиясередина Вседажитьсуществоватьиз,его сутьда Примерно то же самоеиз;

  • PSМожетксоздаватьсказатьдля”переменная”изимяобъект,переменнаяимясказать Можетк Включать Подчеркнутьхарактерилюбая буквачисло Характерхарактер,ипеременная Имена не чувствительны к регистру(A это одна и та же переменная)
  • использоватьпеременнаяимя, за которым следуетизперсонаж вызывает указанную переменную (аналогично лучшим языкам мира - сами понимаете) или принимает{переменнаяимя}назначатьценитьнастраиватьиспользовать,возвращаться Можетк Волякакой-то особенныйизхарактерделатьдляпеременнаянодасуществоватьфактическое развитиесередина Не рекомендуется;
  • Оператор присваивания может не только присваивать значение переменной, но также присваивать одно и то же значение нескольким переменным одновременно. Для обмена значения переменной PS требуется всего два шага.
  • Переменные могут автоматически сохранять любую информацию о типе, распознаваемую Powershell.
  • Использование ` или '' для включения переменных не может быть проанализировано и вызвано и будет выведено только как есть;
  • Переменные автоматически очищаются при выходе или закрытии PS.

Тип переменной PS:

  • Пользовательские переменные
  • Переменные автоматизации
  • Переменные среды: env:
  • переменная привода: переменная:

1. Пользовательские переменные

Создание переменных

Язык кода:javascript
копировать
# 0.создаватьдругойтипизпеременная(int/String/Boolen/float)
PS > $var=1;$var;$var="String";$var;$var='TRUE';$var;$var=3.14159267;$var
# 1
# String
# TRUE
# 3.14159267

# 1. Текущее местоположение Воли сохраняется в переменной $loc середина
PS > $loc = Get-Location
PS > $loc  #Тип $loc Воля показывает текущее местоположение:

# 2.предотвращатьпеременнаяимяидругойнить Запутатьиспользовать${}
PS > $var=" variable"
PS > $var
 variable
PS > ${var}
 variable


# 3.какой-то особенныйизхарактерсуществоватьPSсередина Есть специальныйизиспользоватьспособ,один般Не рекомендуетсяиспользовать Этихарактерделатьдляпеременнаяимя。
PS C:\> ${"I"like $}="mossfly"  #Пожалуйста, заключите весь суффикс переменного имени в фигурные скобки
PS C:\> ${"I"like $}
mossfly


# 4.PS присваивает значения нескольким переменным одновременно
PS C:\> $a=$b=$c=123


# 5. Обменять две переменныеизценить.
PS C:\> $value1=10
PS C:\> $value2=20
PS C:\> $value1,$value2=$value2,$value1


# 6.Выбиратьиспользоватьcmdletзаявлениепеременная
New-Variable number -Value 100 -Force -Option readonly #переменнаязащита от записи
New-Variable NUMBER -Value 100 -Force -Option constant -Description "This is my name"  #Объявляем константы и описываем их


# 7.переменная Не анализируется
PS C:\> Write-Host the '$HOME' is $home
PS C:\> Write-Host the `$HOME is $home
the $HOME is C:\Users\WeiyiGeek

Управляемые переменные

Язык кода:javascript
копировать
# 1.показыватьиспользоватьводить машинупеременнаяисредапеременная:
Get-ChildItem variable: #PSВоляпеременнаяиз Сопутствующая информацияиз记录жить放существоватьназванныйvariable:изводить машинусередина
Get-ChildItem variable:value* #Находитьпеременная
Get-ChildItem env:   #использоватьлюбой Windows процесс Можетиспользоватьиз Взаимнотакой жесредапеременная,Чтосерединавключать cmd.exe

# 2. использовать env: Среда доступа к префиксу диска переменная, из-за env: Среда доступа к префиксу диска переменная
#Например, cmd.exe серединаиз %SystemRoot% переменная Включать Операционная системаизкорень Оглавлениеимясказать
PS > $env:SystemRoot
C:\Windows
PS > $env:JAVA_HOME
Programs\java\jdk

# 3.Пример созданияодинновыйизсредапеременная
$env:LIB_PATH='/usr/local/lib'
PS > $env:WEIYIGEEK=$env:PATH
PS > $env:WEIYIGEEK
# C:\Python27\;C:\Python27\Scripts;

# 4.Примерилиили изменитьновыйпеременнаяPSсерединада + как маркировочный знак
PS > $env:WEIYIGEEK=$env:PATH + ";c:\"
PS > $env:WEIYIGEEK
# C:\Python27\;C:\Python27\Scripts;c:\\


# 5. Убедитесь, что однапеременная существует, все равно как проверка файловой системы.
PS C:\> -Path variable:value1
True
PS C:\> -Path variable:valueUnkonw
False

# 6.удалитьпеременная
PS C:\> -Path variable:value1
True
PS C:\> Remove-Item variable:value1 -Force  # принудительное удаление  del -> Remove-Item
PS C:\> -Path variable:value1
False

Переменные WeiyiGeek.Environment отображаются

2. Переменные автоматизации

описывать:После открытияPowershellбудет загружен автоматическиизпеременная,иинекоторыйПеременные автоматизации Толькочитать Нетспособный写,общее хранилищеизсодержаниевключать:

  • Информация о пользователе: например, корневой каталог пользователя $home.
  • Информация о конфигурации: например, размер, цвет, фон и т. д. консоли PowerShell.
  • Информация о времени выполнения: например, кто вызывает функцию, каталог, в котором запускается скрипт, и т. д.
Язык кода:javascript
копировать
PS> $HOME
C:\Users\

PS> $currentProcessID=$pid;$currentProcessID
5356

PS> Get-Process -Id $pid
# Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
# -------  ------    -----      ----- -----   ------     -- -----------
#     390      10    30604      33100   172     1.11   5356 powershell

PS> $PROFILE
C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Подробное описание - список автоматических переменных:

Язык кода:javascript
копировать
$$ : Включить сессию, полученную из последней строки серединаиз последнего токена.

$? : Включатьнаконецодиндействоватьизосуществлятьсостояние。еслинаконецодиндействоватьуспех,но Включать ИСТИНА, в случае неудачи он содержит FALSE。

$^ : Включатьсессия полученаприезжатьизнаконецодин ХОРОШОсерединаиз Нет.одинжетон。

$_ : Включатьтрубопроводобъектсерединаизтекущийобъект. существоватьвернотрубопроводсерединаизкаждыйобъектиливыбранообъектосуществлятьдействоватьиз Заказсередина,Можеткиспользоватьэтотпеременная。

$Args : Включать Ю Вэйзаявлениепараметри/илипередача Даватьфункция、Скрипт или блок скрипта изпараметрценить, состоящий из массива.
существоватьсоздаватьфункциячас Можеткзаявлениепараметр,методдаиспользовать param Ключевые словаилисуществоватьфункцияимясказатьназад添加ккруглыйскобкизаключение、запятая
отдельныйизпараметрсписок。

$ConsoleFileName : Включатьсуществоватьсессиясерединанедавноиспользоватьизконсольный файл (.psc1) из пути. существоватьпроходить PSConsoleFile параметрстарт
Окна PowerShell илииспользовать Export-Console cmdlet Экспорт имени оснастки «Воля» в консольный файл
час,Волянаполнениеэтотпеременная。
существоватьиспользовать Безпараметриз Export-Console cmdlet час,этоавтоматический Даженовыйсуществоватьсессиясерединанедавноиспользоватьизконсольный файл。
Можеткиспользоватьэтотавтоматическийпеременная Конечнохотеть Даженовыйиздокумент。

$Error : Включатьошибкаобъектизмножество,Этиобъектвыражатьнедавноизодин些ошибка。недавноизошибкада Долженмножествосерединаиз Нет.одиношибкаобъект
($Error[0])。

$Event :Включатьодин PSEventArgs объект,Долженобъектвыражатьодинтолькосуществоватьодеяловпричинаизсобытие。
этотпеременная Толькосуществоватьсобытиезарегистрироваться Заказ(Например Register-ObjectEvent)из Action Заполнение внутри блока.
этотпеременнаяизценитьда Get-Event cmdlet Возврат из одного объекта.
потому чтоэтот,Можно найти в Action Скрипткусокиспользуется в $Event переменнаяизсвойство(Например
$Event.TimeGenerated)。

$EventSubscriber : Включатьодин PSEventSubscriber объект,Долженобъектвыражатьтолькосуществоватьодеяловпричинаизсобытиеизсобытиеподписчик。
этотпеременная Толькосуществоватьсобытиезарегистрироваться Заказиз Action Заполнение внутри блока.этотпеременнаяизценить
да Get-EventSubscriber cmdlet Возврат из одного объекта.

$ExecutionContext : Включатьодин EngineIntrinsics объект,Долженобъектвыражать Windows PowerShell Хост изосуществлять контекст.
Можеткиспользоватьэтотпеременная Приходить Находить Можетиспользовать В cmdlet изосуществлятьобъект。

$False : Включать FALSE。Можеткиспользоватьэтотпеременнаясуществовать Закази Скриптсерединавыражать FALSE,и Нетдаиспользоватьнить”false”。если
Долженнить Преобразовать в ненулевое значениенитьилиненулевое целое число,но Может Воля Долженнить解释для TRUE。

$ForEach : Включать ForEach-Object циклизсчетчик。Можеткверно $ForEach переменнаяизценитьиспользоватьсчетчикизсвойствоиметод.
этотпеременнаятолькосуществоватьбегать For Он существует, когда цикл завершен, и будет удален, когда цикл завершен.

$Home : Включатьиспользоватьсемьяиз Домашний каталогизполный путь。этотпеременная等效В %homedrive%%homepath% средапеременная。

$Host : Включатьодинобъект,Долженобъектвыражать Windows PowerShell изтекущий Хозяинприложениепрограмма。Можеткиспользоватьэтотпеременнаясуществовать命
令серединавыражатьтекущий Хозяин,или ВОЗпоказыватьили Изменять Хозяинизсвойство,нравиться $Host.version、$Host.CurrentCulture
или $host.ui.rawui.setbackgroundcolor(“Red”)。

$Input : одинсчетчик,это Включатьпередача Даватьфункцияизвходить。$Input переменнаяс учетом регистра,Толькоспособныйиспользовать Вфункцияи Скрипткусок。(Скрипткусок По сутидаеще нетимяизфункция。)существоватьфункцияиз Process кусоксередина,$Input переменная Включатьтекущийродытрубопроводсерединаизобъект. существовать Process После завершения блока $Input ценить за НУЛЕВОЙ. Если функция не Process заблокировать, тогда $Inputизценить Можетиспользовать В End кусок,это Включатьфункцияизвсевходить。

$LastExitCode : Включатьбегатьизнаконецодинна основе Windows код выхода из программы.

$Matches : $Matches переменнаяи -match и -not match оператор Вместеиспользовать。
Скалярный вход Воля отправлен в -match или -notmatch операторчас,если Обнаружениеприезжатьсоответствовать,новстречавозвращатьсяодинлогическое значениеценить,ииспользовать Зависит отвсесоответствоватьнитьценитькомпозицияиз Хэш-таблицанаполнение $Matches автоматическийпеременная。

$MyInvocation : Включатьодинобъект,Долженобъектиметьсвязанныйтекущий Заказ(нравиться Скрипт、функцияили Скрипткусок)изинформация。Можеткиспользовать Долженобъектсерединаизинформация(нравиться Скриптизпутьидокументимя ($myinvocation.mycommand.path) илифункцияизимясказать
($myinvocation.mycommand.name))идентифицироватьтекущий Заказ。верно ВНаходитьтолькосуществоватьбегатьиз Скриптизимясказать,этот Оченьиспользовать。

$NestedPromptLevel : Включатьтекущийуровень подсказки。ценить 0 Указывает исходный уровень подсказки. Значение увеличивается при входе на уровень вложенности и уменьшается при выходе из уровня вложенности.
Например,существоватьиспользовать $Host.EnterNestedPrompt метод, Windows PowerShell Появится вложенная командная строка. существовать Windows PowerShell отладчиксерединаприезжатьперерывточкачас,Windows PowerShell также Появится вложенная командная строка. существовать Введите вложенные подсказкичас,Windows PowerShell приостанавливает текущую команду,держатьосуществлятьконтекст,и Приращение
$NestedPromptLevel переменнаяизценить。хотетьсоздавать Даже多嵌套Заказбыстрый(большинство 128 сорт)иливозвращатьсяприезжать Оригинал始Заказбыстрый,Пожалуйста, завершите команду,или Введите «выход».
$NestedPromptLevel переменнаяиметь助В跟踪уровень подсказки。Можетксоздавать Включатьэтотценитьиз Подготовитьиспользовать WindowsPowerShell Заказбыстрый,сделатьэтотценитьвсегда Может Видеть。

$NULL: Включать NULL илинулевойценить。Можно найти в Закази Скриптиспользуется вэтотпеременнаявыражать NULL,и Нетдаиспользоватьнить”NULL”。
если Долженнить Преобразовать в ненулевое значениенитьилиненулевое целое число,но Может Воля Долженнить解释для TRUE。

$PID : Включатьмедведьтекущий Windows PowerShell сеанс из процесса и идентификатор процесса (PID)。

$Profile : Включатьтекущийиспользоватьсемьяитекущий Хозяинприложениепрограммаиз Windows PowerShell Конфигурациядокументизполный путь。Можно найти в Заказ
используется вэтотпеременнаявыражать Конфигурациядокумент。Например,Можно найти в Заказиспользуется вэтотпеременная Конечноданет已создавать某индивидуальный Конфигурациядокумент:
Также доступно в команде используется вэтотпеременнаясоздавать Конфигурациядокумент: new-item -type file -path $pshome -force этотснаружи,возвращаться Можно найти в Заказиспользуется вэтотпеременнаясуществовать Блокнотсередина Открыть Конфигурациядокумент:
notepad $profile

$PSBoundParameters
Включать Активностьпараметри Чтотекущийценитьизсловарь。толькосуществоватьзаявлениепараметризделатьиспользоватьдомен(нравиться Скриптилифункция)середина,
этотпеременнаяиметь толькоценить。Можеткиспользоватьэтотпеременнаяпоказыватьили Изменятьпараметризтекущийценить,также Можетк Воляпараметрценитьпередача Давать
другой Скриптилифункция。

Основной пример:function  {
  param($a, $b)

  # Display the parameters in dictionary format.
  $psboundparameters

  # Call the 1 function with $a and $b.
  1 @psboundparameters
}

$PsCmdlet : Включатьодинобъект,Долженобъектвыражатьтолькосуществоватьбегатьиз cmdlet иливысокийсортфункция。
Можно найти в cmdlet илифункциякодиспользуется в Долженобъектизсвойствоиметод Приходить响отвечатьиспользоватьизсостояние。Например,ParameterSetName свойство Включатьтолькосуществоватьиспользоватьизпараметрнаборизимясказать,и ShouldProcess метод Воля WhatIfи Confirm параметр динамически добавляется в cmdlet。
связанный $PSCmdlet автоматическийпеременнаяизподробныйинформация,Видеть about_Functions_Advanced。

$PsCulture : Включать Операционная системасерединатекущий Местоиспользоватьизрегиональныйизимясказать。региональный Конечночисло Характер、валютаи Дата и т. д.изпоказывать Формат。этотдасистемаизSystem.Globalization.CultureInfo.CurrentCulture.Name свойствоизценить。хотеть获取системаиз System.Globalization.CultureInfo объект,пожалуйстаиспользовать Get-Culture cmdlet。

$PSDebugContext : существоватьнастраивать试期между,этотпеременная Включатьсвязанныйнастраивать试средаизинформация
существоватьдругойчасмежду,этотпеременная Включать NULL ценить。потому чтоэтот,Можеткиспользоватьэтотпеременнаяинструктироватьотладчикда Иметь контроль над。наполнение Изназад,этотпеременная Включатьодиниметь Breakpoints иInvocationInfo свойствоиз PsDebugContext объект。InvocationInfo свойствоиметь Несколько十分иметьиспользоватьизсвойство,включать Location свойство. Расположение свойствоинструктироватьтолькосуществоватьнастраивать试из Скриптизпуть。

$PsHome
Включать Windows PowerShell из Каталог установкиизполный путь(Обычно%windir%System32WindowsPowerShellv1.0)。Можно найти в Windows PowerShell документизпутьиспользуется вэтотпеременная。Например,подиз Заказсуществовать Концептуальные разделы справкисерединапоиск”variable”слово:
select-string -pattern variable -path $pshome*.txt

$PSScriptRoot :Включатьначать ссерединаосуществлять Скриптмодульиз Оглавление。проходитьэтотпеременная,Скрипт Можеткиспользоватьмодульпуть Приходить访问другойресурс。

$PsUICulture
Включать Операционная системасерединатекущий Местоиспользоватьизиспользоватьсемья界面 (UI) региональныйизимясказать。UI Культура определяет, какие текстовые строки используются для пользователей.
элементы интерфейса(нравитьсяменюиинформация)。этотдасистемаиз
System.Globalization.CultureInfo.CurrentUICulture.Name свойствоизценить。хотеть获取система
из System.Globalization.CultureInfo объект,пожалуйстаиспользовать Get-UICulture cmdlet。

$PsVersionTable
Включатьодин Толькочитать Хэш-таблица,Должен Хэш-таблицапоказыватьсвязанныйсуществоватьтекущийсессиясерединабегатьиз Windows PowerShell Версия подробный
подробная информация.
В таблицу входят следующие позиции:
* CLRVersion: общеязыковая среда выполнения (CLR) из Версия
* BuildVersion: текущий Версияизвнутренний Версия Число
* PSVersion: Windows PowerShell Версия Число
* WSManStackVersion: WS-Management кучаиз Версия Число
* PSCompatibleVersions: итекущий Версиясовместимыйиз Windows PowerShell Версия
* SerializationVersion :сериализацияметодиз Версия
* PSRemotingProtocolVersion:Windows PowerShell протокол удаленного управленияиз Версия

$Pwd : Включатьодинпутьобъект,Долженобъектвыражатьтекущий Оглавлениеизполный путь。

$Sender : Включатьгенерироватьэтотсобытиеизобъект。этотпеременная Толькосуществоватьсобытиезарегистрироваться Заказиз Action Заполнение внутри блока.
этотпеременнаяизценитьтакже Можетсуществовать Get-Event возвращатьсяиз PSEventArgs
(System.Management.Automation.PSEventArgs) объектиз Sender свойствосерединапопытаться найтиприезжать。

$ShellID : Включатьтекущий shell из идентификатора.

$SourceArgs : Включатьвыражатьтолькосуществоватьодеяловпричинаизсобытиеизсобытиепараметризобъект。этотпеременная Толькосуществоватьсобытиезарегистрироваться Заказиз Action
Заполнение внутри блока.этотпеременнаяизценитьтакже Можетсуществовать Get-Event возвращатьсяиз PSEventArgs
(System.Management.Automation.PSEventArgs) объектиз SourceArgs свойствосерединапопытаться найтиприезжать。

$SourceEventArgs : Включатьодинобъект,Долженобъектвыражать从толькосуществоватьодеяловпричинаизсобытиеиз EventArgs серединаполученныйиз
Нет.одинсобытиепараметр。этотпеременная Толькосуществоватьсобытиезарегистрироваться Заказиз Action Заполнение внутри блока.
этотпеременнаяизценитьтакже Можетсуществовать Get-Event возвращатьсяиз PSEventArgs
(System.Management.Automation.PSEventArgs) объектиз SourceArgs свойствосерединапопытаться найтиприезжать。

$This : существоватьопределение Скриптсвойствоили Скриптметодиз Скрипткусоксередина,$This переменнаявестииспользоватьхотеть扩展изобъект。
$True : Включать TRUE。Можно найти в Закази Скриптиспользуется вэтотпеременнаявыражать TRUE。

3. Встроенные переменные

описывать: Встроенные переменные включают переменные среды по умолчанию в PS, переменные отображения элементов управления командной строки и переменные параметров функций.

  • 1) Переменные среды: существуют в операционной системе, но если переменная среды обновляется, другие программы также могут обновлять и вызывать ее.

Список встроенных переменных

Язык кода:javascript
копировать
# 1.средапеременная
$env

# 2.информацияконтрольпеременная
$DebugPreference        #Показать вывод отладки: Необязательное значение [Continue | SilentlyContinue]
$ErrorActionPreference  #Display Вывод ошибки: Необязательное значение [Continue | SilentlyContinue]

# 3. Функции и параметрыпеременные.
$глобальный
$местный
$функция
$вход   # трубопроводданныесерединаизменятьпеременная
$arg     # Универсальныйпараметрпеременная


# 4.Чтоэтопеременная
$Host  # Например, $host.UI.Rawui

Базовый экземпляр:

Язык кода:javascript
копировать
#1.читать специальноеизсредапеременная
PS> ls $env:
PS> $env:windir
C:\Windows
PS> $env:ProgramFiles
C:\Program Files


#2.дляи Чтоэтопеременная Будьте последовательны,ты Можетк把этовставлятьприезжатьтекстсередина。
PS> "My computer name $env:COMPUTERNAME"
My computer name MYHome--01


#3.создаватьновыйизсредапеременная
PS> $env:Var1="This is my environment variable"
PS> $env:Var2="Hollow, environment variable"
PS> $env:Path+=";C:\\python\\"


#4. Вступает в силу переменное обновление среды.
# Операция метода .NET [environment]::SetEnvironmentvariable может вступить в силу немедленно.
PS> [environment]::SetEnvironmentvariable("Path", ";c:\WeiyiGeek", "User")
PS> [environment]::GetEnvironmentvariable("Path", "User")
;c:\WeiyiGeek

Примечание:

  • Хотя это и не обязательно, в именах переменных среды обычно используются заглавные буквы.

4. Переменные привода

описывать:PSсерединавсе Нетдамы самиизопределениеизпеременная Все属Вводить машинупеременная(Сравниватьнравитьсясредапеременная),этоизпрефикс Толькодапредоставленный намодин Можетк访问информацияизвиртуальныйводить машину.。

Основной пример:

Язык кода:javascript
копировать
#0.проверить тебяPSподдерживатьизводить машину
PS > Get-PSDrive
# Name           Used (GB)     Free (GB) Provider      Root     CurrentLocation
# ----           ---------     --------- --------      ----     --------------- 
# C                  58.24         91.76 FileSystem    C:\      Users\WeiyiGeek
# Cert                                   Certificate   \
# D                  11.76        249.24 FileSystem    D:\
# E                  19.07        240.93 FileSystem    E:\
# Env                                    Environment
# F                  88.83        171.46 FileSystem    F:\
# Function                               Function
# G                                      FileSystem    G:\
# HKCU                                   Registry      HKEY_CURRENT_USER
# HKLM                                   Registry      HKEY_LOCAL_MACHINE
# I                                      FileSystem    I:\
# Variable                               Variable
# WSMan                                  WSMan


#1.$После цветкаскобкисерединаизпутьдолжендаспецифическийизпуть,и Нетспособный带возвращатьсяценить。
PS> Invoke-Expression "`${$env:HOMEDRIVE/Powershell/ping.bat}"  #Помещение обратной кавычки "\`" перед $ приведет к преобразованию $ в обычные символы, а интерпретатор продолжит анализ второго $
#параметр=${C:/Powershell/ping.bat}

5. Переменная область применения

описывать: PS Все переменные имеют область видимости, определяющую доступность переменной. С помощью области видимости можно ограничить видимость переменных, особенно в функциях и скриптах. PSподдерживать四индивидуальныйделатьиспользоватьдомен:общая ситуация、текущий、частный и сценарий

Установите область действия одной переменной:

  • $global Глобальные переменные: существоватьвсеизделатьиспользоватьдоменсерединаэффективный,еслитысуществовать Скриптили ВОЗфункциясерединанаборобщая ситуацияпеременная,Эта переменная по-прежнему действительна, даже если сценарий и функции запускаются и завершаются.
  • $script Переменные сценария: Она будет действительна только внутри сценария, включая функции в сценарии. Переменная будет переработана после завершения сценария.
  • $private Частные переменные: Он будет действителен только в текущей области и не может распространяться на другие области.
  • $local Переменные по умолчанию: Модификатор можно опустить, он действителен в текущей области, а другие области имеют к нему разрешения только на чтение.

Tips : выгодаиспользовать"."Приходить Изменятьпеременнаяиз Может Видеть性,укреплятьпеременная Может Видеть性пределизпреимуществоПрозрачная среда инициализации,ноеслиопределениеиздаодинсамостоятельное чтениеизпостоянныйизчасждатьэтотиндивидуальныйда Нетспособныйдействоватьиудалитьиз;

Советы: Локальные переменные будут наследовать значения от глобальных переменных, но изменения локальных переменных не повлияют на глобальные переменные, если глобальные не указаны явно;

Основной пример:

1) Влияние переменных при обмене

Язык кода:javascript
копировать
# 1.существовать Скриптвизпеременнаяне влияетинтерактивныйсредасерединаизпеременная
PS E:\WeiyiGeek> $DemoVar="This is a Demo"
PS E:\WeiyiGeek> .\Demo1.ps1
  # D:\Programs\java\jdk
PS E:\WeiyiGeek> $DemoVar
  # This is a Demo

# 2.точка"."Приходитьбегать Скрипт ДолженсимволдоменLinuxсерединаизsourceЗаказиметьдругойпеснятакой жеработа Из Странный;
PS E:\WeiyiGeek> . .\Demo1.ps1
  # D:\Programs\java\jdk
PS E:\WeiyiGeek> $DemoVar   # Скриптсерединаизпеременнаяпокрытый$DemoVarпеременная(ключточка)
  # D:\Programs\java\jdk

2) Экземпляр области действия с одной переменной

Язык кода:javascript
копировать
# 1.существоватьтекущийконтроль台Толькожитьсуществоватьодинделатьиспользоватьдомен,Доступ через модификатор,Чтореальный доступиздатакой жеодинпеременная:
PS C:\Users\WeiyiGeek> $var="WeiyiGeek"
PS C:\Users\WeiyiGeek> $private:var
  # WeiyiGeek
PS C:\Users\WeiyiGeek> $script:var
  # WeiyiGeek
PS C:\Users\WeiyiGeek> $global:var
  # WeiyiGeek
PS C:\Users\WeiyiGeek> $local:var="WeiyiGeek"
  # WeiyiGeek


# 2.обычнопеременнаяиGlobalмежду модификаторамиизразница(существоватьфункциясерединавыгодаиспользоватьGlobalмодификатор Приходить Изменятьобычнопеременная Изсередина)
$var = "WeiyiGeek"
function demo1() { echo "Function => $($Var)";$Var = "Function Change";echo "-----$($Var)-----"}
$var; demo1; $var
  # Function => WeiyiGeek
  # WeiyiGeek
  # -----Function Change-----
  # WeiyiGeek
function demo2() { $Global:Var = "Function Change $var переменная";$var}
$var; demo2; $var
  # WeiyiGeek
  # Function Change WeiyiGeek переменная
  # Function Change WeiyiGeek переменная


# 3.Privateмодификаторсуществоватьконтроль台серединаизпеременнаязащищать,Нетпозволятьэтосуществоватьфункцияи Скриптсерединапосетил,ноон МожеткодеялоGlobalМодификация модификатора;
function fun() {
  echo "DemoVar=$($DemoVar)";
  $global:DemoVar="This is Function Inner";
  $DemoVar;
}
$Private:DemoVar="This is private variable"
fun;
$DemoVar
  # осуществлятьрезультат (этотвдаключточка私иметьпеременнаясуществоватьфункциясередина Не могу получить)
  # DemoVar=   
  # This is Function Inner
  # This is Function Inner
$Global:DemoVar="This is global variable"
fun;
$DemoVar
$Private:DemoVar
  # осуществлятьрезультат (Глобальная переменная может быть заменена внутренней глобальной переменной)
  # DemoVar=This is global variable
  # This is Function Inner
  # This is Function Inner
  # This is Function Inner


# 4. Влияние проверки глобального модификатора середина на частный модификатор из
function fun() {"DemoVar=$DemoVar";$Global:DemoVar="This is Global";$DemoVar;}
$Private:DemoVar="this is private"
$DemoVar
fun  #Будет влияние на последующую переменную
$DemoVar
  # осуществлятьрезультат
  # this is private
  # DemoVar=this is private
  # This is Global
  # This is Global


# 5.Localмодификатор Можеткпроходить$globalмодификация модификатораизпеременная
function fun() {"DemoVar=$DemoVar";$Global:DemoVar="This is Global";$DemoVar;}
$Local:DemoVar="this is Local"
$DemoVar
fun
$Local:DemoVar
  # осуществлятьрезультат
  # this is Local
  # DemoVar=this is Local
  # This is Global
  # This is Global

6. Преобразование типов переменных

описывать: Powershell По умолчанию поддерживаются следующие типы .NET:

  • [Byte] [sbyte]
  • [Char]
  • [Bool]
  • [Int] [Int16] [Int32] [Int64]
  • [uint16] [uint32] [uint64]
  • [float]
  • [double]
  • [array]
  • [string]
  • [long]
  • [Decimal]
  • [timespan]
  • [DateTime]
  • [type]
  • [switch]
  • [guid]
  • [nullable]
  • [hashtable]
  • [psobject]
  • [regex]
  • [scriptblock]
  • [single]
  • [Xml]

PS слабый тип и сильный тип описывать: PSраспределять данныеодиноптимальныйизданныетиптакжесказатьделать“слабыйтип”,еслиодин Целое число превышено32битовое целое числоизверхний предел([int32]::MaxValue),это就встреча分配один64битовое целое числоизданныетип;такой же Образецеслидадесятичный,нить,датачасмеждутакжевстреча分配成для Долженверноотвечатьизданныетип,использоватьчасждать非常изудобный;

  • 1. Недостатки слабых типов:
  • Существует переменная для хранения количества копируемых файлов, но при назначении строки Powershell не будет делать слишком много суждений. Он обновит тип переменной и сохранит новые данные.
  • 2. Преимущества строгой типизации:
  • Строго запрещайте программные исключения и не преобразуйте типы данных на основе данных.
  • Вручнуюопределениетипизодин重хотеть Оригиналпотому чтодакаждыйособенныйизданныетип Всеиметьс己изособенный Заказиособенныйметод,
  • Другая причина использования его в PS заключается в том, что каждый тип данных имеет свою собственную функцию;

Просмотр типа переменной

Язык кода:javascript
копировать
PS C:\Users\WeiyiGeek> $var=1024; $var -is [int]
True
PS C:\Users\WeiyiGeek> $var=1024; $var -is [int32]
True
PS C:\Users\WeiyiGeek> $string="weiyigeek"; $string -is [string]
True

# (1) Введите получить
$string.gettype()
  # IsPublic IsSerial Name                                     BaseType
  # -------- -------- ----                                     --------
  # True     True     String                                   System.Object

# (2) тип объекта全сказать
$string.gettype().fullname
  # System.String

проходить$variableизGetType().NameПроверятьипроверятьPSназначен напеременнаяизданныетип。

Язык кода:javascript
копировать
PS C:\Users\WeiyiGeek> $var=1024;$var is Int
Int32
PS C:\Users\WeiyiGeek> $var=1024;$var.GetType().name
Int32
PS C:\Users\WeiyiGeek> (999999999999999).GetType().name
Int64
PS C:\Users\WeiyiGeek> (99999999999999999999).GetType().name
Decimal
PS C:\Users\WeiyiGeek> (3.14).GetType().name
Double
PS C:\Users\WeiyiGeek> (3.14d).GetType().name
Decimal
PS C:\Users\WeiyiGeek> ("String").GetType().name
String
PS C:\Users\WeiyiGeek> (date).GetType().name
DateTime
PS C:\Users\WeiyiGeek> (get-date).GetType().name
DateTime

Определите переменные указанного типа:

Язык кода:javascript
копировать
#1.НапримеропределениеодинByteтипизпеременная,потому чтодляByteизопределениедомендля[0,255],однажды попробовалиспользоватьодин Нетсуществоватьопределениедоменсерединаизценитьдарить Долженпеременная就встречапоказыватьодин кусочекошибкаинформация。
PS C:\Users\WeiyiGeek> [byte]$b=254
PS C:\Users\WeiyiGeek> $b.gettype()
IsPublic IsSerial Name     BaseType
-------- -------- ----     --------
True     True     Byte    System.ValueType


#2.DateTimeтипобъектизсвойствоизиспользовать
PS C:\Users\WeiyiGeek> [DateTime]$date="2019-11-27 09:19:20"
PS C:\Users\WeiyiGeek> $date
27 ноября 2019 г. 9:19:20
PS C:\Users\WeiyiGeek> $date.DayOfWeek
Wednesday
PS C:\Users\WeiyiGeek> $date.DayOfyear
331
PS C:\Users\WeiyiGeek> $date.AddDays(-10)
17 ноября 2019 г. 9:19:20


#3.XMLтипобъектизиспользовать Запрос.exe и узел .dll
PS > [XML]$xml=(Get-Content .\Demo2.xml)
PS > $xml
# logo
# --------
# logo
PS > $xml.FirstChild
# extensions unextensions
# ---------- ------------
# extensions unextensions
PS > $xml.logo.extensions.e
# .exe
# .dll

Сильное и слабое преобразование типов переменных описывать:каждыйпеременнаяиз Всеиметьс己изтип,этотиндивидуальныйспецифическийизтипжить放существоватьPsVariableобъектизAttributes[System.Management.Automation.PSVariableAttributeCollection]свойство,Если эти атрибуты пусты,Можетк Даватьэтотиндивидуальныйпеременнаяжить放любойтипизданные,PSВыберу правильныйизтип。

Что следует отметить: После определения атрибута Attribute другие типы данных не могут быть сохранены по желанию;

  • Например ДаватьVar хранит целое число и имеет слабый тип, поэтому свойство Attributes пусто. В настоящее время ему также можно присвоить строку. Но если датьvarувеличиватьукреплятьтип,Сохраните одно целое число,再Даватьэтонаделятьценитьодин Чтоэтотип,Интерпретатор автоматически попытается преобразовать,Если его невозможно преобразовать, будет выдано исключение.

Решение:использовать (Get-Variable var).Attributes.Clear() Прозрачный Attributesэтотчасмощныйтипсноваизменять变成дляслабыйтип Понятно;

Язык кода:javascript
копировать
#1.Декларация по умолчаниюизпеременнаядаслабыйтип
PS C:\Users\WeiyiGeek> $var=1024
PS C:\Users\WeiyiGeek> (Get-variable var).Attributes
PS C:\Users\WeiyiGeek> $var.gettype()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType

PS C:\Users\WeiyiGeek> $var=3.14
PS C:\Users\WeiyiGeek> $var.gettype()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Double                                   System.ValueType


#2. Сильный тип к слабому типу.
PS C:\Users\WeiyiGeek> [Int]$var=1024

PS C:\Users\WeiyiGeek> (Get-variable var).Attributes
TransformNullOptionalParameters TypeId
------------------------------- ------
True System.Management.Automation.ArgumentTypeConverterAttribute

PS C:\Users\WeiyiGeek> $var=3.14;$var
3

PS C:\Users\WeiyiGeek> $var="2019 IS END"
#никто ВоляValue»2019 IS END”изменять换длятип“System.Int32”。ошибка:“входитьнитьиз Неправильный формат。”

PS C:\Users\WeiyiGeek> (Get-variable var).Attributes.clear() # Ключевой момент — строгая очистка типов
PS C:\Users\WeiyiGeek> $var="2019 IS END";$var
2019 IS END

7. Проверка переменной

описывать:переменнаяPSVariableобъектизАтрибутыспособный够хранилищеодин些附件состояние, Обычно используемые проверки содержимого переменных:

  • ValidateLengthAttribute: Ограничить длину переменных.
  • ValidateNotNullAttribute: предельные переменные не могут быть пустыми.
  • ValidateNotNullOrEmptyAttribute: ограничить переменные, чтобы они не были пустыми, не пустыми строками и не пустыми наборами.
  • Проверка атрибута шаблона: ограничение переменных в соответствии с указанным регулярным выражением.
  • ValidateRangeAttribute: Ограничить диапазон значений переменных.
  • ValidateSetAttribute: Ограничить набор значений переменных.

Основной пример:

Язык кода:javascript
копировать
#1.ValidateLengthAttribute пределодиннитьпеременнаяиз长度дляроды2-5Измежду
PS> $var="пределпеременная"
PS> $condition = New-Object System.Management.Automation.ValidateLengthAttribute -ArgumentList 2,5  #ключевая точка
PS> (Get-Variable var).Attributes.Add($condition)
PS> $var="Легенда о героях Кондора"  #переменная Длина от 2 до 5


#2.ValidateNotNullAttribute пример
PS> $a=123
PS> $con=New-Object System.Management.Automation.ValidateNotNullAttribute
PS> (Get-Variable a).Attributes.Add($con)
PS> $a=$null  #никто Законпроверятьэтотпеременная,потому чтодляценить Нетдапеременная a изэффективныйценить。


#3.ValidateNotNullOrEmptyAttribute пример Обратите внимание, что @() — это пустой массив.
PS> $con=New-Object System.Management.Automation.ValidateNotNullOrEmptyAttribute
PS> (Get-Variable a).Attributes.clear()
PS> (Get-Variable a).Attributes.add($con)
PS> $a=$null


#4.ValidatePatternAttribute примервыгодаиспользоватьобычныйвыражениепроверятьEmailФормат
PS> $email="@mossfly.com"
PS> $con=New-Object System.Management.Automation.ValidatePatternAttribute "[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}"
PS> (Get-Variable email).Attributes.Add($con)
PS> $email="abc@abc.com"


#5.ValidateRangeAttribute примерпроверятьмесяц1-12
PS> $month=1
PS> (Get-Variable month).Attributes.Add($(New-Object System.Management.Automation.ValidateRangeAttribute -ArgumentList 1,12))
PS> $month=10

0x04 Оператор операции PS

описывать: мы можем поставить PS Он считается очень мощным калькулятором. Помимо поддержки операторов математических выражений, он также поддерживает единицы емкости компьютера и преобразование базы HEX;

Общие единицы мощности компьютера: Bit - B - KB - MB - GB - TB - PB

Справочный адрес: https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_arithmetic_operators?view=powershell-7.1

0. Список операторов и их приоритет

1) Базовые операторы. PowerShell содержит базовые операторы, которые мы обычно используем для арифметических операций и т. д.

Язык кода:javascript
копировать
- ()
- + 
- -
- *
- / 
- %

2) Операторы сравнения: PowerShell включает в себя множество операторов сравнения для сравнения значений или поиска значений, соответствующих определенному шаблону.

Язык кода:javascript
копировать
# ценить & нить
-eq	равный
-ne	Нетравный
-gt	больше, чем
-ge	больше, чемилиравный
-lt	меньше, чем
-le	меньше, чемилиравный
-Like	использовать * сопоставление с подстановочными знаками
-NotLike  Нетиспользовать * сопоставление с подстановочными знаками
-Match     соответствоватьобозначениеизобычныйвыражение
-NotMatch	 Нетсоответствоватьобозначениеизобычныйвыражение
-Contains	 Конечнонаборобъединитьсерединаданет Включатьобозначениеизценить
-NotContains	Конечнонаборобъединитьданет Нет Включатьидентификацияценить
-In	Конечнообозначениеизценитьданетсуществоватьнаборобъединитьсередина
-NotIn	Конечнообозначениеизценитьданет Нетсуществоватьнаборобъединитьсередина
-Replace	заменятьобозначениеизценить

Tips: Все операторы, перечисленные выше, не чувствительны к регистру и будут c Размещается перед оператором, указанным в последней таблице, чтобы сделать его чувствительным к регистру. Tips: -Like и -Match Операторы также могут сбивать с толку, Что两ВОЗизразницадабывшийс подстановочным знаком * и ? Используется совместно с иназад ВОЗиобычныйвыражение Используется совместно с。 Tips: PowerShell Версия 3.0 Впервые был введен оператор сравнения «in». Другими словами -in Исполнение и contains Операторы сравнения выполняют ту же проверку, но в противоположных направлениях. Tips: Существуют также методы, которые можно использовать для замены контента, например Replace(),Чтоработаделать Оригиналпричинапохожий Взаменятьоператор。нода По умолчанию,-Replace операторы не чувствительны к регистру, тогда как Replace() Методы чувствительны к регистру. Tips: нить Сравниватьчасда Имитировать случай игнорированияии С учетом регистра Сравниватьчас小写Характер母меньше, чемпрописная буква。если需хотеть С учетом регистра Сравнивать Можеткиспользоватьдействоватьсимвол-ceq, -clt, -cle, -cge,еслихотеть明确из Случай Нетчувствительный Сравниватьдействоватьсимволдасуществоватьпо умолчаниюдействоватьсимвол前加префиксi,Прямо сейчас-ieq,-ilt,-ile,-igt,-ige

3) Логические операторы. Как следует из названия, выносятся логические суждения (битовые операторы применимы только к целочисленным типам).

Язык кода:javascript
копировать
-and     :и
-or      :или
-xor     :другойили
-not | ! :обеспечить регресс
-band	Бит И	5 -band 3          # 1
-bnot	Побитовое «нет»	-bnot 5        # -6
-bor	в соответствии с Кусочек“или”	5 -bor 0x03    # 7
-bxor	в соответствии с Кусочек“другойили”	5 -bxor 3    # 6
-shl	Воля немного сдвинулась влево	3 -shl 2   # 12
-shr	Воля немного сместилась вправо  16 -shr 2  # 4

4) Логическое преобразование. Несколько операторов, включая побитовые, возвращают значения числового типа. PowerShell может автоматически преобразовывать их в значения логического типа. Правила преобразования следующие:

Язык кода:javascript
копировать
1) любой ненулевойценить Волявстречаодеялоизменять换для$true
2) ненулевая длинаизнить Волявстречаодеялоизменять换для$true
3) хотя бы одинизнаборобъединитьвстречавозвращаться$true
4) другойобъект Волявстречаодеялоизменять Заменить на$true,если они не $null

5) Приоритет операторов

Язык кода:javascript
копировать
- PowerShell Арифметические операторы обрабатываются в следующем порядке:
  # приоритет	оператор	иллюстрировать
  # 1	()	скобки
  # 2	-	Для отрицательных чисел или унарного оператора
  # 3	*, /, %	для умножения и деления
  # 4	+, -	Сложение и вычитание
  # 5	-band, -bnot	Для побитовых операций
  # 5	-bor, -bxor	Для побитовых операций
  # 5	-shr, -shl	Для побитовых операций

- PowerShell Выражения обрабатываются слева направо в соответствии с правилами приоритета.
  # выражение	результат
  # 3+6/3*4	11
  # 3+6/(3*4)	3.5
  # (3+6)/3*4	12

- PowerShell вычислитьвыражениеиззаказ Можетспособныйдругой Втыиспользоватьиздругойпрограммированиеи Скриптязык
существоватьэтот Примерсередина,верновыражение $a++ Произвести расчеты $b[$a] . существовать $a++ $a заявлениеиспользуется в Изназад,вычислить Изменятьизценить, $c[$a++] носуществоватьиспользуется в это раньше $b[$a] 。 серединаиз $a переменная $b[$a] равный 1 ,и Нетда 0 ; потому чтоэтот,заявление Воляценитьдарить $b[1] ,и Нетда $b[0] 。
$a = 0
$b = @(1,2)
$c = @(-1,-2)

$b[$a] = $c[$a++]  # $b[1] = $c[0] ==> -1

1.Примеры основных операторов

Язык кода:javascript
копировать
# 1. Четыре арифметических действия (коммутативная формула)
PS > 3.14*10*10
314
PS > 1+3-(2.4-5)*(7.899-4.444)
12.983
#Зависит от $+круглыйскобки+выражение составляютизпеременная Принадлежит ребенкувыражениепеременная,этот Образецизпеременнаявстреча先вычислитьвыражение,тогда поставьвыражениеизценитьвозвращаться。
PS C:\Users\WeiyiGeek> $((3+9)/3)
4

#2. Шестнадцатеричное преобразование.
PS > 0xA
10
PS > 0xB
11
PS > 0xff
255


#3. Автоматически определять единицы мощности компьютера.
PS > 1kb
1024
PS > 1GB
1073741824
PS > 1gb
1073741824
PS > 1gb/1kb
1048576
PS > 1gb/20mb*10kb
524288  
PS C:\ps> 80kb*800*30/1gb  # Фальшивыйнравитьсяодинвеб-сайткаждый页面大小для80kb,статистикапоказыватькаждый деньизPVдействоватьдля800,1индивидуальный月下Приходить占использоватьизпропускная способность
1.8310546875

2. Примеры операторов сравнения

Основной пример:

Язык кода:javascript
копировать
# 1. «PowerShell» заглавными буквами эквивалентен слову «powershell» строчными буквами.
'PowerShell' -eq 'powershell'    # True
'PowerShell' -ceq 'powershell'   # False Разница в регистре
 
# 2.Нетравный Сравниватьоператоробеспечить регресссостояние。
'PowerShell' -ne 'powershell'

# 3.больше, чем、больше, чемилиравный、меньше, чемименьше, чемилиравныйвсе Можетиспользовать Внитьиличислоценить。
5 -gt 5  # False
5 -ge 5  # True
# Сравните мощность компьютера
PS > 1gb -lt 1gb+1
True
PS > 1gb -lt 1gb-1
False

# 4.осуществлять"like"соответствовать -Like с подстановочным знаком * и ? Используется совместно с
'PowerShell' -like '*shell'       # True
'PowerShell' -notLike 'weiyigeek' # True


# 5.использоватьобычныйвыражениеосуществлятьсоответствовать -Match 
'PowerShell' -match '^*.shell$'
'master@weiyigeek.top' -match '@' # по-видимому Толькохотетьиметьодиннитьсоответствовать Прямо сейчасвозвращатьсяTrue
# True
'master@weiyigeek.top' -match 'ji'
# False
'master@weiyigeek.top' -notMatch 'weiye'
# True

# 6.список Включатьили ВОЗНет Включатьобозначение`$Numbers`переменная,-NotContains Переверните логику, чтобы увидеть $Numbers переменнаяданет Нет Включатьценить。
(3,4,5) -contains 2 
$Numbers = 1..10          # использоватьобъемоператор Волячисло Характер 1 приезжать 10 хранилищесуществоватьпеременнаясередина
$Numbers -contains 15     # False
$Numbers -notcontains 15  # True


# 7.этоиспользовать ВКонечно某индивидуальныйценитьданет“роды”множествосередина。 
# $Numbers переменнаядамножество,потому чтодляэто Включать Несколькоценить。
# и -contains оператор Такой же,not обеспечить регресс -in операториз логики.
15 -in $Numbers # False
10 -in $Numbers # True
10 -notin $Numbers  # False


# 8.-replace оператор Используется для замены контента
# еслиобозначениеодинценить,новстреча Воля Долженценитьзаменятьдлянулевойценить。
'PowerShell' -replace 'Shell' # Power
# еслихотеть Воляценитьзаменятьдлядругойценить,пожалуйстасуществоватьхотетьзаменятьизмодель Изназадобозначениеновыйценить。
'my website address is hTTp://wwww.weiyigeek.top' -replace 'http','https'
my website address is https://wwww.weiyigeek.top
# Если вы хотите сделать замены с учетом регистра, используйте Replace() метод.
'my website address is hTTp://wwww.weiyigeek.top'.Replace('http','https')
my website address is hTTp://wwww.weiyigeek.top


# 9. Сравните массивы и коллекции
PS WeiyiGeek> 1,2,3,4,3,2,1 -eq 3
3
3

3. Примеры логических операторов

Основной пример:

Язык кода:javascript
копировать
# 1. Отрицать оператор как -не нода像высокийсортязык Такой же”! “ Также поддерживает поиск опровержений
PS > $a= 2 -eq 3
PS > $a
False
PS > -not $a
True
PS > !($a)
True
PS > $true -xor $false
True
PS > $true -xor $true
False
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода