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 и детали кода