PowerShell? Вы используете это? Можете ли вы показать мне классные вещи системного администрирования, которые я могу с этим сделать? [закрыто]

45

Я постоянно читаю, что PowerShell - это путь в будущее. Когда он был впервые выпущен, я провел целую кучу виртуальных лабораторий, но с тех пор я до сих пор не использовал его в производственной среде. Я знаю, что придет день, когда я буду иметь дело с ОС, где она уже установлена, поэтому я хочу быть готовым.

Я хочу знать:

  1. Вы используете это?
  2. Каков ваш процесс начальной загрузки для использования PowerShell?
  3. Какие задачи системного администрирования вы написали в нем?
  4. Я администратор базы данных SQL Server. Какие классные вещи с этим делать?

Кажется, что все согласны с тем, что Microsoft настаивает на этом, но на самом деле никто еще не использует его. Я хочу услышать от системных администраторов, которые используют его для выполнения повседневных задач и поделиться некоторыми примерами кода.

Nick Kavadias
источник
JScript мертв?
Софи Альперт
7
Постарайтесь не быть троллем с вашими вводящими в заблуждение заголовками в следующий раз.
Джайкуль
Может быть, это потому, что иногда я хотел бы, чтобы все прошло как jscript. Это только я или это очень уродливо и многословно?
Ник Кавадиас

Ответы:

34

Microsoft делает все возможное, чтобы PowerShell был идеальным выбором для опытных пользователей и разработчиков систем автоматизации. Прошли времена компиляции кода в .NET, чтобы сделать то же самое, теперь вам просто нужны notepad.exe и google. Мы большие поклонники этого в офисе, тем более что консоль управления Exchange 2007 НЕ включает в себя все, что вы можете делать в PowerShell. Microsoft преднамеренно не смогла реализовать вещи, которые выполняются только изредка, проще разрабатывать таким образом, что прямо вынуждает их использовать, если у вас есть что-то похожее на сложную среду.

Управление продуктами нового поколения Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) - все они имеют очень богатые возможности PowerShell. Как только Remote Powershell (PowerShell 2.0 IIRC) будет развернут с Server 2008 R2, он станет еще БОЛЬШЕ полезным для разработчиков средств автоматизации.

Что мы с этим сделали:

  • Создайте веб-страницу для делегирования определенных задач администратора пользователям службы поддержки. Веб-страница запускает команды, которые выполняются в PowerShell. Вещи это делает:
    • Создание и удаление учетных записей пользователей, включая подготовку почтовых ящиков Exchange 2007 и домашних каталогов.
    • Разблокирует заблокированные аккаунты
    • Создать / удалить группы
    • Добавить / удалить пользователей из групп
    • Перемещение пользователей между почтовыми хранилищами
    • Установить пароли
  • Возьмите выдержки из системы ERP и перенесите данные глобальной адресной книги в Active Directory каждую ночь.
  • Решите проблему LegacyExchangeDN, которая возникла при переходе с Exchange 2003 на Exchange 2007. Пришлось добавить адрес X500 всем, кто был на Exchange 2003. Довольно короткий скрипт PowerShell исправил это.
  • Создание сценариев «групповых почтовых ящиков» (общих почтовых ящиков в Exchange, где несколько пользователей имеют доступ к почтовому ящику), в противном случае процесс выполняется вручную, в зависимости от характера данных, которые нам нужны, перед тем, как их выбросить. Это значительно стандартизировало настройку этих почтовых ящиков.
  • Создал скрипт, который прошел через все готовые машины, сбрасывая определенный раздел реестра и перезапуская сервис. Это заняло 18 часов, но работа была выполнена.

Так что да, PowerShell будет с нами довольно долго.

РЕДАКТИРОВАТЬ : Добавление образца кода, так как он был запрошен

$ Список = Import-CSV ( "groupusers.csv")
$ Lastseengroup = $ список [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{отредактировано - в формате, ou = groups, dc = domain, dc = domain, dc = domain}"
Список участников Clear-Variable
Clear-Variable unknownusers
foreach ($ entry в $ list) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo "наткнулся на новую группу $ ($ entry.group), фиксируя изменения в $ lastseengroup"
        $ Новая_группа = $ ADgroupPrefix + $ lastseengroup
        $ Newgroupdn = ' "' + "сп = $ новая_группа $ ADGroupSuffix" +"'
        echo "получение DN для $ newgroup"
        $ Существующая группа = dsquery группа domainroot -name $ newgroup
        if (($ существующая группа -ne $ нуль)) {
            dsmod group $ newgroupdn -chmbr $ список участников
        } еще {
            dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Группа, импортированная из eDirectory"
        }
        Список участников Clear-Variable
    }
    $ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
    if ($ User.isvalid) {
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
    } еще {
        $ unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ Lastseengroup = $ ($ entry.group)

}
dsadd group "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist

Это берет файл CSV, созданный с помощью Perl-скрипта, и обновляет набор групп. Если группа уже существует, она заменяет членство на указанное в файле. Если группа не существует, она создает ее. Это односторонняя синхронизация. Кроме того, не совсем в производстве, но близко.

sysadmin1138
источник
6
дистанционный PowerShell! ты имеешь ввиду ssh!?! о времени!
Ник Кавадиас
2
Как вы запускаете сценарии powershell с веб-сайта, используете ли вы сценарии powershell в качестве языка веб-программирования? вы используете powershellASP? вы запускаете свои скрипты как пользователь IIS?
Квентин
17

Учитывая, что серверные продукты Microsoft с самого начала будут поддерживать PowerShell (я полагаю, что в следующей версии Exchange все конфигурации доступны через PowerShell), и что такие книги, как PowerShell на практике, описывают некоторые отличные способы автоматизации монотонных задач, в противном случае я думаю, Разумно предположить, что PowerShell еще какое-то время будет распространенной технологией на сервере Windows.

moobaa
источник
эта книга все еще находится в стадии бета / написания
Ник Кавадиас
Да, это так, но вы все равно можете приобрести его прямо сейчас и получить ранний доступ к содержимому. И там есть тонны вещей для обслуживания сервера :)
moobaa
4
Exchange был полностью PowerShell начиная с Exchange 2007. OCS будет полностью поддерживать PowerShell в следующем выпуске; большинство продуктов System Center либо полностью его поддерживают, либо поддержат его в следующих выпусках. PowerShell никуда не денется.
Пол
12

Я бы порекомендовал подкаст Скотта Хансельмана № 162 . Похоже, что все серверные группы Microsoft «вынуждены» предоставлять командлеты PowerShell, а также следовать единому согласованному синтаксису.

Кроме того, третьи стороны, такие как VMWare , принимают его

Короче говоря, я считаю, что PowerShell, начиная с 2.0, серьезно занимается заменой командных файлов для всех, кроме самых тривиальных задач.

Майкл Стум
источник
10

Десять сценариев PowerShell, которые я использую в качестве администратора базы данных SQL Server (все они описаны / размещены в моем блоге ):

  1. Проверьте дисковое пространство на всех серверах SQL и загрузите данные в таблицу SQL
  2. Запускать отчеты о разрешениях на всех производственных серверах SQL и загружать данные в базу данных SQL
  3. Обнаружение всех кластеров, узлов и виртуальных сред Windows Server 2003 в сети и загрузка в таблицы SQL
  4. Обнаружение всех баз данных на всех серверах SQL, как определено в SCCM, и загрузка в таблицу SQL
  5. Создайте систему показателей резервного копирования SQL Server, загрузив информацию о резервном копировании по всем серверам SQL в таблицу SQL
  6. Убедитесь, что механизм TCP Offload Engine отключен в Windows Server 2003 с пакетом обновления 2 (это снижает производительность для многих серверов SQL)
  7. Проверьте выравнивание разделов диска (также снижение производительности, если диски выровнены неправильно)
  8. Копировать таблицы SQL с одного сервера на другой
  9. Recursivley копировать все пакеты служб SSIS с использованием хранилища MSDB с одного сервера на другой, включая структуру папок
  10. Создать свой собственный просмотрщик зависимостей графических объектов
Chad Miller
источник
8

Какие задачи администратора вы написали в нем?

мониторинг приложений / сервисов: получение ключевых показателей производительности из (удаленных) EventLog и хранимых процедур и отображение их из одного пакетного файла

Я администратор базы данных SQL Server, покажи мне какие-нибудь интересные вещи?

automssqlbackup : ежедневное резервное копирование для MSSQL с чередованием (ежедневно = инкрементное, еженедельно + ежемесячно = полное; хранить 5 ежедневных, 5 еженедельных резервных копий), архивирование, уведомление по электронной почте

devio
источник
+1 за автоматизацию всего процесса резервного копирования MSSQL.
Андрей Ринея
Да ... Powershell - чистое золото для автоматизации сложных резервных копий в SQL Server. Мы используем его для архивации и шифрования почасовых резервных копий, а затем отправляем файлы в Amazon S3 для внешнего
Грег Брей,
7

Воспользовавшись сценариями Unix Shell в предыдущей карьере, а затем перейдя к администрированию Windows Server, я могу сказать, что я действительно очень ценю PowerShell - у меня нет ни времени, ни возможности изучать слишком много загадочного синтаксиса, и я был приятно удивлен, что многое сценариев powershell можно написать очень простым языком ... возьмите то, чего стоит, как я привык к ksh !!

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

WiredNut
источник
7

Я подумал, что это круто: с SQL Server 2008 вы получаете новые расширения PowerShell, которые позволяют вам перемещаться по базам данных SQL так же, как в вашей локальной файловой системе или реестре.

После установки инструментов клиента SQL Server вы можете открыть любую базу данных в PowerShell (через контекстное меню, вызываемое правой кнопкой мыши) и поэкспериментировать с ней объектно-ориентированным способом:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir

SCHEMA          NAME         CREATED
------          ----         -------
dbo             MyTable      25/06/2009 17:02

PS > dir | format-table name, columns, rowcount, parent

NAME            COLUMNS      ROWCOUNT      PARENT
----            -------      --------      ------
MyTable         {Id, Name}   0             {ExampleDB}

PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]

PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count

8

PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}

Обратите внимание, что первая строка просто меняет подсказку, чтобы она не была такой длинной.

Надеюсь, кроме этого, само собой разумеется, что здесь происходит :)

Lex
источник
+1 Вау, это очень полезно. Благодарность!
Jftuga
5

SQL Server 2008 теперь имеет опции контекста PowerShell в Management Studio, так что это больше, чем Exchange. Кроме того, думайте об этом как о замене DOS, поскольку именно об этом думала MS, поскольку они просто не могут улучшить безопасность DOS для проблем обратной совместимости, поэтому они просто создали что-то новое и wammo, проблема решена!

SQLGuyChuck
источник
4

Я тоже администратор баз данных и долгое время работаю сценаристом, возвращаясь к пакетным файлам DOS, V3.3! Перешел на VB Script, но PS очень мощный. Посмотрите на - Извините, я не могу опубликовать ссылку, так как я новый пользователь. Получил это из блога Отто Хельвега. Это дешевый и веселый инструмент для инвентаризации программного обеспечения.

  • 1- Извлекает список компьютеров для запроса из таблицы базы данных.
  • 2- Добавляет текущие данные и время к результату.
  • 3- Записывает результаты аудита в базу данных.

Пример скрипта PowerShell:

# Open the database connection
$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

# Get all known computers
$sqlQuery.CommandText = "select * from Inventory..Computers"
$reader = $sqlQuery.ExecuteReader()
$computersToQuery = @()
while ($reader.Read()) {
   $computersToQuery += $reader["Computer"]
}

# Close the database connection
$dbConn.Close()

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      "Loading-" + $computer + ":" + $softwareItem

      # Try an Update then an Insert 
      trap {
         $sqlQuery.CommandText = "update Inventory..SoftwareInventory set AuditDate = getdate() where  Computer = '" + $computer + "' and Software = '" + $softwareItem + "'"
         $result = $sqlQuery.ExecuteNonQuery()
         continue
      }

      $sqlQuery.CommandText = "insert into Inventory..SoftwareInventory (Computer,Software,AuditDate) values ('" + $computer + "','" + $softwareItem + "',getdate())"
      $result = $sqlQuery.ExecuteNonQuery()
   }
}

$dbConn.Close()

Дэйв Дж

Дэйв Джексон
источник
3

Следующие задачи выполняются моей командой на регулярной основе с помощью PowerShell

  • перечислите доступную память на всех узлах наших кластеров Hyper-V.
  • Управление Netapp Filer
  • Предоставление новых виртуальных машин Hyper-V
  • Запись и чтение из списков SharePoint программно

Изо дня в день у меня все время появляется подсказка PS, и я использую ее для любых задач, для которых я использовал CMD.

Вот несколько примеров кода для чтения списков Sharepoint. Я использую веб-службы из Sharepoint и новый командлет «New-WebServiceProxy» в PowerShell V2.0

$url = "http://server/sites/site/_vti_bin/lists.asmx"
$listWebService = new-webServiceProxy -uri $url -UseDefaultCredential
$listName = "MyList"
$viewGuid = $null
$query= $null
$viewFields = $null
$numRowsReturned = 20000
$queryOptions = $null
$result = $listWebService.GetListItems($listName,$ViewGuid,$query,$viewFields,$numRowsReturned,$queryOptions,$null)

У Ойсена Грехана есть отличный пост в блоге об использовании Sharepoint Web Services, который я использовал как основу для создания всех своих функций. У него даже есть потрясающий скрипт new-webservice.ps1, который вы можете использовать, если вы все еще используете PowerShell V1.

Кроме того, вот базовая функция, которую я использовал, чтобы получить доступную память на узлах в моем кластере

Function Get-AvailableMemory {
param
(
[string[]]
$servers
)
BEGIN {
$query = "select AvailableBytes,__SERVER from Win32_PerfRawData_PerfOS_Memory"

$availableMemory = @{
                    Name="AvailableMemory";
                    Expression = {[math]::round($_.AvailableBytes/1gb,2)}
                    }
$serverName = @{  
                Name ="Server";
                Expression = {$_."__SERVER"}                                      
               }
}
PROCESS {
foreach ($server in $servers){
    get-wmiobject -query $query -computer $server |
    select-object $availableMemory, $serverName
    }
}

END {}    

}
Энди Шнайдер
источник
У вас есть пример кода, которым вы готовы поделиться? Я особенно заинтересован в чтении и написании списков SharePoint.
Брайан
2

Я попробовал PowerShell для небольшого проекта на работе - ежедневной миграции подмножества ~ 600 пользователей и ~ 200 групп из корпоративной AD в старую систему UNIX с использованием CSV- подобных файлов. Мне предложили сценарий VBScript на 500 строк (!), Который выдвинул одну группу и ее пользователей в качестве отправной точки.

Оказалось, что ~ 20-строчный скрипт PowerShell может сделать все это ...

Как пользователь * NIX (на стороне сервера и клиента), я был очень приятно удивлен PowerShell. Даже если вы просто знаете небольшое подмножество команд, вы можете сделать действительно мощную работу с ним. Мне просто нужен SSH (-подобный) удаленный доступ ...

Peter Mortensen
источник
поиск psremoting
Сэм
1

Как я могу не использовать это? Все серверные приложения Microsoft, которые выходят / обновляются, теперь управляются с помощью Powershell. Затем предоставляется несколько более или менее раздражающих UI / Management Console, встроенных поверх этого ядра, которое часто работает медленно и, как кто-то отметил, не имеет доступных функций ... поэтому я не могу сказать, что у нас на самом деле есть большой выбор ^ ^

Оскар Дювеборн
источник
Посмотрите на этот небольшой скрипт powershell, чтобы создать свои сборки и ускорить работу всех ваших консолей на базе PowerShell
Джесси Вейгерт,
1

Powershell не идеален, но если вы использовали его, вы знаете, это довольно круто. Имея доступ ко всей библиотеке .net плюс встроенные командлеты (и создавайте свои собственные командлеты, используя PS в 2.0), это довольно круто.

Единственное, чего мне не хватает, - это хорошей IDE, которая, я уверен, когда-нибудь придет от MS. Прямо сейчас я использую PowerShell Plus от Idera и adminscripteditor, которые позволяют отлаживать и довольно крутые.

Я был в состоянии отучиться от VB довольно хорошо.

Мой самый большой проект на сегодняшний день с использованием posh - это использование powershellASP для создания базовой веб-страницы, которая запускает команды powershell и получает информацию о хосте vmware и виртуальной машине с более чем дюжины (бесплатных) хостов VMWare ESXi и отображает их в таблицах HTML. Я сделал это, потому что с бесплатной VMWare ESXi и без виртуального центра, нет другого способа получить в режиме реального времени обзор всех моих виртуальных машин в компании. PowershellASP - это бесплатный сторонний парсер, написанный для IIS и не поддерживаемый MS. Так что он может сделать некоторые ограниченные вещи прямо сейчас, и документация довольно скудна.


источник
Есть PowerGUI, и в PowerGUI используется ScriptEditor.exe, я не могу представить, как я могу жить без этого ...
Николас Дориер
Powershell 2 включает в себя отличный Powershell ISE (встроенный редактор скриптов). CTP 3 доступен, RTM уже в продаже, окончательный выпуск в октябре 2009 года.
Precipitous
1

У меня есть целая куча сценариев управления / инвентаризации, которые ищут в AD разные вещи и запрашивают их через WMI для получения важной статистики, такой как общие ресурсы на сервере, дисковое пространство, использованное дисковое пространство и т. Д.

Общие сценарии:

  1. Получить свободное / использованное дисковое пространство, оперативную память и т. Д.
  2. Запросите WMI для получения информации о BIOS, модели сервера и т. Д.
  3. Проверьте версию AV и убедитесь, что в ней есть определенные записи реестра.
  4. Аудит общих ресурсов на серверах Windows

Скрипты пользователя:

  1. Перечислите AD, захватывающий всех пользователей, и к каким группам они принадлежат, затем пишите в Excel или CSV
  2. Найти в данный момент авторизованных пользователей через TS и на консоли

У меня есть один, который перечисляет все гостевые машины VMWare на моих серверах ESX

У меня есть скрипт, который захватывает файлы через x дней и надежно удаляет их.

В основном я могу сделать то, что заняло около 200 строк VBScript и сделать это в 10 из PowerShell. Вы также можете делать вещи, которые вы просто не можете делать или делать хорошо в VBScript, например отправлять электронные письма с вложениями, что я регулярно делаю, чтобы посылать мне результаты моих сценариев. Также вы можете записывать значимые и уникальные записи в журнал событий с именами пользовательских служб и идентификаторами событий.

Это то, что я могу думать о макушке. Мой инструмент выбора теперь PowerShell, он просто облегчает жизнь.

По сути, он так же полезен для системного администратора, как сценарии Bash, для администратора Unix.

Zypher
источник
0

Я искал Poweshell для замены наших клиентских пакетных сценариев - работающих программ, сценариев входа в систему и т. Д.

Но обнаружил, что это добавило не менее 10 секунд к времени входа в систему - вот и все «настройки» на месте. Так что в итоге мы остановились на том, что использовали.

Баки
источник
Это не самая быстрая вещь в мире, но она может делать практически все. Если все, что вам нужно сделать, это подключить несколько дисков, то пакетные сценарии работают намного быстрее.
sysadmin1138
0

Не будучи разработчиком .NET, я ограниченно использую все связанные с .NET вкусности, которые PS позволяет вам использовать. Однако, будучи администратором Exchange (помимо всего прочего), интеграция PowerShell для Exchange 2007 является УДИВИТЕЛЬНОЙ. Наконец-то у меня появился надежный движок сценариев для моей почтовой системы; до сих пор он отправлял мне ежемесячную статистику по всем почтовым ящикам, определяя, кому назначены различные адреса электронной почты, в зависимости от времени суток, автоматически создавая и назначая разрешения для общих папок и балансируя пользователей между нашими двумя БД почтовых ящиков , Еще одна интересная вещь с точки зрения Ex07 состоит в том, что после того, как вы что-то сделаете в GUI, он представляет вам соответствующие команды PowerShell для того, что вы только что сделали. Скопируйте их, и в конечном итоге вы получите набор сценариев PS, которые могут с нуля изменить вашу среду Exchange.

RainyRat
источник
0

Автоматизация определенных вещей с проверками сервера, где я работаю (сбор основной информации из WMI и сбор ошибок и предупреждений из журналов событий).

Обработка журналов событий - это круто.

Недавно я написал скрипт для отключения всплывающего окна автоматического обновления, которое Foxit Reader включил по умолчанию для домена, на котором запущен скрипт. Он извлекает список компьютеров из AD, затем проверяет, работает ли он, и затем изменяет 1 на 0.

Одна вещь, которую я забыл!

У вас есть полный доступ к библиотекам .NET. Делать действительно сложные вещи с этим немного больно, но если у вас есть необходимость, это для вас.

оборота нонейдс
источник
0

Мы используем его для решения многих административных задач, так как в основном это магазин Microsoft. Некоторые сценарии просты, например, очистка старых файлов или дефрагментация машин и запись результатов. Один скрипт проверяет компьютеры, используя в основном WMI, и записывает результаты в базу данных. Он получает такие вещи, как аппаратное обеспечение (ЦП, ОЗУ, накопители и т. Д.), Информацию о сети, локальные пользователи, установленное программное обеспечение и данные профиля. Есть тот, который вызывает веб-сервис для отправки электронной почты. Я думаю, что в будущем он заменит остальные сценарии VBScript , которые все еще используются. Мы еще не используем его для задач Exchange или SQL Server.

Я с нетерпением жду следующей версии, которая будет иметь поддержку фоновых заданий, транзакций, улучшенную обработку исключений, новую ISE (интегрированную среду сценариев), улучшенную отладку и т. Д.

Bratch
источник
0

Мои администраторы Windows еще не используют PowerShell. Все они слышали об этом, но они не нашли время, чтобы ознакомиться с ним.

Я решил взглянуть на это сам. Исходя из фона оболочки Unix, я подумал, что в Windows наконец-то должна появиться настоящая среда программирования оболочки. Я думаю, что Microsoft сделала некоторые вещи с PowerShell хорошо, а некоторые не очень хорошо.

Хорошей стороной является их использование объектов в качестве посредника между командлетами в PowerShell. Это дает PowerShell такой уровень мощности, что текстовые сценарии нужно взломать, чтобы приступить к работе.

С другой стороны, они не используют большинство команд оболочки Unix. Таким образом, кривая обучения неоправданно крута и не помогает людям легко переходить с Unix на PowerShell или наоборот. Самое большее, что они делают - это определяют псевдонимы для некоторых командлетов PowerShell, таких как ls для псевдонимов Get-ChildItem, причем все параметры командной строки различны.

Просто мои два цента ...

user7286
источник
0

Это скорее ответ разработчика, но это реальный мир, и мы начнем его тестировать через несколько месяцев. Я начинаю изучать PowerShell для написания сценариев для переноса задач SQL Server в нашу среду непрерывной интеграции . Скрипты непрерывной интеграции будут запускаться в основном NAnt и MSBuild через JetBrains TeamCity .

Кроме того, я рассматриваю переход на PowerShell в качестве основной командной оболочки Windows для общего назначения и особенно для задач администрирования базы данных SQL Server.

Извините, у меня пока нет примеров кода, чтобы поделиться, потому что я все еще учусь! Я буду рад опубликовать некоторые, когда я делаю, хотя :)

Вот пример однострочного кода, на который я только что ответил на другой твой вопрос :) Но эй, для вики ...

Это будет список установленных исправлений:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix
squillman
источник
ура для powershell, очень жаль, что он не установлен по умолчанию на сервере 2003. Помогло расположение реестра!
Ник Кавадиас
0

Хотя это не самый простой язык сценариев, который можно выбрать (предполагается, что у него большой опыт работы с конвейерами), и у него есть свои странные возможности (дайте мне простую вещь, похожую на sed !), Я нахожу PowerShell довольно мощным. Не до уровня Bash или других оболочек Unix, но все же.

Я использую его для контроля за экспортом и импортом некоторых баз данных с предупреждениями по электронной почте на случай, если что-то пойдет не так, и выполняю некоторые рутинные пакетные операции.

Это, конечно, уже моя основная оболочка Windows, хотя на самом деле это не то, что «пиши меньше, делай больше». PowerShell имеет свое многословие (и наследование .NET), играя против него.

Berzemus
источник
0

Версия PowerShell 1.0 была сильно ограничена во многих аспектах, но версия 2.0 идет хорошо. По сравнению с пакетными сценариями он намного мощнее. Я на самом деле не использую его как оболочку, только для скриптов, поэтому мой опыт соответственно раскрашен. Мне не очень нравится синтаксис ( -eqпротив ==, -gtпротив >и т. Д.), Но я ценю возможность зайти в .NET, если мне нужно сделать что-то странное. Я думаю, что с версией 3.0 это будет здорово. Прямо сейчас я бы твердо отнес это к категории «выполняет свою работу».

Я использую его в основном для автоматизации развертывания кода. Это область, где она сияет над созданием чего-либо в C #. Связанные с оболочкой операции, такие как рекурсивное копирование каталогов и другие вещи, которые Bash-скрипты принимают как должное годами, значительно упрощают работу.

Peter Mortensen
источник