Как создать и запустить сценарий PowerShell в Windows 10 – инструкция по шагам
Windows 10 PowerShell – это средство командной строки, которое позволяет выполнять команды и сценарии для изменения параметров системы и автоматизации задач. Это похоже на командную строку, но PowerShell является более эффективным интерфейсом командной строки (CLI), который предоставляет широкий набор инструментов и обеспечивает большую гибкость и контроль (особенно для сценариев).
Скрипт – это просто набор команд, сохраненных в текстовый файл (с расширением .ps1), которые PowerShell может понять и выполнить в заданной последовательности. Единственное предупреждение заключается в том, что в отличие от командной строки, протокол безопасности по умолчанию предотвращает выполнение всех сценариев.
Это означает, что при двойном щелчке .ps1 файла в системе Windows 10 ничего не произойдёт, и если вы пытаетесь выполнить скрипт в PowerShell, вы получите сообщение об ошибке: «не может быть загружен, потому что запрещено выполнение сценариев в этой системе». Тем не менее, запускать сценарии на вашем устройстве довольно просто. Вам просто нужно включить правильную политику выполнения.
В этой версии урока по Windows 10 мы проведём вас шаг за шагом, чтобы вы смогли успешно запустить свой первый скрипт в PowerShell.
Создание файла сценария PowerShell
В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).
Создание скрипта с помощью блокнота
Чтобы создать сценарий PowerShell с помощью блокнота, выполните следующие действия:
- Откройте приложение «Блокнот».
- Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».
Создание сценария с помощью интегрированной среды сценариев
Кроме того, консоль PowerShell ISE можно использовать для кодирования сценариев в Windows 10. Интегрированная cреда сценариев является сложным инструментом, но вы можете начать работу с помощью этих шагов:
- Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.
В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например:
Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.
Запуск файла сценария PowerShell
Чтобы запустить файл сценария в PowerShell, необходимо изменить политику выполнения, выполнив следующие действия:
- Откройте поиск и введите PowerShell, щелкните правой кнопкой мыши в верхний результат и выберите Запуск от имени администратора.
- Введите следующую команду, чтобы разрешить выполнение скриптов и нажмите клавишу Enter :
Введите следующую команду для запуска скрипта и нажмите клавишу Enter : & «C:\PATH\to\SCRIPT\first_script.ps1»
В приведенной выше команде обязательно измените PATH\to\SCRIPT на расположение вашего скрипта.
После выполнения этих шагов сценарий будет запущен, и если он был создан правильно, вы должны увидеть его вывод без проблем.
PowerShell в Windows 10 включает четыре политики выполнения:
- Restricted – останавливает выполнение скрипта.
- RemoteSigned – запускает скрипты, созданные на устройстве. Однако, сценарии, созданные на другом компьютере, не будут запускаться, если они не содержат подписи доверенного издателя.
- AllSigned – все скрипты будут работать до тех пор, пока они подписаны надежным издателем.
- Unrestricted запускает любой скрипт без каких-либо ограничений.
В приведенных выше шагах мы использовали команду, чтобы разрешить запуск локальных скриптов в Windows 10. Однако, если вы не планируете регулярно выполнять скрипты, можно восстановить настройки по умолчанию, используя те же инструкции, но на Шаге 4, обязательно используйте Set-ExecutionPolicy Restricted команду.
Парсинг заголовков
В ответ на запрос о ссылке на книгу сервер выдает такую картину.
Invoke-WebRequest -Uri "http://convert.smartfiction.ru/?uri=http%3A%2F%2Fsmartfiction.ru%2Fprose%2Fhot_and_cold_blood%2F&format=mobi" StatusCode : 200 StatusDescription : OK Content : {76, 105, 111, 100...} RawContent : HTTP/1.1 200 OK Transfer-Encoding: chunked Connection: keep-alive Status: 200 OK content-disposition: attachment; filename="hot_and_cold_blood.mobi" content-transfer-encoding: binary x-ua-compat... Headers : {, , , ...} RawContentLength : 46350
Имя файла тут есть: filename=»hot_and_cold_blood.mobi». Но я сразу приуныл, потому что извлечь его можно только регулярным выражением, которые я исторически не осилил. Однако меня быстро утешил в Телеграме Вадимс Поданс
$r = Invoke-WebRequest -Uri "http://convert.smartfiction.ru/?uri=http%3A%2F%2Fsmartfiction.ru%2Fprose%2Fhot_and_cold_blood%2F&format=mobi" $r.Headers -match 'filename=\"(.+)\"' | Out-Null $matches hot_and_cold_blood.mobi
Регулярное выражение берет из ответа заголовки (Headers) и вытаскивает имя файла из секции content-deposition.
В результате получается такой скрипт.
$Site = "http://smartfiction.ru/" $HttpContent = Invoke-WebRequest -Uri $Site $HttpContent.Links | Where-Object {$_.innertext -eq "mobi"} | %{ (Invoke-WebRequest -Uri $_.href).Headers -match 'filename=\"(.+)\"' | Out-Null Invoke-WebRequest -Uri $_.href -OutFile $matches }
Получение содержимого страницы и выбор нужных ссылок
Invoke-WebRequest умеет отправлять запросы HTTP/HTTPS/FTP, парсить ответ и возвращать наборы элементов HTML – ссылки, формы, изображения и т.д. Попробуйте любой сайт так:
Invoke-WebRequest -Uri "http://smartfiction.ru"
Для каждой ссылки легко выводится набор атрибутов.
$Site = "http://smartfiction.ru/" $HttpContent = Invoke-WebRequest -Uri $Site $HttpContent.Links innerHTML : smartfiction innerText : smartfiction outerHTML : <A title=smartfiction href="http://smartfiction.ru/" rel=home>smartfiction</A> outerText : smartfiction tagName : A title : smartfiction href : http://smartfiction.ru/ rel : home
Передав запрос по конвейеру командлету Where-Object, можно получить список всех ссылок на книги в формате mobi (ниже показана только первая).
$HttpContent.Links | Where-Object {$_.innertext -eq "mobi"} | fl innerText, href innerText : mobi href : http://convert.smartfiction.ru/?uri=http%3A%2F%2Fsmartfiction.ru%2Fprose%2Fhot_and_cold_blood%2F&format =mobi
Аналог cat, tail и head в PowerShell
В Linux имеется несколько команд для чтения файла:
- cat — считывает весь файл
- tail — считывает указанное количество строк (по умолчанию 10) от конца файла
- head — считывает указанное количество строк (по умолчанию 10) от начала файла
Для всего этого в PowerShell используется командлет Get-Content.
Пример считывания содержимого файла C:\PS\InstalledRoles.csv (при этом содержимое будет передано по конвейеру или если это последний командлет, то будет выведено в стандартный вывод, на экран):
Get-Content C:\PS\InstalledRoles.csv
Командлет Get-Content получает содержимое элемента не только файлов, но также может получить содержимое функции. Для файлов содержимое считывается по одной строке за раз и возвращает набор объектов, каждый из которых представляет собой строку содержимого.
Начиная с PowerShell 3.0, Get-Content может также получать указанное количество строк от начала или до конца элемента.
Для последующих примеров создадим текстовый файл, в который запишем перечень папок и файлов текущей директории:
Get-ChildItem > current_dir.txt
Четыре способа экспорта и передачи данных в Excel
Описание проблемы:
Я хотел бы получать данные по интерфейсу RS232 и передавать их в Microsoft Excel для дальнейшего использования и анализа.
Требования:
Некоторые дополнительные модули для этого ПО.
Подразумевается что:
Вы настроили параметры связи с устройством (скорость, количество бит данных, контроль передачи и т.п.) в логгере и можете принимать данные без каких либо ошибок.
Решение:
Наша программа позволяет передавать данные из RS232 в Excel следующими путями:
Соединение RS232 и Excel с помощью модуля «Local database»
- Не требует установленного Excel на рабочем компьютере;
- Может создавать файлы Excel в фоновом режиме.
- Пересоздает файл каждый раз при приеме новых данных, поэтому требуется относительно больше ресурсов компьютера, если поток данных быстр;
- Невозможно экспортировать данных из нескольких портов в один файл.
Прочитайте этот пример с использованием данного метода.
Связь RS232 и Excel с помощью модуля «Direct Excel connection»
- Позволяет записывать данные в любые колонки и строки;
- Очень удобно, если требуется наблюдать данные из RS232 в реальном времени.
Требуется установленный Excel на рабочем компьютере. Если вы добавите графики или диаграммы в файл Excel, то этот способ будет очень медленный.
Прочитайте этот пример об использовании данного метода.
Отправка данных из RS232 в Excel с помощью интерфейса DDE
- Позволяет записывать данные в любые колонки и строки;
- Очень удобно, если требуется наблюдать данные из RS232 в реальном времени.
- Excel автоматически запускает логгер;
- Позволяет использовать логгер на удаленном компьютере (в этом случае используется DDE через сеть);
- Позволяет обрабатывать данные RS232 в Excel с помощью кода VBA.
- Требуется установленный Excel на рабочем компьютере. Если вы добавите графики или диаграммы в файл Excel, то этот способ будет очень медленный;
- Требуются знания VBA.
Прочитайте этот пример об использовании данного метода.
Получение данных из RS232 в Excel с помощью нашего компонента ActiveX
- Позволяет обрабатывать данные как вам хочется;
- Позволяет передавать необработанные данные (RAW) из RS232 в Excel;
- Позволяет принимать уведомления о событиях программы;
- Позволяет передавать данные из Excel в RS232;
- Excel автоматически запускает логгер;
- Очень удобно, если требуется наблюдать данные из RS232 в реальном времени;
- Позволяет обрабатывать данные RS232 в Excel с помощью кода VBA.
- Требуется установленный Excel на рабочем компьютере.
- Требуются хорошие знания VBA;
- Компонент ActiveX платный и для него необходима дополнительная лицензия.
Скачайте ActiveX компонент по этой ссылке после установки компонента, пример и файл справки по нему будут в папке с компонентом.
голоса
Рейтинг статьи
Powershell — Creating an Excel spreadsheet
Would you like to learn how to run multiple commands on the same line? In this tutorial, we are going to show you how to execute multiple commands using one line in a computer running Windows.
• Windows 2012 R2
• Windows 2016
• Windows 2019
• Windows 2022
• Windows 10
• Windows 11
Equipment list
Here you can find the list of equipment used to create this tutorial.
Equipment list
This link will also show the software list used to create this tutorial.
On this page, we offer quick access to a list of tutorials related to PowerShell.
Tutorial Powershell — Creating an Excel spreadsheet
Start a Powershell command-line.
Create an Excel file using Powershell.
Copy to Clipboard
$Myexcel = New-Object -ComObject excel.application
Configure the Excel visibility.
Copy to Clipboard
$Myexcel.visible = $true
Add a workbook to the Excel file.
Copy to Clipboard
$Myworkbook = $Myexcel.workbooks.add()
Add a sheet to the Excel workbook.
Copy to Clipboard
$Sheet1 = $Myworkbook.worksheets.item(1)
$Sheet1.name = «Power level»
Add captions to the Excel sheet.
Copy to Clipboard
$Sheet1.cells.item(1,1) = ‘NAME’
$Sheet1.cells.item(1,2) = ‘POWER’
$Sheet1.cells.item(1,3) = ‘TRANSFORMATION’
Format the Excel cells using Powershell.
Copy to Clipboard
$Sheet1.Range(«A1:C1»).font.size = 18
$Sheet1.Range(«A1:C1»).font.bold = $true
$Sheet1.Range(«A1:C1»).font.ColorIndex = 2
$Sheet1.Range(«A1:C1»).interior.colorindex = 1
Add data to the Excel sheet.
Copy to Clipboard
$Sheet1.cells.item(2,1) = ‘Goku’
$Sheet1.cells.item(2,2) = ‘9500’
$Sheet1.cells.item(2,3) = ‘SSJ3’
$Sheet1.cells.item(3,1) = ‘Vegeta’
$Sheet1.cells.item(3,2) = ‘10000’
$Sheet1.cells.item(3,3) = ‘SSJ2’
$Sheet1.cells.item(4,1) = ‘Gohan’
$Sheet1.cells.item(4,2) = ‘5000’
$Sheet1.cells.item(4,3) = ‘SSJ2’
Centralize all data.
Copy to Clipboard
$Sheet1.Range(«A1:C4»).HorizontalAlignment = -4108
$Sheet1.Range(«A1:C4»).VerticalAlignment = -4108
Add borders using Powershell.
Copy to Clipboard
$Sheet1.Range(«A1:C4»).Borders.LineStyle = 1
Configure all columns to autofit using Powershell.
Copy to Clipboard
$Sheet1.Columns.AutoFit()
Save the excel file using Powershell.
Copy to Clipboard
$Myfile = ‘C:\tmp\example.xlsx’
$Myexcel.displayalerts = $false
$Myworkbook.Saveas($Myfile)
$Myexcel.displayalerts = $true
Here is the spreadsheet created using Powershell.
Congratulations! You are able to create an Excel file using Powershell.
2022-02-03T00:46:21-03:00
Примеры
Пример 6. Экспорт и добавление объектов в CSV-файл
В этом примере показано, как экспортировать объекты в файл CSV и использовать параметр Append для добавления объектов в существующий файл.
Командлет Get-Service получает объекты службы. Параметр DisplayName возвращает службы, содержащие слово Application. Объекты службы отправляются по конвейеру командлету Select-Object. Командлет Select-Object использует параметр Property для указания свойств DisplayName и Status. В переменной $AppService хранятся объекты.
Командлеты Get-Service и Select-Object повторяются для служб, содержащих слово Windows. В переменной $WinService хранятся объекты службы. Командлет Export-Csv использует параметр Append, чтобы указать, что объекты $WinService добавляются в существующий файл Services.csv. Командлет Get-Content повторяется, чтобы отобразить обновленный файл, содержащий добавленные данные.
Пример 7. Командлет форматирования в конвейере приводит к неожиданным результатам
В этом примере показано, почему важно не использовать командлет форматирования в конвейере. При получении неожиданного вывода устраните неполадки в синтаксисе конвейера
При использовании командлета Format-Table в конвейере для выбора свойств получены неожиданные результаты. Format-Table отправляет объекты формата таблицы по конвейеру командлету Export-Csv, а не объекту DateTime. Export-Csv преобразует объекты формата таблицы в ряд строк CSV. Командлет Get-Content отображает CSV-файл, содержащий объекты формата таблицы.
Пример 8. Использование параметра Force для перезаписи файлов, доступных только для чтения
В этом примере создается пустой файл, доступный только для чтения, и используется параметр Force для обновления файла.
В командлет Export-Csv добавлен параметр Force, который принудительно записывает экспорт в файл. Командлет Get-Content использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 9: Использование параметра Force с Append
В этом примере показано, как использовать параметры Force и Append. При объединении этих параметров несоответствующие свойства объекта могут быть записаны в файл CSV.
Другое выражение создает PSCustomObject со свойствами Name и Edition. Значения хранятся в переменной $AdditionalContent. Переменная $AdditionalContent передается по конвейеру командлету Export-Csv. Параметр Append используется для добавления данных в файл. Добавление завершается неудачно из-за несоответствия имени свойства между Version и Edition.
Параметр Force командлета Export-Csv используется для принудительной записи экспорта в файл. Свойство Edition отбрасывается. Командлет Import-Csv использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 12. Преобразование хэш-таблиц в CSV
В PowerShell 7.2 и более поздних версиях при экспорте хэш-таблиц в CSV ключи первой хэш-таблицы сериализуются и используются в качестве заголовков в выходных данных CSV-файла.
Пример 13. Преобразование хеш-таблиц в CSV с дополнительными свойствами
В PowerShell 7.2 и более поздних версиях при экспорте хэш-таблицы с дополнительными свойствами, добавленными командлетом Add-Member или Select-Object, дополнительные свойства также добавляются в виде заголовка в CSV-файл.
Каждая хеш-таблица имеет свойство ExtraProp, добавленное командлетом Add-Member, а затем экспортированное в CSV. Вы можете видеть, что ExtraProp теперь является заголовком в выходном файле CSV.
Если добавленное свойство имеет то же имя, что и ключ из хеш-таблицы, ключ имеет приоритет, и только ключ экспортируется в CSV.
1 ответ
Решение
Хорошо, CSV в порядке, но когда вы представляете данные или делитесь ими с другими, это просто нехорошо, поэтому у меня возникает желание сбросить данные в Excel. Чтобы добавить данные в таблицу Excel, я настоятельно рекомендую запустить массив объектов, а затем использовать командлет, и вставка в Excel.
Вы на самом деле не заявляете, что хотите вставить в Excel, но я собираюсь предположить HostName, Serial# и пользователей. Поскольку список пользователей является массивом, я объединю его в строку, чтобы Excel не волновался по этому поводу, и вставлю тонну пустых строк.
Итак, давайте перенесем эту информацию в объект. Есть несколько способов сделать это, но тот, который я предпочитаю (должен работать на PS v3 и выше), состоит в следующем:
Теперь, если мы передадим это и сделать его вкладкой с разделителями Переключатель выходит примерно так:
Теперь, если вы не хотите, чтобы строка заголовка вставлялась в ваш файл Excel каждый раз, когда мы передаем это и это решает это. Но сейчас мы включим это. Вот код, который я бы использовал, чтобы получить эту информацию в Excel.
Теперь вам, возможно, придется изменить пользовательский объект, но он должен делать то, что вы хотите. Если ваш сценарий обрабатывает более одного элемента за раз, вы можете создать массив объектов и таким образом вставить их все в Excel сразу.
Изменить: Хорошо, где пропустить заголовок и вставить имена в свои собственные ячейки…
Как я уже сказал, вы бы трубу:
в , Я думаю, это может сбить с толку, потому что тогда я , но если вы рассмотрите, как работает конвейер и как каждая труба получает выходные данные из предыдущего сегмента, то вы передаете в так что он пропускает первую строку (где находятся заголовки), а затем направляет скопировать результат в буфер обмена… Это имеет смысл, когда вы разбиваете его. Команда будет выглядеть так:
Теперь, чтобы вставить каждого пользователя в его собственную ячейку, вам нужно быть более конкретным. Вы хотите охватить ячейки по горизонтали или по вертикали? Если вы хотите охватить горизонтально, все становится сложнее. В основном то, что мы сделали бы, это создать объект, а затем использовать добавить свойства объекта, по одному для каждого пользователя.
Это создаст такую запись (заголовки оставлены для справки, они не будут отображаться в Excel):
Если вы хотите перечислить каждого пользователя по вертикали, вы можете сделать что-то вроде создания объекта для каждого пользователя, но только с указанием Host и S/N на первом.
Это выведет что-то вроде этого (заголовки оставлены для справки, они не будут отображаться в Excel):
3
2016-02-24 19:53
Получение компьютеров
Команда, которая вернет список всех компьютеров в домене следующая:
Команда точно выполнится на домен контроллере, так как все поддерживаемые серверные версии ОС устанавливают нужный модуль Powershell вместе с Active Directory (если вы только специально не отключали эту возможность). Если вы планируете выполнять команду с клиента на Windows 7 и выше, то такой модуль устанавливается вместе с RSAT (Remote Server Administration Tools). В отдельном случае может понадобится импортировать этот модуль следующей командой:
Вы так же можете проверить, что этот модуль у вас установлен следующей командой:
В остальных случаях стоит смотреть на явные запреты на выполнение скриптов Powershell и чтения Active Directory.
Что бы вернуть данные по одному пользователю используется ключ Identity:
Параметр Filter является обязательным. Вы можете вернуть дополнительные данные используя Properties:
Вам так же будет интересно:
Открывайте папки и файлы с помощью командной строки и PowerShell
В этом руководстве я покажу вам, как открывать папки прямо из командной строки и PowerShell на вашем ПК с Windows 10.
Что вы узнаете:
- Как перейти к папке с помощью командной строки и PowerShell.
- Как открыть папку с помощью командной строки и PowerShell.
- Как закрыть файл с помощью командной строки и PowerShell.
В сообщении не забудьте заменить с вашим именем пользователя.
1]Как перейти к папке с помощью командной строки и PowerShell
Откройте командную строку, выполнив поиск cmd в меню «Пуск» и выбрав «Командная строка». Для PowerShell вы также можете найти его и открыть из меню «Пуск».
Введите следующую команду и нажмите ENTER, чтобы запустить ее:
cd PathToFolder
ПРИМЕЧАНИЕ: В приведенной выше команде замените Путь К Папке с фактическим путем к папке, которую вы хотите открыть. Итак, это может стать:
cd C:Users<username>DesktopNew Folder
Чтобы открыть файл, сохраненный в этой папке, введите имя файла и нажмите ENTER. Пример,
PathToFolder new-file.txt
Кроме того, вы можете ввести полный путь к файлу, не используя CD команда. Например,
C:Users<username>DesktopNew Foldernew_file.txt
2]Как открыть папку с помощью командной строки и PowerShell
Первый способ — открыть файл, сохраненный в папке. Однако, если вы хотите открыть папку в проводнике с помощью командной строки или PowerShell, вы воспользуетесь Начните команда.
Командная строка
Чтобы открыть папку, добавьте путь к папке после Начните команда. Например, я могу перейти к Новая папка папку, используя следующую команду:
start C:Users<username>DesktopNew Folder
Если вы хотите открыть текущую папку, запустите Начните команда с точкой (.):
start .
Чтобы открыть родительскую папку для текущей папки, используйте две точки полной остановки (..):
start ..
При нажатии ENTER указанная папка откроется в окне проводника.
PowerShell
Чтобы открыть папку в проводнике с помощью PowerShell, введите любой из следующих командлетов:
Invoke-Item
или же
ii
и добавьте путь к папке.
ii C:Users<username>DesktopNew Folder
Чтобы открыть текущий каталог, используйте следующую команду:
ii
3]Как закрыть файл с помощью командной строки и PowerShell
Чтобы закрыть уже открытый файл с помощью командной строки, вы используете команду taskkill. Сначала перейдите в папку, используя первый метод:
C:PathToFolder
Когда вы находитесь в правильном каталоге, введите следующую команду:
taskkill /im filename.exe /t
В приведенной выше команде замените имя файла часть с именем файла, который вы хотите закрыть.
Обратите внимание, что эта команда закрывает каждый момент открытого файла, и вы рискуете потерять несохраненные данные. Надеюсь, этот пост окажется для вас полезным
Надеюсь, этот пост окажется для вас полезным.
Код PowerShell
Чтобы собрать все воедино, вам понадобится мой модуль PowerShell из коллекции PowerShell. Если вы хотите просмотреть результаты, вам также необходимо установить Microsoft Excel.
Примечание. Этот же отчет можно создать, не устанавливая Excel. Это отличная функция, если вы хотите запустить процесс сбора данных без присмотра или на сервере. Затем вы можете отправить результат по электронной почте или сохранить его в общей папке.
Установите модуль PowerShell из галереи
Теперь вы готовы запустить скрипт и получить результаты.
Вывод Get-Process , Get-Service и Get-ChildItem передаются в Excel в одну и ту же книгу $xlfile . Если не указать -WorkSheetName , Export-Excel вставит данные на тот же лист, в данном случае Лист1 по умолчанию.
Используя параметр -StartRow, вы указываете Export-Excel, с чего начать вставку данных.
Параметр -TableName очень эффективен, он позволяет указать имя области, которую вы только что экспортировали, и настроить ее как таблицу Excel. Это дает вам полосу зебры и стрелки раскрывающегося списка, что обеспечивает интерактивную фильтрацию данных.
Переключатель -AutoSize изменяет размер столбцов электронной таблицы в соответствии с содержащимися в ней данными.
С последним сбором данных, Get-ChildItem, вы делаете что-то немного другое. Использование -PassThru возвращает объект, представляющий созданную книгу Excel. Вы сохраняете это в переменной $excel .
С помощью $excel вы можете получить доступ к свойствам книги, листам и многому другому. Здесь вы устанавливаете $ws для рабочего листа Sheet1 $ws = $excel.Workbook.Worksheets .
Теперь вы можете вставлять данные с помощью функции Set-Format, а также задавать размер шрифта и атрибут полужирного шрифта.
Не забудьте использовать Close-ExcelPackage, это сохранит ваши изменения на диске. Переключатель -Show автоматически запускает Excel с только что созданным файлом Excel.
Я рекомендую вам изучить модуль Excel PowerShell, это лишь малая часть того, что возможно. Ознакомьтесь со всеми примерами модулей.
Опции Select-Object
-ExcludeProperty
Указывает свойства, которые этот командлет исключает из операции. Подстановочные знаки разрешены.
Начиная с PowerShell 6, для работы -ExcludeProperty больше не требуется включать параметр -Property.
-ExpandProperty
Если указанное свойство является массивом, каждое значение массива включается в выходные данные.
Если указанное свойство является объектом, свойства объектов раскрываются для каждого объекта InputObject.
В любом случае тип выходных объектов соответствует типу расширенного свойства.
Если указан параметр -Property, командлет Select-Object пытается добавить каждое выбранное свойство в качестве NoteProperty к каждому выводимому объекту.
Предупреждение: Если вы получаете сообщение об ошибке, что свойство не может быть обработано, так как свойство с таким именем уже существует, рассмотрите следующее
Обратите внимание, что при использовании -ExpandProperty командлет Select-Object не может заменить существующее свойство. Это означает:
- Если развёрнутый объект имеет свойство с таким же именем, команда возвращает ошибку.
- Если выбранный объект имеет свойство с тем же именем, что и свойство развёрнутого объекта, команда возвращает ошибку.
-Index
Выбирает объекты из массива на основе значений их индексов. Введите индексы в список через запятую. Индексы в массиве начинаются с 0, где представляет первое значение, а (n-1) представляет последнее значение.
-InputObject
Указывает объекты для отправки командлету через конвейер. Этот параметр позволяет направлять объекты в Select-Object.
Когда вы передаёте объекты параметру -InputObject, вместо использования конвейера командлет Select-Object обрабатывает -InputObject как отдельный объект, даже если значение является коллекцией. Рекомендуется использовать конвейер при передаче коллекций в Select-Object.
-Property
Задаёт свойства для выбора. Эти свойства добавляются как члены NoteProperty к выходным объектам. Подстановочные знаки разрешены.
Значение параметра -Property может быть новым вычисляемым свойством. Чтобы создать вычисляемое свойство, используйте хеш-таблицу.
Действительные ключи:
- Name (или Label) — <строка>
- Expression — <строка> или <блок скрипта>
-Skip
Пропускает (не выбирает) указанное количество элементов. По умолчанию параметр -Skip ведёт отсчёт с начала массива или списка объектов, но если в команде используется параметр -Last, он отсчитывается с конца списка или массива.
В отличие от параметра -Index, который начинает отсчёт с , параметр -Skip начинается с 1.
-SkipLast
Пропускает (не выбирает) указанное количество элементов с конца списка или массива. Работает так же, как использование -Skip вместе с параметром -Last.
В отличие от параметра -Index, который начинает отсчёт с , параметр -SkipLast начинается с 1.
-Unique
Указывает, что если подмножество входных объектов имеет идентичные свойства и значения, должен быть выбран только один член подмножества.
-Unique выбирает значения после применения других параметров фильтрации.
Этот параметр чувствителен к регистру. В результате строки, отличающиеся только регистром символов, считаются уникальными (то есть разными).
-Wait
Указывает, что командлет отключает оптимизацию. PowerShell запускает команды в том порядке, в котором они появляются в конвейере команд, и позволяет им создавать все объекты. По умолчанию, если вы включаете команду Select-Object с параметрами -First или -Index в конвейер команд, PowerShell останавливает команду, которая создаёт объекты, как только создаётся выбранное количество объектов.
Этот параметр появился в Windows PowerShell 3.0.
Using PowerShell to Import to Excel
So you’ve exported some information to a file called processes.xlsx in the previous section. Perhaps now you need to move this file to another computer and import/read this information with PowerShell and Excel. No problem. You have Import-Excel at your disposal.
At its most basic usage, you only need to provide the path to the Excel document/workbook using the Path parameter as shown below. You’ll see that it reads the first worksheet, in this case, the Processes worksheet, and returns PowerShell objects.
Path Parameter
Maybe you have multiple worksheets in an Excel workbook? You can read a particular worksheet using the WorksheetName parameter.
Do you need to only read certain columns from the Excel worksheet? Use the HeaderName parameter to specify only those parameters you’d like to read.
Действие 3. Добавление сведений в свойства внешних контактов
После выполнения команды в действии 2 создаются внешние контакты, однако они не включают сведений о контакте или организации, то есть данных, содержащихся в остальных ячейках CSV-файла.
Выполните следующие команды, чтобы добавить в созданные внешние контакты другие свойства из CSV-файла:
$Contacts = Import-CSV D:\externalcontacts.csv
$contacts | ForEach {Set-Contact $_.Name -StreetAddress $_.StreetAddress -City $_.City -StateorProvince $_.StateorProvince -PostalCode $_.PostalCode -Phone $_.Phone -MobilePhone $_.MobilePhone -Pager $_.Pager -HomePhone $_.HomePhone -Company $_.Company -Title $_.Title -OtherTelephone $_.OtherTelephone -Department $_.Department -Fax $_.Fax -Initials $_.Initials -Notes $_.Notes -Office $_.Office -Manager $_.Manager}
Не беспокойтесь, если вы указали не все данные в CSV-файле. Если их там нет, они не добавляются.
Примечание. Параметр Manager может представлять проблему. Если эта ячейка пуста в CSV-файле, появится сообщение об ошибке и никакие данные свойств не будут добавлены в контакт. Если руководителя указывать не требуется, просто удалите часть –Manager $_.Manager из приведенной выше команды PowerShell.
Вот и все. В панели управления Exchange можно просмотреть свойства контакта. Пользователи могут просматривать контакты �� адресной книге Outlook и Outlook Web App.