PowerShell? Ви цим користуєтесь? Чи можете ви показати мені кілька цікавих речей системи управління, які я можу зробити з цим? [зачинено]


45

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

Я хочу знати:

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

Схоже, всі згодні з тим, що Microsoft наполегливо наполягає на цьому, але ще ніхто їх не використовує. Я хочу почути від системних адміністраторів, які використовують його для виконання завдань кожного дня та обміну деякими зразками коду.


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. Як тільки віддалений Powershell (PowerShell 2.0 IIRC) буде розгорнуто з Server 2008 R2, він стане навіть БОЛЬШО корисним для авторів автоматизації.

Що ми зробили з цим:

  • Створіть веб-сторінку, щоб делегувати певні завдання адміністратора, щоб допомогти користувачам служб. Веб-сторінка запускає команди, які виконуються в PowerShell. Що робить:
    • Створюйте та видаляйте облікові записи користувачів, включаючи надання поштових скриньок Exchange та домашніх каталогів
    • Розблокує заблоковані рахунки
    • Створення / видалення груп
    • Додавання та видалення користувачів із груп
    • Переміщення користувачів між магазинами пошти
    • Встановлення паролів
  • Візьміть витяги з ERP-системи та щодня вносьте дані глобальної адресної книги в Active Directory.
  • Вирішіть проблему LegacyExchangeDN, пов'язану з міграцією Exchange 2003 до міграції Exchange 2007. Довелося додати адресу X500 усім, хто раніше був на Exchange 2003. Досить короткий сценарій PowerShell виправив це.
  • Створення сценаріїв "групових поштових скриньок" (спільних поштових скриньок в Exchange, де кілька користувачів мають доступ до поштової скриньки), інакше вручну обробляється через характер потрібних нам даних, перш ніж викинути їх. Це значно стандартизувало налаштування цих поштових скриньок.
  • Створив сценарій, який пройшов через усі доменні машини, скинувши певний ключ реєстру та перезапустивши послугу. На це пішло 18 годин, але це було виконано.

Так, так, PowerShell буде з нами ще довгий час.

EDIT : Додавання зразка коду з моменту його запиту

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

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

Для цього потрібен файл CSV, створений за допомогою сценарію perl, і оновлює набір груп. Якщо група вже існує, вона замінює членство на вказане у файлі. Якщо групи не існує, вона створює її. Це одностороння синхронізація. Також ще не зовсім у виробництві, але близько.


6
віддалений powerhell !! ти маєш на увазі як ssh!?! про час!
Нік Кавадіас

2
Як ви запускаєте скрипти повноважень із веб-сайту, чи використовуєте сценарії powershell як мову веб-програмування? Ви використовуєте повноваженняASP? ти запускаєш свої сценарії як користувач IIS?
Квентін

17

Зважаючи на те, що серверні продукти Microsoft з самого початку будуть включені PowerShell (я вважаю, що наступна версія Exchange має всі конфігурації, доступні через PowerShell), і що такі книги, як PowerShell in Practice, описують деякі чудові способи автоматизації монотонних завдань в іншому випадку, я думаю розумно припустити, що PowerShell ще деякий час буде поширеною технологією в серверній системі Windows.


ця книга все ще знаходиться в бета-версії / пишеться
Нік Кавадіас,

Так, так - але ви все одно можете придбати його зараз і отримати швидкий доступ до вмісту. І там є багато речей із обслуговування сервера :)
moobaa,

4
Exchange є всім PowerShell з Exchange 2007. OCS буде повністю PowerShell здатний в наступному випуску; більшість продуктів System Center або повністю підтримують її, або будуть в наступних випусках. PowerShell нікуди не їде.
paulr

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 SP2 (це вбивця продуктивності для багатьох серверів SQL)
  7. Перевірте вирівнювання дискового розділу (також вбивця продуктивності, якщо диски вирівняні неправильно)
  8. Скопіюйте таблиці SQL з одного сервера на інший
  9. Recursivley копіює всі пакети SSIS, використовуючи сховище MSDB, з одного сервера на інший, включаючи структуру папок
  10. Створіть власний переглядач залежності графічного об'єкта

8

Які завдання адміністратора ви написали з ним?

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

Я DBA SQL Server, покажіть мені якісь цікаві речі?

automssqlbackup : щоденне резервне копіювання для MSSQL з обертанням (щоденний = поступовий, тижневий + щомісячний = повний; зберігайте 5 щоденних, 5 тижневих резервних копій), завантажуючи повідомлення, повідомлення електронною поштою


+1 для автоматизації всього процесу резервного копіювання MSSQL.
Андрій Ронеа

Так ... Powershell - це чисте золото для автоматизації складних резервних копій у SQL Server. Ми використовуємо його для копіювання та шифрування погодинних резервних копій, а потім надсилаємо файли в Amazon S3 для зберігання в офсетному місці
Грег Брей

7

Використовуючи сценарії оболонки unix в попередній кар’єрі, потім перейшовши на адміністрування сервера Windows, я можу сказати, що я дуже, дуже вдячний powershell - не маю ні часу, ні можливості навчитися занадто багато таємного синтаксису і був приємно здивований, що багато сценарії повноважень можуть бути написані дуже простою мовою ... візьміть те, що варті того, як я звик кшш !!

Я прогнозую, що це буде довгий час.


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)}

Зверніть увагу, що перший рядок просто змінює підказку, так що це не так довго.

Сподіваюся, крім того, що зрозуміло, що тут відбувається :)


+1 Вау, це дуже корисно. Дякую!
jftuga

5

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


4

Я теж DBA і давній сценарій, повертаючись до пакетних файлів DOS, V3.3! Перейшов до сценарію VB, але 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
  • Забезпечте нові віртуальні машини 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)

У Oisin Grehan є чудова публікація в блозі про використання веб-сервісів Sharepoint, яку я використовував як базу для створення всіх своїх функцій. У нього є дивовижний сценарій 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- подібних файлів. Мені запропонували 500-рядковий сценарій VBScript (!), Який вивів одну групу та її користувачів як вихідну точку.

Виявилося, ~ 20-рядковий сценарій PowerShell міг би зробити все це ...

Як користувач * NIX (сервер та клієнт), я був дуже приємно здивований PowerShell. Навіть якщо ви просто знаєте невеликий підмножину команд, ви можете зробити дійсно потужну роботу з ним. Мені просто потрібен віддалений доступ SSH (-подібний) ...


пошук psremoting
Сем

1

Як я не можу ним користуватися? Усі серверні програми Microsoft, які виходять / оновлюються, тепер управляються за допомогою Powershell. Деякі більш-менш дратівливі консолі користувальницького інтерфейсу / управління потім надаються вбудованими вершинами цього ядра, яке часто є повільним і, як хтось вказував, не має доступних функцій ... тому я не можу сказати, що у нас є великий вибір насправді ^ ^


Ознайомтеся з цим маленьким сценарієм повноважень, щоб представити свої збори та пришвидшити всі консолі, засновані на повноваженнях
Jesse Weigert

1

Powershell не є ідеальним, але якщо ви використовували його, то знаєте, що це дуже круто. Маючи доступ до всієї бібліотеки .net плюс вбудованих командлетів (і робити власні командлети за допомогою PS в 2.0), це дуже здорово.

Єдине, що, на мою думку, не вистачає, - це хороший IDE для нього, який я впевнений, що колись прийде з MS. Зараз я використовую плюс ідеї та ідеальний адміністратор, який дозволяє налагоджувати та досить круто.

Я зміг досить добре відучити себе від VB.

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


Є PowerGUI, і в powergui використовують ScriptEditor.exe, я не уявляю, як я можу жити без цього ...
Nicolas Dorier

Powershell 2 включає чудовий Powershell ISE (інтегрований редактор сценаріїв). CTP 3 доступний, RTM вже зараз, остаточний реліз у жовтні 2009 р.
Швидкий

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 зараз, це просто полегшує життя.

По суті, він так само корисний системному адміністратору, як сценарій Баша для адміністратора Unix.


0

Я дивився на порошок, щоб замінити наші клієнтські пакетні сценарії - запущені програми, сценарії входу тощо.

Але виявив, що це додало щонайменше 10 секунд до часу входу в систему - ось з усіма "налаштуваннями" на місці. Таким чином, ми залишилися з тим, що ми використовували.


Це не найшвидша річ у світі, але вона може робити майже все. Якщо все, що вам потрібно зробити, це скласти кілька дисків, то пакетні сценарії набагато швидше.
sysadmin1138

0

Не будучи розробником .NET, я обмежений доступ до всіх продуктів, пов'язаних з .NET, які PS дозволяє вам використовувати. Однак, будучи адміністратором Exchange (серед іншого), інтеграція PowerShell для Exchange 2007 є ДУЖЕВЕ. Нарешті у мене є надійний механізм сценаріїв для моєї поштової системи; поки що я отримую щомісячні статистичні дані по всіх поштових скриньках кожного користувача, регулюючи, кому призначаються різні адреси електронної пошти залежно від часу доби, автоматично створюючи та призначаючи дозволи для публічних папок та користувачів, які врівноважують завантаження між нашими двома базами даних поштової скриньки . Інша класна річ з точки зору Ex07 - це те, що ви зробите що-небудь в графічному інтерфейсі, він подає вам відповідні команди PowerShell для того, що ви тільки що зробили. Скопіюйте їх, і ви, зрештою, отримаєте набір PS-скриптів, які зможуть відновити ваше середовище Exchange з нуля.


0

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

Ця робота з журналами подій є приголомшливою.

Нещодавно я написав сценарій, щоб відключити спливаюче вікно автоматичного оновлення, яке Foxit Reader включив за замовчуванням у домені, на якому запущений сценарій. Він витягує список комп’ютерів з AD, потім тестує, щоб перевірити, чи є його, то він змінює 1 на 0.

Одне я забув!

Ви майже повністю маєте доступ до бібліотек .NET. Трохи болісно робити з цим справді складні речі, але якщо у вас є потреба, це для вас.


0

Ми використовуємо його для досить багатьох завдань адміністратора, будучи в основному магазином Microsoft. Деякі сценарії прості, як очищення старих файлів або дефрагментація машин та запис результатів. Один сценарій перевіряє комп'ютери, використовуючи здебільшого WMI і записує результати в базу даних. Він отримує такі речі, як апаратне забезпечення (процесор, оперативна пам'ять, диски тощо), мережева інформація, місцеві користувачі, встановлене програмне забезпечення та інформація про профіль. Є той, хто закликає веб-службу для надсилання електронної пошти. Я думаю, що в майбутньому він замінить решту VBScript сценаріїв , які все ще використовуються. Ми ще не використовуємо його для завдань Exchange або SQL Server.

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


0

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

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

З хорошого боку - їх використання об'єктів як посередника між командлетами в PowerShell. Це приносить потужність PowerShell, що текстові сценарії повинні зламати навколо, щоб приступити до роботи.

З негативної сторони вони дійсно не використовують багато команд оболонки Unix. Тож крива навчання надмірно крута і не допомагає людям легко переходити з Unix до PowerShell або навпаки. Найбільш вони роблять це аліаси для деяких з команд Powershell , такі як Ls алиасинг Get-ChildItem з усіма ключами командного рядка , відрізнятися від інших.

Всього два мої центи ...


0

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

На додаток до цього, я переглядаю перехід на PowerShell як основну командну оболонку Windows для загальних цілей, особливо для завдань адміністрування баз даних SQL Server.

Вибачте, я ще не маю ділитися зразками коду, тому що я все ще вчуся! Я буду радий публікувати деякі, коли я це роблю :)

Ось єдиний зразок кодового рядка, на який я щойно відповів на інше ваше запитання :) Але ей, для вікі ...

Тут буде вказано список встановлених виправлень:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix

Ура для полномочий, шкода, що він не встановлений за замовчуванням на сервері 2003 року. Місце реєстру допомогло, хоча!
Нік Кавадіас

0

Хоча це не найлегший мову сценаріїв , щоб підібрати (твердий досвід роботи з трубами передбачуваних) і має свої власні важелі дивацтв (дай мені простий СЄПН -як штучки !!), я знаходжу PowerShell досить потужним. Не до рівня Баша або інших оболонок Unix, але все ж.

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

Це, безумовно, вже є моєю основною оболонкою Windows, хоча насправді це не такі речі, як "писати менше робити більше". PowerShell має свою багатослівність (і .NET спадщину), що грає проти неї.


0

Версія PowerShell 1.0 була дуже обмежена в багатьох аспектах, але версія 2.0 ідеально підходить. У порівнянні з пакетними сценаріями він набагато потужніший. Я насправді не використовую його як оболонку, лише для сценаріїв, тому мій досвід відповідно кольоровий. Мені не дуже подобається синтаксис ( -eqvs ==, -gtvs >тощо), але я ціную, що можу потрапити в .NET якщо мені потрібно зробити щось дивне. Я думаю, що до версії 3.0 це буде чудово. Зараз я б чітко ставлюся до категорії "виконує роботу".

Я використовую його в основному для автоматизації розгортання коду. Це область, де вона світиться над створенням чогось у C #. Операції, пов’язані з оболонкою, такі як рекурсивна копія каталогів та інші речі, які Баш-скриптери протягом багатьох років приймають як належне, роблять речі набагато простішими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.