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

45

Continuo lendo em todos os lugares que o PowerShell é o caminho do futuro. Quando foi lançado, eu fiz vários laboratórios virtuais, mas desde então ainda não o uso em um ambiente de produção. Sei que chegará o dia em que estou lidando com sistemas operacionais onde ele já está instalado, por isso quero estar pronto.

Eu quero saber:

  1. Você usa isso?
  2. Qual foi o seu processo de 'inicialização' usando o PowerShell?
  3. Que tipo de tarefas de administração do sistema você programou?
  4. Sou administrador de banco de dados do SQL Server. Quais são algumas coisas legais a fazer com isso?

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

Nick Kavadias
fonte
JScript está morto?
Sophie Alpert
7
Tente não ser um troll com suas manchetes enganosas na próxima vez.
21419 Jaykul
Talvez seja porque às vezes eu gostaria que desaparecesse como jscript. Sou apenas eu ou é muito feio e detalhado?
27410 Nick Kavadias

Respostas:

34

A Microsoft está fazendo todo o possível para tornar o PowerShell a escolha de usuários avançados e gravadores de automação em todos os lugares. Já se foram os dias de compilação de 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, principalmente porque o Console de Gerenciamento do Exchange 2007 NÃO inclui tudo o que você pode fazer no PowerShell. A Microsoft falhou deliberadamente na implementação de coisas que são feitas apenas de vez em quando, e são mais fáceis de desenvolver dessa maneira, o que obriga totalmente 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, SQL Server 2008) possui ganchos do PowerShell muito ricos. Uma vez implantado o PowerShell Remoto (PowerShell 2.0 IIRC) com o Server 2008 R2, ele se tornará ainda MAIS útil para os gravadores 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 que são executados no PowerShell. Coisas que faz:
    • Criar e excluir 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 correio
    • Definir senhas
  • Faça extrações do sistema ERP e envie dados do catálogo de endereços global 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. Tinha que adicionar um endereço X500 a todos os que estavam no Exchange 2003. Um script do PowerShell bastante curto o corrigiu.
  • Criação de scripts de "caixas de correio de grupo" (caixas de correio compartilhadas no Exchange, onde vários usuários têm acesso à caixa de correio), um processo manual, devido à natureza dos dados que precisamos antes de começar. Padronizou bastante a configuração dessas caixas de correio.
  • Criou um script que percorreu todas as máquinas doma redefinindo uma chave de registro específica e reiniciando um serviço. Demorou 18 horas para ser concluído, mas o trabalho foi concluído.

Então, sim, o PowerShell estará conosco por algum 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 = "{redigido - no formato, ou = groups, dc = domínio, dc = domínio, dc = domínio}"
Lista de membros Clear-Variable
Utilizadores desconhecidos de variável clara
foreach ($ entrada na lista $) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo "tropeçou no novo grupo $ ($ entry.group), enviando alterações para $ lastseengroup"
        $ newgroup = $ ADgroupPrefix + $ lastseengroup
        $ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
        echo "obtendo DN para $ newgroup"
        $ existinggroup = dsquery group domainroot -name $ newgroup
        if (($ existinggroup -ne $ null)) {
            dsmod group $ newgroupdn -chmbr $ memberlist
        } outro {
            dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Grupo importado do eDirectory"
        }
        Lista de membros Clear-Variable
    }
    $ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
    if ($ User.isvalid) {
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
    } outro {
        $ unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ lastseengroup = $ ($ entry.group)

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

Isso pega um arquivo CSV criado com um script perl e atualiza um conjunto de grupos. Se o grupo já existir, substitui a associação pela especificada no arquivo. Se o grupo não existir, ele será criado. Esta é uma sincronização unidirecional. Além disso, ainda não está em produção, mas está próximo.

sysadmin1138
fonte
6
PowerShell remoto !! você quer dizer como ssh!?! estava na hora!
25430 Nick Kavadias
2
Como você executa scripts do powershell em um site, usa scripts do powershell como linguagem de programação da web? você está usando o powershellASP? você está executando seus scripts como usuário do IIS?
Quentin
17

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

moobaa
fonte
que o livro ainda está em beta / sendo escrito
Nick Kavadias
Sim, é - mas você ainda pode comprá-lo agora e obter acesso antecipado ao conteúdo. E há toneladas de material servidor de manutenção em lá :)
moobaa
4
O Exchange tem sido todo o PowerShell desde o Exchange 2007. O OCS será totalmente compatível com o PowerShell em sua próxima versão; a maioria dos produtos System Center oferece suporte completo ou será oferecida nas próximas versões. O PowerShell não vai a lugar nenhum.
Paulr
12

Eu recomendo 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 sintaxe única e consistente.

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

Em resumo, acredito que o PowerShell a partir do 2.0 esteja seriamente no negócio de substituir arquivos em lote por todas as tarefas, exceto as mais triviais.

Michael Stum
fonte
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 servidores SQL e carregue dados em uma tabela SQL
  2. Executar relatórios de permissões em todos os servidores SQL de produção e carregar 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 servidores SQL em uma tabela SQL
  6. Verifique se o TCP Offload Engine está desabilitado no Windows Server 2003 SP2 (este é um fator de desempenho para muitos servidores SQL)
  7. Verificar alinhamentos da partição de disco (também prejudicam o desempenho se os discos estiverem alinhados incorretamente)
  8. Copie tabelas SQL de um servidor para outro
  9. Recursiva copiar todos os pacotes SSIS usando um armazenamento MSDB de um servidor para outro, incluindo a estrutura de pastas
  10. Criar meu próprio visualizador de dependência de objeto gráfico
Chad Miller
fonte
8

Que tipo de tarefas administrativas você programou?

monitoramento de aplicativos / serviços: obtenha os principais números de desempenho de EventLog (remoto) e procedimentos armazenados e os exiba a partir de um único arquivo em lote

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

automssqlbackup : backup diário para MSSQL com rotação (diário = incremental, semanal + mensal = completo; mantenha 5 backups diários, 5 backups semanais), fechando, notificação por email

devio
fonte
+1 para automatizar todo o processo de backup do MSSQL.
Andrei Rînea
Sim ... O Powershell é ouro puro para automatizar backups complexos no SQL Server. Nós a usamos para zip e criptografar backups de hora em hora e, em seguida, enviar os arquivos para o Amazon S3 para armazenamento externo: codeblog.theg2.net/2010/02/...
Greg Bray
7

Tendo usado scripts shell unix em uma carreira anterior e depois migrando para a administração de servidores Windows, posso dizer que aprecio muito o PowerShell - não tenho tempo nem capacidade de aprender muita sintaxe arcana e fiquei agradavelmente surpreso com o fato de de scripts do PowerShell podem ser escritos com uma linguagem muito direta ... entenda o que vale a pena como eu estava acostumado com o ksh !!

Eu prevejo que vai durar muito tempo.

Com fio
fonte
7

Eu pensei que isso era legal: com o SQL Server 2008, você obtém novas extensões do PowerShell que permitem navegar nos bancos de dados SQL exatamente como o seu sistema de arquivos ou registro local.

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 objetos:

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 tanto.

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

Lex
fonte
+1 Uau, isso é bastante útil. Obrigado!
jftuga
5

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

SQLGuyChuck
fonte
4

Eu também sou um DBA e roteirista de longa data, voltando aos arquivos em lotes do DOS, V3.3! Movido para o VB Script, mas o PS é muito poderoso. Dê uma olhada - Desculpe, não posso postar o link, pois sou um novo usuário. Entendi isso no Blog de Otto Helweg. É uma ferramenta de inventário de software barata e alegre.

  • 1- Puxa a lista de computadores para consultar de uma tabela de banco de dados
  • 2- Adiciona os dados e 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

Dave Jackson
fonte
3

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

  • listar a memória disponível em todos os nós dos nossos clusters Hyper-V.
  • Gerenciar um arquivador Netapp
  • Provisione novas máquinas virtuais Hyper-V
  • Gravar e ler de listas do SharePoint programaticamente

Dia a dia, eu tenho um prompt do PS o tempo todo e o uso para qualquer tarefa que eu costumava usar o CMD.

Aqui estão alguns exemplos de código para ler Listas de Sharepoint. 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 um ótimo post sobre o uso do Sharepoint Web Services que eu usei como base para criar todas as minhas funções. Ele possui um script new-webservice.ps1 incrível que você pode usar se ainda estiver usando o PowerShell V1.

Além disso, aqui está a função básica que eu 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 {}    

}
Andy Schneider
fonte
Tem algum código de amostra que você deseja compartilhar? Estou particularmente interessado em ler e escrever listas do SharePoint.
287 Brian Brian
2

Tentei o PowerShell para um pequeno projeto no trabalho - uma migração diária de um subconjunto de ~ 600 usuários e ~ 200 grupos do AD corporativo para um sistema UNIX antigo usando arquivos semelhantes a CSV . Me ofereceram um script VBScript de 500 linhas (!) Que selecionou um único grupo e seus usuários como ponto de partida.

Acabou que um script do PowerShell de ~ 20 linhas poderia fazer a coisa toda ...

Como usuário * NIX (servidor e cliente), fiquei muito agradavelmente surpreendido com o PowerShell. Mesmo se você conhecer apenas um pequeno subconjunto de comandos, poderá fazer um trabalho realmente poderoso com ele. Eu só preciso de acesso remoto SSH (como)

Peter Mortensen
fonte
consulta psremoting
Sam
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. Uma interface do usuário / console de gerenciamento mais ou menos irritante é, então, fornecida no topo desse núcleo, que geralmente é lento e, como alguém apontou, carece de recursos disponíveis ... então não posso dizer que temos muitas opções na verdade ^ ^

Oskar Duveborn
fonte
Confira este script powershell pouco para Ngen suas montagens e acelerar todos os consoles baseados sua PowerShell: msexchangeteam.com/archive/2008/08/01/449426.aspx
Jesse Weigert
1

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

A única coisa que acho que falta é um bom IDE para ele, que tenho certeza que virá da MS algum dia. No momento, eu uso o powershell plus da Idera e o adminscripteditor, que permitem a depuração e são bem legais.

Consegui me afastar muito bem do VB.

Meu maior projeto até o momento com o posh é usar o "powershellASP" para criar uma página da Web básica que execute comandos do powershell e extraia informações sobre o host vmware e a VM dos meus mais de uma dúzia de hosts VMWare ESXi (gratuitos) e os exiba em tabelas HTML. Fiz isso porque, com o VMWare ESXi gratuito e sem 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 criado para o IIS e não suportado pelo MS. Portanto, ele pode fazer algumas coisas limitadas agora e a documentação é bastante esparsa.


fonte
Há PowerGUI, e em uso PowerGUI ScriptEditor.exe, eu não posso imaginar como eu posso viver sem isso ...
Nicolas Dorier
O Powershell 2 inclui um ótimo Powershell ISE (Editor de Script Integrado). A CTP 3 está disponível, RTM é de cerca de agora, a versão final em outubro de 2009.
Precipitous
1

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

Scripts Gerais:

  1. Obtenha espaço livre / usado em disco, RAM, etc.
  2. Consulte o WMI para obter informações sobre BIOS, modelo de criação do servidor etc.
  3. Verifique a versão AV e verifique se existem certas entradas do registro
  4. Auditoria de compartilhamentos em servidores Windows

Scripts de usuário:

  1. Enumere o AD que captura todos os usuários e a quais grupos eles pertencem e depois gravam no Excel ou CSV
  2. Encontre usuários conectados no momento via TS e no console

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

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

Basicamente, 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 simplesmente não pode fazer ou fazer bem no VBScript - como enviar e-mails com anexos - o que 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 Eventos.

É nisso que consigo pensar em cima da minha cabeça. Minha ferramenta de escolha é o PowerShell agora, apenas facilita a vida.

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

Zypher
fonte
0

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

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

Banheiras
fonte
Não é a coisa mais rápida do mundo, mas pode fazer quase tudo. Se tudo o que você precisa fazer é mapear algumas unidades, os scripts em lote são muito mais rápidos.
sysadmin1138
0

Não sendo desenvolvedor do .NET, tenho uso limitado para todos os presentes relacionados ao .NET que o PS permite que você use. No entanto, como administrador do Exchange (entre outras coisas), a integração do PowerShell ao Exchange 2007 é INCRÍVEL. Finalmente, tenho um mecanismo de script confiável para o meu sistema de correio; até agora, recebi estatísticas mensais nas caixas de correio de todos, ajustando a quem vários endereços de email são atribuídos dependendo da hora do dia, criando e atribuindo permissões automaticamente em pastas públicas e usuários de balanceamento de carga entre nossos dois bancos de dados de caixas 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.

RainyRat
fonte
0

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

Sua manipulação de logs de eventos é incrível.

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

Uma coisa que eu esqueci!

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

nonades
fonte
0

Nós o usamos para várias tarefas administrativas, sendo uma loja principalmente da Microsoft. Alguns scripts são simples, como limpar arquivos antigos ou desfragmentar máquinas e registrar os resultados. Um script audita computadores usando principalmente WMI e registra os resultados em um banco de dados. Ele obtém itens 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 email. Eu acho que no futuro ele substituirá o restante dos scripts VBScript que ainda estão sendo usados. Ainda não 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.

Bratch
fonte
0

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

Eu decidi dar uma olhada eu mesmo. Vindo de um plano de fundo do shell Unix, pensei que o Windows finalmente deveria ter um ambiente de programação de 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 ao PowerShell um nível de poder que os scripts baseados em texto precisam invadir para começar a trabalhar.

No lado negativo, eles realmente não utilizam muito dos comandos do shell do Unix. Portanto, a curva de aprendizado é desnecessariamente íngreme e não ajuda as pessoas a passarem facilmente do Unix para o PowerShell ou vice-versa. O máximo que eles fazem é definir aliases para alguns dos PowerShell cmdlets, como ls aliasing Get-ChildItem com toda a linha de comando ser diferente.

Apenas meus dois centavos...

user7286
fonte
0

Essa é mais uma resposta do desenvolvedor, mas é do mundo real e começaremos a testá-la em algum momento nos próximos meses. Estou começando a aprender o PowerShell para escrever scripts para trazer tarefas do SQL Server para o nosso ambiente de integração contínua . Os scripts de integração contínua serão executados principalmente pelo NAnt e MSBuild via JetBrains TeamCity .

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

Desculpe, ainda não tenho nenhum exemplo de código para compartilhar, porque ainda estou aprendendo! Ficarei feliz em publicar alguns quando o fizer :)

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

Isso listará os hotfixes instalados:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix
squillman
fonte
hooray for powershell, pena que não está instalado por padrão em um servidor 2003. A localização do registro ajudou!
Nick Kavadias 30/09/09
0

Embora não seja a linguagem de script mais fácil de entender (presume-se uma experiência sólida com pipes) e tenha sua própria alavancagem de esquisitices (me dê uma coisa simples, como sed !!), acho o PowerShell bastante poderoso. Não está no nível do Bash ou de outros shells do Unix, mas ainda assim.

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

Certamente já é o meu shell principal do Windows, embora não seja realmente o tipo de coisa "escreva menos faça mais". O PowerShell tem sua verbosidade (e herança do .NET) jogando contra ele.

Berzemus
fonte
0

O PowerShell versão 1.0 era extremamente limitado em muitos aspectos, mas a versão 2.0 está indo muito bem. Comparado aos scripts em lote, é muito mais poderoso. Eu realmente não o uso como um shell, apenas para scripts, então minha experiência é colorida de acordo. Eu realmente não gosto da sintaxe ( -eqvs ==, -gtvs >, etc.), mas aprecio poder entrar no .NET se precisar fazer algo estranho. Eu acho que pela versão 3.0 será ótimo. No momento, eu o colocaria firmemente na categoria de "faz o trabalho".

Eu o uso principalmente para automatizar a implantação de código. Esta é uma área em que brilha sobre a criação de algo em C #. As operações relacionadas ao shell, como cópia recursiva de diretório e outras coisas que os scripts do Bash têm dado por certo há anos, tornam as coisas muito mais fáceis.

Peter Mortensen
fonte