PowerShell? Você usa isso? Você pode me mostrar algumas coisas legais de administração de sistemas que eu posso fazer com isso? [fechadas]

44

Eu continuo lendo em todos os lugares que o PowerShell é o caminho do futuro. Quando foi lançado, eu fiz um monte de laboratórios virtuais, mas desde então eu ainda não o usei em um ambiente de produção. Eu sei que o dia virá quando eu estiver lidando com o sistema operacional onde ele já está instalado, então eu quero estar pronto.

Eu quero saber:

  1. Você usa isso?
  2. Qual foi o processo de "bootstrapping" para usar o PowerShell?
  3. Que tipo de tarefas de administração do sistema você criou com scripts?
  4. Sou um administrador de banco de dados do SQL Server. Quais são algumas coisas legais para fazer com isso?

Parece que todos concordam que a Microsoft está pressionando muito, mas ninguém está realmente usando isso ainda. Eu quero ouvir de administradores de sistemas que estão usando isso para fazer tarefas diárias e compartilhar alguns exemplos de código.

    
por Nick Kavadias 11.12.2014 / 21:49

22 respostas

34

A Microsoft está fazendo todo o possível para tornar o PowerShell a escolha de usuários avançados e escritores de automação em todos os lugares. Longe vão os dias de compilar código no .NET para fazer a mesma coisa, agora você só precisa do notepad.exe e do google. Somos grandes fãs disso no escritório, especialmente porque o Console de Gerenciamento do Exchange 2007 NÃO inclui tudo o que você pode fazer no PowerShell. A Microsoft deliberadamente falhou em implementar coisas que só são feitas de vez em quando, mais fáceis de serem desenvolvidas, o que certamente força seu uso se você tiver algo parecido com um ambiente complexo.

O gerenciamento da nova geração de produtos da Microsoft (Win7, Windows Server 2008, Exchange 2007/2010 e SQL Server 2008) possui ganchos do PowerShell muito ricos. Depois que o Remote Powershell (PowerShell 2.0 IIRC) for implantado no Server 2008 R2, ele se tornará ainda MAIS útil para os criadores de automação.

O que fizemos com isso:

  • Crie uma página da web para delegar determinadas tarefas administrativas aos usuários do suporte técnico. A página da Web dispara comandos executados no PowerShell. Coisas que faz:
    • Crie e exclua contas de usuário, incluindo o provisionamento de caixas de correio e diretórios pessoais do Exchange 2007
    • Desbloqueia contas bloqueadas
    • Criar / excluir grupos
    • Adicionar / remover usuários de grupos
    • Mover usuários entre lojas de e-mail
    • Definir senhas
  • Extraia extratos do sistema ERP e envie os dados do global-address-book para o Active Directory todas as noites.
  • Resolva o problema do LegacyExchangeDN que surgiu com a migração do Exchange 2003 para o Exchange 2007. Tive que adicionar um endereço X500 a todos os que costumavam estar no Exchange 2003. Um script do PowerShell razoavelmente curto o corrigiu.
  • Criação de "caixas de correio de grupo" com script (caixas de correio compartilhadas no Exchange em que vários usuários têm acesso à caixa de correio), um processo que seria de outra forma manual devido à natureza dos dados necessários antes de iniciá-los. Ele padronizou bastante a configuração dessas caixas de correio.
  • Criado um script que percorreu todas as máquinas de domínio redefinindo uma chave de registro específica e reiniciando um serviço. Demorou 18 horas para ser concluído, mas deu conta do recado.

Então, sim, o PowerShell estará conosco por um bom tempo.

EDIT : Adicionando um exemplo de código, uma vez que foi solicitado

$list=import-csv("groupusers.csv")
$lastseengroup=$list[0].group
$ADGroupPrefix="grp.netware."
$ADGroupSuffix="{redacted -- in the format of ,ou=groups,dc=domain,dc=domain,dc=domain}"
Clear-Variable memberlist
Clear-Variable unknownusers
foreach ($entry in $list) {
    if ($($entry.group) -ne $lastseengroup) {
        echo "stumbled across new group $($entry.group), committing changes to $lastseengroup"
        $newgroup=$ADgroupPrefix+$lastseengroup
        $newgroupdn='"'+"cn=$newgroup$ADGroupSuffix"+'"'
        echo "getting DN for $newgroup"
        $existinggroup=dsquery group domainroot -name $newgroup
        if (($existinggroup -ne $null)) {
            dsmod group $newgroupdn -chmbr $memberlist
        } else {
            dsadd group $newgroupdn -scope u -secgrp yes -members $memberlist -desc "Group imported from eDirectory"
        }
        Clear-Variable memberlist
    }
    $User=get-user $($entry.member) -ErrorAction SilentlyContinue
    if ($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 yes -members $memberlist

Isso leva um arquivo CSV criado com um script perl e atualiza um conjunto de grupos. Se o grupo já existir, ele substituirá a associação pelo especificado no arquivo. Se o grupo não existir, ele o criará. Esta é uma sincronização unidirecional. Além disso, não bastante em produção ainda, mas perto.

    
por 28.05.2009 / 07:53
17

Dado que os produtos de servidor da Microsoft serão habilitados para o PowerShell desde o início (acredito que a próxima versão do Exchange tenha todas configurações disponíveis através do PowerShell), e livros como PowerShell na prática descreve algumas ótimas maneiras de automatizar tarefas monótonas, acho razoável sugerir que o PowerShell será uma tecnologia predominante no Windows serverland por um tempo ainda.

    
por 28.05.2009 / 06:26
12

Eu recomendaria o Podcast # 162 de Scott Hanselman. Parece que todas as equipes de servidores da Microsoft são "forçadas" a fornecer cmdlets do PowerShell e também a seguir uma única sintaxe consistente.

Além disso, terceiros como o VMWare estão adotando

Em suma, acredito que o PowerShell, começando com o 2.0, esteja seriamente no negócio de substituir os arquivos em lote para todas as tarefas, exceto as mais triviais.

    
por 28.05.2009 / 11:15
10

Dez scripts do PowerShell que uso como administrador de banco de dados do SQL Server (todos são descritos / publicados no meu blog ):

  1. Verifique o espaço em disco em todos os SQL Servers e carregue os dados em uma tabela SQL
  2. Executa relatórios de permissões em todos os servidores SQL de produção e carrega dados em um banco de dados SQL
  3. Descubra todos os clusters, nós e virtuais do Windows Server 2003 na rede e carregue em tabelas SQL
  4. Descubra todos os bancos de dados em todos os SQL Servers, conforme definido no SCCM e carregue em uma tabela SQL
  5. Crie um scorecard de backup do SQL Server carregando informações de backup em todos os SQL Servers para uma tabela SQL
  6. Verifique se o Mecanismo de Descarregamento de TCP está desabilitado no Windows Server 2003 SP2 (isso é um matador de desempenho para muitos SQL Servers)
  7. Verificar os alinhamentos da Partição de Disco (também um matador de desempenho se os discos estiverem alinhados incorretamente)
  8. Copiar tabelas SQL de um servidor para outro
  9. Cópia recursiva de todos os pacotes SSIS usando um Armazenamento MSDB de um servidor para outro, incluindo a estrutura de pastas
  10. Crie meu próprio visualizador de dependência de objeto gráfico
por 11.12.2014 / 22:13
8

Que tipo de tarefas administrativas você criou com scripts?

monitoramento de aplicativo / serviço: obtenha números de desempenho chave de (Remote) EventLog e Stored Procedures e exiba-os a partir de um único arquivo de lote

Eu sou um DBA do SQL Server, me mostre algumas coisas legais para fazer com ele?

automssqlbackup : backup diário para MSSQL com rotação (diário = incremental, semanal + mensal = completo; manter 5 diários , 5 backups semanais), compactação, notificação por e-mail

    
por 31.05.2009 / 08:36
7

Tendo usado scripts shell unix em uma carreira anterior, passando para a administração do Windows Server, posso dizer que realmente aprecio o powershell - não tenho tempo nem habilidade para aprender muita sintaxe arcana e fiquei agradavelmente surpreso que muitos scripts do powershell podem ser escritos com uma linguagem muito direta ... leve para o que vale a pena, já que eu estava acostumada com o ksh !!

Eu prevejo que será por um longo tempo.

    
por 28.05.2009 / 06:31
7

Eu achei legal: com o SQL Server 2008, você obtém novas extensões do PowerShell que permitem que você navegue por bancos de dados SQL como o seu sistema de arquivos local ou registro.

Depois de instalar as ferramentas do SQL Server Client, você pode abrir qualquer banco de dados no PowerShell (através do menu de contexto do botão direito) e brincar com ele de uma maneira orientada a objeto:

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

Observe que a primeira linha simplesmente altera o prompt para que não demore muito.

Espero que, além disso, seja evidente o que está acontecendo aqui:)

    
por 08.09.2010 / 13:46
5

O SQL Server 2008 agora tem opções de contexto do PowerShell no Management Studio, portanto, mais do que o Exchange o está adotando. Além disso, pense nisso como o substituto do DOS, já que o MS estava pensando como eles simplesmente não podem melhorar a segurança do DOS para problemas de compatibilidade, então eles criaram algo novo e wammo, problema resolvido!

    
por 28.05.2009 / 06:42
4

Eu também sou um DBA e um script de longo tempo, voltando para os arquivos em lote do DOS, V3.3! Movido para o VB Script, mas PS é muito poderoso. Dê uma olhada - Desculpe, não posso postar o link, já que sou um novo usuário. Consegui isso no Blog da Otto Helweg. É uma ferramenta de inventário de software barata e alegre.

  • 1- Puxa a lista de computadores para consultar a partir de uma tabela de banco de dados
  • 2- Adiciona os dados e a hora atuais ao resultado
  • 3- Registra os resultados da auditoria em um banco de dados

Exemplo de script do 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()

Dave J

    
por 01.06.2009 / 19:19
3

As tarefas a seguir são executadas pela minha equipe regularmente com o PowerShell

  • lista a memória disponível em todos os nós de nossos clusters do Hyper-V.
  • Gerenciar um arquivador Netapp
  • Fornecer novas máquinas virtuais do Hyper-V
  • Gravar e ler nas listas do SharePoint de forma programática

Dia a dia, tenho um PS sempre ativo e uso-o para qualquer tarefa que usei para usar o CMD.

Aqui estão alguns exemplos de código para ler as listas do SharePoint. Eu uso serviços da Web do SharePoint e o novo cmdlet "New-WebServiceProxy" no 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 tem uma grande postagem no blog sobre como usar os Serviços Web do SharePoint que usei como base para criar todas as minhas funções. Ele tem um ótimo script new-webservice.ps1 que você pode usar se ainda estiver usando o PowerShell V1.

Além disso, aqui está a função base que usei para obter a memória disponível nos nós do meu cluster

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

}
    
por 12.06.2009 / 22:15
2

Eu experimentei o PowerShell para um pequeno projeto em funcionamento - uma migração diária de um subconjunto de ~ 600 usuários e ~ 200 grupos do corporativo. AD para um sistema UNIX antigo usando arquivos CSV . Foi-me oferecido um script VBScript de 500 linhas (!), Que retirou um único grupo e seus usuários como ponto de partida.

Descobriu-se que um script PowerShell de ~ 20 linhas poderia fazer a coisa toda ...

Como usuário * NIX (servidor e cliente), fiquei agradavelmente surpreendido com o PowerShell. Mesmo que você conheça apenas um pequeno subconjunto de comandos, você pode fazer um trabalho realmente poderoso com ele. Eu só preciso de acesso remoto SSH <-a> (como) ...

    
por 11.12.2014 / 22:16
1

Como não posso usá-lo? Todos os aplicativos de servidor da Microsoft que estão saindo / sendo atualizados agora são gerenciados usando o Powershell. Alguns interface UI / Management Console, mais ou menos irritantes, são fornecidos construídos em cima deste núcleo, que muitas vezes é lento e, como alguém apontou, faltam recursos disponíveis ... então não posso dizer que temos muita escolha, na verdade ^ ^

    
por 28.05.2009 / 11:39
1

O Powershell não é perfeito, mas se você o usou, sabe que é muito legal. Ter acesso a toda a biblioteca .net mais os cmdlets internos (e criar seus próprios cmdlets usando PS em 2.0) é muito interessante.

A única coisa que eu acho que está faltando é uma boa IDE para a qual eu tenho certeza que virá da MS algum dia. Agora eu uso o powershell plus e o adminscripteditor da Idera que permitem a depuração e são muito legais.

Eu consegui me livrar muito bem do VB.

Meu maior projeto até hoje é o uso do "powershellASP" para criar uma página da Web básica que executa comandos do powershell e extrai informações do host VM e VMs de mais de uma dúzia de hosts VMWare ESXi (gratuitos) e os exibe em HTML tabelas. Eu fiz isso porque com o VMWare ESXi livre e nenhum centro virtual, não há outra maneira de obter uma visão geral em tempo real de todas as minhas VMs na empresa. O PowershellASP é um analisador de terceiros gratuito escrito para o IIS e não suportado pelo MS. Por isso, pode fazer algumas coisas limitadas no momento e a documentação é bastante esparsa.

    
por 29.05.2009 / 20:14
1

Eu tenho um monte de scripts de gerenciamento / inventário que pesquisam pelo AD para coisas diferentes e os consultam sobre o WMI para estatísticas vitais, como compartilhamentos no servidor, espaço em disco, espaço em disco usado, etc.

Scripts gerais:

  1. Obtenha espaço em disco gratuito / usado, RAM, etc.
  2. Consultar WMI para informações de BIOS, modelo de criação de servidor, etc.
  3. Verifique a versão do AV e verifique se há determinadas entradas do Registro
  4. Auditoria de compartilhamentos em servidores Windows

User Scripts:

  1. Enumerar o AD pegando todos os usuários e a quais grupos eles pertencem e depois gravar no Excel ou CSV
  2. Localizar usuários conectados no momento Via TS e no console

Eu tenho um que enumera todas as máquinas convidadas VMWare nos meus servidores ESX

Eu tenho um script que captura arquivos após x dias e os exclui com segurança.

Basicamente eu posso fazer o que levou cerca de 200 linhas de VBScript e fazê-lo em 10 do PowerShell. Você também pode fazer coisas que você não pode fazer ou fazer bem em VBScript - como enviar e-mails com anexos - que eu faço regularmente para me enviar os resultados dos meus scripts. Além disso, você pode gravar entradas significativas e exclusivas no log de eventos com nomes de serviço personalizados e IDs de evento.

Isso é o que eu posso pensar em cima da minha cabeça. Minha ferramenta de escolha é o PowerShell agora, apenas facilita a vida.

Basicamente, é quase tão útil para um administrador de sistema quanto o script Bash é para um administrador Unix.

    
por 11.09.2010 / 03:52
0

Eu estava olhando para poweshell para substituir nossos scripts de lote do cliente - executando programas, scripts de logon, etc.

Mas descobri que ele adicionou pelo menos 10 segundos para o tempo de logon - isso com todos os "ajustes" no lugar. Então acabamos ficando com o que estávamos usando.

    
por 28.05.2009 / 11:04
0

Não sendo um desenvolvedor .NET, tenho uso limitado para todos os produtos relacionados ao .NET que o PS permite que você use. No entanto, sendo um administrador do Exchange (entre outras coisas), a integração do PowerShell para o Exchange 2007 é IMPRESSIONANTE. Eu finalmente tenho um mecanismo de script confiável para o meu sistema de email; até agora, tenho que me enviar estatísticas mensais nas caixas de correio de todos, ajustando a quem vários endereços de e-mail são atribuídos, dependendo da hora do dia, criando e atribuindo automaticamente permissões em pastas públicas e usuários de balanceamento de carga entre nossos dois bancos de dados de caixa de correio. . A outra coisa interessante do ponto de vista do Ex07 é que depois de fazer qualquer coisa na GUI, ele apresenta os comandos relevantes do PowerShell para o que você acabou de fazer. Copie-os e, eventualmente, você terá um conjunto de scripts PS que podem refazer seu ambiente do Exchange do zero.

    
por 01.06.2009 / 17:36
0

Automatizando determinadas coisas com verificações do servidor em que trabalho (reunindo informações básicas do WMI e reunindo erros e avisos dos logs de eventos).

A manipulação dos registros de eventos é impressionante.

Recentemente, escrevi um script para desabilitar o pop-up de atualização automática que o Foxit Reader ativou por padrão em um domínio no qual o script é executado. Ele puxa uma lista de computadores do AD e então testa para ver se está ativo, então muda um para 0.

Uma coisa que eu esqueci!

Você praticamente tem acesso total às bibliotecas .NET. É um pouco trabalhoso fazer coisas realmente complicadas, mas se você tem necessidade, está lá para você.

    
por 01.06.2009 / 17:39
0

Nós o usamos para algumas tarefas administrativas, sendo uma loja na maioria das vezes da Microsoft. Alguns scripts são simples, como limpar arquivos antigos ou desfragmentar máquinas e gravar os resultados. Um script audita computadores usando principalmente o WMI e registra os resultados em um banco de dados. Ele obtém coisas como hardware (CPU, RAM, unidades, etc.), informações de rede, usuários locais, software instalado e informações de perfil. Há um que chama um serviço da web para enviar e-mail. Acho que no futuro ele substituirá o restante dos scripts VBScript que ainda estão sendo usados. Ainda não estamos usando para tarefas do Exchange ou do SQL Server.

Estou ansioso pela próxima versão, que terá suporte para trabalhos em segundo plano, transações, melhor tratamento de exceções, um novo ISE (Integrated Scripting Environment), melhor depuração, etc.

    
por 11.12.2014 / 21:55
0

Meus administradores do Windows ainda não usam o PowerShell. Todos já ouviram falar disso, mas não tiveram tempo de se familiarizar com isso.

Eu decidi dar uma olhada em mim mesmo. Vindo de um fundo de shell Unix eu pensei que o Windows deve finalmente ter um ambiente de programação shell real. Eu acho que a Microsoft fez algumas coisas bem com o PowerShell e algumas coisas não tão bem.

O lado bom é o uso de objetos como intermediário entre os cmdlets no PowerShell. Isso traz um nível de poder para o PowerShell que o script baseado em texto precisa mudar para o trabalho.

No lado negativo, eles não aproveitam muito dos comandos shell do Unix. Portanto, a curva de aprendizado é desnecessariamente íngreme e não ajuda as pessoas a migrar facilmente do Unix para o PowerShell ou vice-versa. O máximo que eles fazem é definir aliases para alguns dos cmdlets do PowerShell, como o ls que faz o alias Get-ChildItem com todas as opções de linha de comando diferentes.

Apenas meus dois centavos ...

    
por 11.12.2014 / 22:00
0

Esta é mais uma resposta do desenvolvedor, mas é do mundo real e vamos começar a testar isso em algum momento nos próximos meses. Estou começando a aprender o PowerShell para criar scripts para levar as tarefas do SQL Server ao nosso ambiente integração contínua . Os scripts de integração contínua serão executados principalmente por NAnt e MSBuild via JetBrains TeamCity .

Além disso, estou procurando migrar para o PowerShell como meu principal shell de comando do Windows para fins gerais e especialmente para tarefas de administração de banco de dados do SQL Server.

Desculpe, ainda não tenho amostras de código para compartilhar, porque ainda estou aprendendo! Eu ficarei feliz em postar algumas quando eu fizer, no entanto:)

Aqui está um exemplo de código de linha única que eu acabei de responder outra pergunta sua com :) Mas ei, para o wiki ...

Isso listará os hotfixes instalados:

Get-ChildItem -Path “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix”
    
por 11.12.2014 / 22:07
0

Embora não seja a linguagem de script mais fácil de aprender (experiência sólida com pipes presumidos) e tenha sua própria influência de esquisitices (me dê um simples < um href="http://en.wikipedia.org/wiki/Sed"> sed - coisa parecida !!), acho PowerShell bastante poderoso. Não até o nível de Bash ou outros shells Unix, mas ainda assim.

Eu o uso para supervisionar algumas exportações e importações de banco de dados com avisos por e-mail caso as coisas corram mal e faça algumas operações rotineiras em lote.

Ele certamente já é meu shell principal do Windows, embora não seja realmente o tipo "escrever menos fazer mais". O PowerShell tem sua verbosidade (e a herança do .NET) jogando contra ele.

    
por 11.12.2014 / 22:08
0

A versão 1.0 do PowerShell foi extremamente limitada em muitos aspectos, mas a versão 2.0 está indo bem. Comparado a scripts em lote, é muito mais poderoso. Eu realmente não uso como shell, apenas para scripts, então minha experiência é colorida. Eu realmente não gosto da sintaxe ( -eq vs == , -gt vs > , etc.), mas eu aprecio ser capaz de cair em . NET se eu precisar fazer algo estranho. Eu acho que pela versão 3.0 será ótimo. Agora eu colocaria firmemente na categoria de "faz o trabalho".

Eu uso principalmente para automatizar a implantação de código. Esta é uma área onde brilha criando algo em C #. As operações relacionadas ao shell, como a cópia do diretório recursivo e outras coisas que os roteiristas do Bash vêm tomando há anos, tornam as coisas muito mais fáceis.

    
por 11.12.2014 / 22:10