Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 11695|Resposta: 1

Tutorial de Início do PowerShell - versão v0.3

[Copiar link]
Publicado em 19/04/2017 16:48:30 | | |


---------- Capítulo 1 Histórico de Scripts do Windows --------------


1 A primeira geração de tacos de roteiro. Começou com win95, win98--------- e terminou por volta de 2008. Recursos: Comandos orientados a caracteres, com linha de comando e pipeline.
2 Script VBS de segunda geração. Recursos: Apenas funções, passando valores, chamadas.
3 Powershell de script de terceira geração. A partir de 2012, o comando evoluiu totalmente para orientado a objetos. Por exemplo, lista de tarefas e get-process são características repetidas da roda: orientadas a objetos. Herdando as vantagens das duas gerações anteriores de escritos.



P: Por que aprender PowerShell?
Um:
O missionário respondeu que estudaria por um ano e cinco anos para BAT. Sintaxe simples e funções de biblioteca fortes!
O único no mundo que suporta objetos com comandos em ambos os lados do pipeline. ou seja, comando orientado a objetos 1 | Comando orientado a objetos 2

Windows e Linux são diferentes:
No script PowerShell no Win,
Suporte CR, LF, CRLF entrando. Suportar multithreading e concorrência multiprocesso.
É fácil incorporar [som Text2], "Relatório Capitão, disco cheio".
Incorporar uma interface gráfica é fácil. (Quando, a interface pop-up pede que você insira um nome de usuário, senha, seleção única, seleção múltipla, etc.) Essas são as invejas dos scripts do Linux.

PowerShell é diferente de Python:
É fácil usar chinês no PowerShell. Nome do script chinês, nome da variável, comentário. Aspas simples chinesas, aspas duplas chinesas.
Reconhece automaticamente a codificação GBK, UTF8, Unicode. Objetos de suporte a pipeline, dos quais scripts Python têm inveja.



Exemplo simples de sintaxe 1: A magia das aspas simples e duplas do PowerShell.
Aspas simples podem ser citadas com aspas duplas. E vice-versa.
Aspas simples e duplas podem ser @引用 com @''.
O BAT não funcionou.


Narrador Missionário:
Pensei muito no design do tutorial. Você não leu que a parte de história do que escrevi foi muito [simples e grosseira]? A história é carregada por um só golpe.
Mas já que eu disse, não é bobagem, só quero que os alunos deixem claro que, desde o win7 até o win2008, a objetificação dos scripts se tornou popular. Leva ao próximo capítulo de explicação orientada a objetos.
Qualquer tutorial introdutório para PS deve mencionar a diferença entre orientado a personagens e orientado a objetos. É simplesmente apropriado inserir esse tema no histórico da linha de comando.

---------- Capítulo 2 O Maravilhoso -------------- da Orientação a Objetos
O que é um objeto, por que ele é orientado a objetos e por que a Microsoft está reforçando a roda?

Exemplo orientado a objetos 1:
Pergunta: Eu como 2,2 maçãs por dia, quantas maçãs eu como em 17 dias?
Um:
2,2 x 17 está disponível. Também é possível usar i++ suportado por qualquer linguagem de script.
para ($i = 1; $i -18; $i++)
{
        $Apple = 2,2 + $Apple
        Escrever-apresentador $i.$Apple
}

--------------------------------------------
Assim que a pergunta mudar, não vou te dizer o número de dias, apenas te dizer,
Eu como 2,2 maçãs por dia, quantas maçãs eu como de 20 de janeiro a 20 de junho de 2017?
$days = ((data de obtenção '2017-06-20') - (data de obtenção '2017-01-20')).dias #值151


Eu como 2,2 maçãs por dia, quantas maçãs eu como de 20 de janeiro a 20 de junho de 2020?
$days = ((data de obtenção '2020-06-20') - (data de chegada '20-01-20')).dias #值152

para ($i=(data de obtenção '2020-01-20'); $i -lt (data de obtenção '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        Escrever-apresentador $i.$Apple
}

Conclusão: Com o objeto data, contar dias, horas, etc., é simples. [for,,i++] é comum, mas nunca pensei que o número i pudesse ser do tipo data.

------------------------------------------



Quais são as vantagens do orientado a objetos?
Antes da orientação a objetos, só tínhamos cadeias e inteiros.
1 Existe um objeto.
----- [Tipo de Personagem]-----
O glifo tem system.string, que é o mais básico.
Memória System.Text.StringBuilder, frequentemente mudando, strings grandes

----- [Tipo numérico]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger inteiro inteiro infinito.
Comumente usado é int32, decimal.

Se 1/3*3 é igual a 1 ou 0,9999 depende do tipo de dado.
----- [Matriz]-----
array system.array
System.Arraylist muda com frequência, como sempre reescrever, anexar ou excluir, você precisa usar isso. A velocidade é relativamente rápida.
Arrays deduplicados System.Collections.Generic.HashSet. O mesmo vale para o objeto set do Python.

-----【Forma】-----
1 saída de comando. Por exemplo, dir, get-process.
2. Ao escrever scripts, usamos objetos e atributos para construir.

----- [Outros] -----
tabelas de hash, arquivos, etc.



2 tem atributos. Atributos são argumentos e são menores que cadeias. Antes que não existam atributos, precisamos filtrar e filtrar cadeias com [brain burning regular], conhecidas como [string de dedução]. Se você tem atributos, não precisa deles.
3 Existe um jeito. O método é o programa, o código. Não precisa reescrever você mesmo. O morcego definitivamente não é bom, não tem como, também existe uma escrita pessoal, não confiável, não ousa usá-la.
Os métodos podem ser funções ps autoescritas ou métodos autoescritos em classes ps.
O método que você escreve pode ser temporariamente [fundido] em uma classe de terceiros.
O método que você mesmo escreve pode ser temporariamente [fundido] na classe .net.

Quais são as desvantagens do orientado a objetos?
O pregador está ensinando PowerShell para pessoas que usam winxp. A pessoa disse que o PowerShell não é bom, que o objeto consome muito muita memória, e ele está certo.
No cmd, retorno 100 nomes de arquivos (strings) com dir. No PowerShell, uso o diretor para devolver 100 objetos de arquivo, e o PowerShell consome muita memória.
Mas agora é diferente:
1. Conteúdo desnecessário não deve existir em variáveis. Ou destruir imediatamente após o uso para reduzir o uso de memória.
2. A queda de memória é suficiente. Como o desempenho da CPU não pode mais aumentar, estamos aumentando freneticamente a memória na tentativa de trocar espaço por tempo.
3. Queremos recursos mais poderosos, e orientação a objetos é o mais básico atualmente. Qual não é orientado a objetos, py, php, java, .net, c++?

Resumo:
1 Os objetos são maiores e consomem mais memória do que as strings.
2. Existem mais métodos para orientação a objetos e funções mais fortes.
3 atributos são menores que a granularidade da cadeia, que é extremamente conveniente de usar. Evitei o [uso maluco de cordas regulares para queimar o cérebro para filtrar]!


=== Uso maluco de regulares que queimam cérebro para filtrar exemplos, versão bat do gateway padrão ping ===
@echo off&setlocal enableableexpansiondelayed
Echo está procurando o gateway padrão...

para /f "usebackq delims=" %%i em ('ipconfig /all') faça (
Echo %%i|Find /i "gateway">nul|| echo %%i|find "default gateway" >nul
se "!errorlevel!" =="0" (
Para /f "tokens=2 delims=:" %%a in ("%%i") faça para /f "delims= " %%m em ("%%a") defina ipgate=%%m
)
)

O gateway padrão do Echo é: !ipgate!
=========== ping para o gateway.ps1 padrão============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
&ping.exe $ Gateway Padrão

# conexão de teste $ gateway padrão
=======================






P: Mesmo que a orientação a objetos seja tão boa, de onde vêm esses objetos?
R: Da biblioteca .net.


---------- Introdução ao Capítulo 3 ao -------------- do .NET


P: Quantas versões do .NET Core tem?
Um:
Atualmente, existem três versões.
.NET 2.0 A versão mais recente do .NET 3.51
.NET 4.0 A versão mais recente do .NET 4.70
.NET Core 1.x A versão mais recente do .NET 1.2 para sistemas Apple, Linux e sistemas embarcados.
.NET Core 2.x A versão mais recente do .NET 2.0 para sistemas Apple, Linux e sistemas embarcados.



P: Quantos ramos funcionais o .net possui?
Um:
Branch da área de trabalho em .NET. WinForm. Para desenvolver janelas de desktop.
Biblioteca de sons
asp.net em .NET e .NET Core. Biblioteca de funções do servidor web. Costumava abrir um servidor web B/S.
F# em .NET e .NET Core. Contém bibliotecas matemáticas, bibliotecas de funções trigonométricas, etc.
PowerShell em .NET e .NET Core. Contém interfaces comuns de gerenciamento de sistema, como arquivos de script.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 e superiores
◦aberto SUSE 42 e acima
◦Arch Linux (archl inux não tem número de versão)
◦Contêiner docker LINUX
◦Contêiner Linux AppImage (aplicativo portátil binário único) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


P: Como um programa .NET (programa C#) se conecta a um servidor MySQL?
Um:
Acesse o site oficial do mysql para baixar o conector para a linguagem .NET.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Adicione a classe MySql.Data ao .net e adicione a interface do banco de dados.



Conclusão:
Máquina WinXP primeiro instale .net 3.51, Windows 7 e Windows 2008, primeiro instale .NET 4.62 ou superior.

.NET existe há muitos anos, e não há muitos softwares que suportem .NET além do Java. Todos os ramos .net, interfaces (bancos de dados, WeChat, etc.). )
Esses DLLs, essas bibliotecas, PowerShell podem ser chamados. É exatamente igual ao exe escrito em C#.


P: Além da interface de branch .NET, quais são as próprias bibliotecas (módulos) do PowerShell?
Um:
Por favor, veja o próximo capítulo

---------- Capítulo 4 Bibliotecas Embutidas, Bibliotecas Externas e Bibliotecas de Terceiros Comumente Usadas no PowerShell --------------

Ajuda missionária:
Este capítulo não pode ser discutido, mas é apenas uma lista de bibliotecas e manuais. Adicione este capítulo aos favoritos. Depois de analisar essas bibliotecas, você saberá o que o PowerShell pode fazer.



Endereço do Manual do Win2012: (módulo AD mais comumente utilizado)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
Gerenciamento de Grupos de Usuários AD, DHCP, DNS, Impressora, Compartilhamento de Arquivos, IIS, Disco, NIC,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-Spam e Anti-Malware 59  
Acesso ao cliente 100
Agente de Extensão 4
Endereços de E-mail e Agendas 37
Federação e configuração híbrida  
Alta disponibilidade  
Fluxo de correspondência  
Caixa de Correio  
Banco de dados de caixas de correio  
Servidor de caixa de correio  
Mover-se e migrar  
Organização  
Permissões  
Política e conformidade  
Segurança  
Saúde, monitoramento e desempenho do servidor  
Compartilhe e colabore  
Mensagem Unificada  
Usuários e grupos  



sqlserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx



lync2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx




SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx



Máquinas Virtuais Amazon, AWS, Máquinas Virtuais Microsoft, Azure, Hyper-V, VMware vSphere e máquinas virtuais de nível empresarial.


Clientes:
Serviços, processos, logs, registros, diretórios de arquivos, gerenciamento remoto. Tarefas cronometradas.



Internet:
FTP, e-mail, plug-in cliente SSH para conexão com servidores Linux.


Texto:
XML, HTML, CVS, JSON, EXCEL, etc.


Voz de texto 2


Interface gráfica.


Centro de Scripts Microsoft
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/


O site oficial do software PowerShell --- biblioteca oficial do PowerShell.
https://www.powershellgallery.com


As outras bibliotecas do Niu x estão todas no github. Além disso, os missionários publicam regularmente a [Niu x Magic Weapon] do [Pavilhão do Pé Oculto], que é uma útil biblioteca de terceiros do PowerShell.


---------- Capítulo 5 Iniciantes precisam aprender a ajudar no uso dos comandos--------------


P: Como eu sei qual é a versão do PowerShell?
Um:
$PSVersionTable



P: Não conheço o módulo, como encontrá-lo?
Um:
get-module -ListAvailable


P: Como encontro comandos se só conheço parte deles?
Um:
get-command *serviço*



P: Eu conheço o comando, mas não sei quais parâmetros estão no comando, como listar os parâmetros?
Um:
get-help write-host -Parâmetro *
show-command write-host


P: Eu sei o parâmetro, mas não sei qual comando tem esse parâmetro, como encontro o comando?
Um:
Codificação de get-command -ParameterName



P: Como posso obter ajuda com um comando na linha de comando?
Um:
Obtenha-Ajuda-Encontro

-Exemplos de comandos
- Manual online online




P: Não sei qual é o método de atributo do comando (não conheço o objeto), como encontrá-lo?
Um:
"ABC" | get-member
get-date | get-member



P: Onde está o manual chinês .NET?
Um:
msdn。 As propriedades e métodos mais básicos das cordas estão no manual.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Capítulo 6 Introdução aos Comandos Comuns --------------

O primeiro comando para aprender é dir
P: Por que usar o diretor do PowerShell [ou seja, Get-ChildItem] em vez do diretor do cmd?
Um:
Orientado a objetos, método forte e muitos atributos.
$file = dir a:\pscode\temp183\aaa.txt
$file. Nome Completo #返回全路径属性
$file. BaseName #返回文件名属性
$file. Extensão #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



A primeira sintaxe a aprender é a de array. $a = comando @(xxx)
P: Às vezes é preciso usar [comandos externos baseados em caracteres] para dividir os valores de retorno em arrays por unidades de comportamento.
Um:
$a = @(ipconfig)
$a[8] #第9行


Uso do Get-Childitem:
Parâmetros adicionados no PowerShell 3.0 e superiores

Get-childitem D:\xxx -#过滤, apenas arquivos de saída
- Filtragem de diretórios, diretórios apenas de saída
-Filtragem oculta, só saída oculta


P: Abrir um arquivo, segmentar por comportamento, colocar em um array?
Um:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



P: Abrir um arquivo, como uma string grande, e armazenar a variável inteira?
Um:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


$a,$b,$c = 1,2,3


P: Como executo comandos em segundo plano?
Um:
Existia um comando cmd /c na antiguidade.
Agora existe o powershell /c "comando", ou powershell -c "comando",
PowerShell -arquivo "script.ps1" -argumento 1 AAAA -parâmetro 2 1234
start-process -path xxx.exe -ArgumentList '-parâmetro1 aaaa -parâmetro2 1234'


P: Quero rodar o script com outro usuário local, mas o PowerShell não tem runas. Exe tem comandos parecidos?
Um:
Existem várias sessões no PowerShell.
IP + porta + nome de usuário + senha = uma sessão, só preciso mudar o nome de usuário, mudar a senha, e você pode mudar as permissões. Porque as permissões estão atreladas ao usuário.
Da mesma forma, só preciso criar n sessões para usar, sem trocar de usuário.
O mais importante new-pssession tem o parâmetro -Credential, insira a senha do usuário, que não é o mesmo que runas. Exe é igual? O que mais é o SmbSession?
Então não acho necessário usar runas no PowerShell. Exe。
Você só precisa usar esses comandos com session e Credential, certo?

Verifique os comandos com o nome [Credential] no nome do parâmetro:
Credencial de parameterName comando get-

Ver comandos com o caractere [session] no comando:
get-command *session*


P: Como faço para enviar um e-mail usando o PowerShell?
Um:
Enviar-MensagemDe-E-Assunto 'Assunto'
-De "sua conta hotmail @hotmail.com" -Para "seu e-mail QQ @qq.com" '
-SmtpServer "smtp.live.com" -porta 587 -useSsl -credencial "sua conta hotmail @hotmail.com" '
-Anexos $Attachments -BodyAsHTML -corpo $HTML o conteúdo do e-mail

Nota:
1 Usoxxx@QQ.com+ Sua senha do QQ + o comando acima Enviar um e-mail não está funcionando. Porque, para a segurança das senhas do QQ, a Tencent exige senhas de e-mail independentes.  
2 Enviar da caixa de correio QQ não é possível por padrão. Está desligado, e você precisa ativar o SMTP nas configurações.
3: PowerShell 3.0 e superiores suportam apenas parâmetros de porta. Para o Windows 7, você precisa instalar a versão mais recente do PS primeiro




P: Monitorar CPU, disco, rede, IO, etc.
Um:
Monitor de Desempenho ou
O Get-Counter busca dados do contador de desempenho tanto de computadores locais quanto remotos.

P: Como posso ver quais itens de contador estão disponíveis?
Um:
Está tudo no manual.
Verifique quais são as principais categorias de uso:
Get-Counter -ListSet * | Ordenar-Objeto ContadorNomeConjunto | Format-Table CounterSetName


Por exemplo, agora sei que a categoria do disco é (PhysicalDisk), e então verifico as subcategorias no disco, uso:
(Get-Counter -ListSet PhysicalDisk). Caminhos




P: Como posso visualizar os registros?
Um:
Visualizador de Eventos, ou
get-eventlog



P: Como eu executo as cordas?
Um:
$cmd 1 = 'xxxx'
Invocar-Expressão $cmd 1


Bem, aprendemos muito sobre comandos individuais, vamos dar uma olhada na execução dos scripts Powershell.


---------- Capítulo 7 Scripting, Depuração e Execução de -------------- do Capítulo 7 no PS1
Um script é uma combinação e sobreposição de instruções de comando. O roteiro é cola, vá procurando outras pessoas para ligar, procure rodas para montar o carro. Em vez de fazer rodas, para outros usarem.



Cainiao perguntou: Como escrever um roteiro?
O velho pássaro respondeu:
1 Os detalhes do problema precisam ser esclarecidos. Por exemplo: faça bolos da lua.
2 As ideias para resolução de problemas também estão basicamente concluídas. Farinha e água, coloque o recheio, coze no vapor.
3 Quais comandos e variáveis usar. Adicione cinco grãos, coloque em um molde e esprema.
4 Escreva mais ou menos primeiro, escreva de forma aproximada.
5 Depuração aprovada.
6 Escreva em detalhes. Considere a situação do erro, além do código de erro, da mensagem de erro. Remova códigos propensos a erros que não sejam facilmente compatíveis. Reescreva código que não tem bom desempenho.
Até aqui, um bom roteiro pode não parecer bom, mas deve ser muito útil.
7 Finamente trabalhado. Refatoração, escrever trechos de código reutilizados em funções. Reescreva os nomes das variáveis para que as pessoas possam entendê-los rapidamente. Formate bem o código e faça a indentação.


P: Qual IDE é usado para escrever o PS1?
Um:
A mais recomendada é usar Visual Studio Code, além do plug-in PowerShell.
Recursos: Prompts de código, autocompletamento, formatação de código, indentação para escolher espaço ou tabulação, configurações de codificação de arquivos.
Existe um plugin chamado FTP-sync, que pode escrever scripts de PS1 no VSCode do Windows e sincronizá-los automaticamente com o diretório Linux quando salvo.



P: Quais ferramentas são usadas para depurar o PS1?
Um:
A vida mais recomendada do powergui não usa locomotiva, mesmo que seja uma heroína, o script PS também pula e reporta um erro!
VSCODE também é bom



P: Quais ferramentas você usa para formatação de código?
Um:
Tudo que deveria ser recuado está recuado, e os sinais iguais estão alinhados.

PowerShell ISE + Plugin ISE [ISESteroids]

Instalação:
Install-Module -Name ISESteroids

ISE corre:
Start-Steroids





P: Quais ferramentas você usa para tornar a cor do código bonita?
Um:
1 Use as ferramentas acima para formatar o código.
2 Use PowerShellise + Missionary DIY Color Matching Edition 2016.
3 Pega a foto. O código PowerShell mais agradável e lindamente colorido do mundo é produzido.

Todos os IDEs acima estão em chinês.




P: Como nomeio um roteiro? xxx.ps1
Um:
Recomenda-se começar com 1---2 letras e usar o nome chinês do arquivo para o restante. Ou seja, [o BF faz backup de todas as files_ antigas e exclui .ps1 de 10 dias atrás]
Dessa forma, digite [bf] primeiro e depois clique no tab para completar o nome do script.




P: Como faço para habilitar a permissão de execução do script do PowerShell?
Um:
echo O código a seguir pode ser executado em cmd com privilégios de administrador ou em PowerShell com privilégios de administrador.
echo se estiver usando controle remoto PowerShell. Tanto a máquina local quanto a remota devem ser executadas com privilégios de administrador.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
pausa



P: Quais são as desvantagens da locomotiva (powergui)?
Um:
Não é possível definir a cor do fundo.




P: Quais são as desvantagens do vscode?
Um:
$ e nome da variável não têm a mesma cor.
As funções de depuração são lentas e às vezes travadas.




P: Quais são as desvantagens do ISE?
Um:
Você não pode escolher salvar ou converter a codificação.
Indentar para [espaço], [tabulação] ambos. Em outros softwares de edição de texto, a indentação é exibida.




---------- Capítulo 8 Exercício de Combate Real --------------
O grupo 6504748 e escreveu essa parte sozinhos.

5. Exemplo 1: Ligue e desligue o serviço
6. Exemplo 2: Controle de Firewall (Abrir, Fechar, Regra)
7. Exemplo 3: Definir uma política (política de senha, por exemplo)



---------- Capítulo 9 Essas Disciplinas Eletivas Adicionais Você Tem Interesse? --------------
Scripts PowerShell, argumentos na linha de comando passam valores e vinculam variáveis exemplos
http://www.cnblogs.com/piapia/p/5910255.html




Deixe o PowerShell rodar apenas um script por vez (exemplo de exclusão mútua de processos)
http://www.cnblogs.com/piapia/p/5647205.html



interface de personagem powershell, interface powershell mais WPF, jogo 2048
http://www.cnblogs.com/piapia/p/5531945.html


Dois rastreadores no PowerShell
http://www.cnblogs.com/piapia/p/5367556.html



Script PowerShell: Gerador de senhas aleatórias
http://www.cnblogs.com/piapia/p/5184114.html



Exemplo de um algoritmo recursivo PowerShell
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



Calculadora de Voz PowerShell
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Liste todos os arquivos criptografados pelo EFS. 2Criptografe todos os arquivos criptografados pelo EFS
http://www.cnblogs.com/piapia/p/4702514.html
É uma ferramenta escrita para administradores de sistemas e administradores de rede.
Após um funcionário deixar seu emprego, seu disco assume que existem 10.000 arquivos (diretórios), dos quais há 3 diretórios criptografados pelo EFS. No Explorador, esses três arquivos são verdes.
Mas se você clicar em (10.000 catálogos) um por um, seja verde ou não, vai ficar exausto.
Neste momento, o administrador de rede usa a conta WIN do funcionário, faz login no PC do funcionário e usa esse script para listar todos os arquivos criptografados pelo EFS.


---------- Capítulo 10, por favor, faça uma pergunta--------------
Senhoras e senhores, se houver algo a relatar, saiam do tribunal sem nada.



----------Capítulo 11 Capítulo Linux--------------

Missionary: Desde que você possa instalar a versão Linux do PowerShell, só precisa de scripts de PS1, nada de scripts SH.
Interpretação:
1 Resumindo, bash só tem sintaxe, sem comandos e bibliotecas.
O 2 Bash tem apenas 1% de funções de sintaxe, o PowerShell não consegue implementá-lo. Isso é normal, nenhuma folha é exatamente igual no mundo.
Isso significa que você só precisa do script do PS1, sem sh.
3 bash é muito antigo, a mesma função, o Powershell pode ser implementado, e também pode economizar tempo, como 10.000 fors vazios, o Powershell precisa economizar 90% do tempo.
4 Aprenda a usar /usr/bin/powershell em vez de /usr/bin/bash. Outros comandos do Linux, pipelines, kung fu antigo, etc., são usados exatamente da mesma forma que no bash.
5 Usar gradualmente comandos e bibliotecas PowerShell orientados a objetos, simples e poderosos, em vez de comandos Linux que te cansam a mente, ou ambos. ---Esse é o princípio geral, o esboço geral.


P: Quais versões do Linux podem instalar o PowerShell?
Um:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 e superiores
◦aberto SUSE 42 e acima
◦Arch Linux (archl inux não tem número de versão)
◦Contêiner docker LINUX
◦Contêiner Linux AppImage (aplicativo portátil binário único) https://github.com/probonopd/AppImageKit





P: Por que dizem que a linha de comando do Windows é mais forte que a do Linux?
Um:
Comandos em 1 win evoluíram para PowerShell orientado a objetos. O Linux ainda não está funcionando. Do win7 para o win2012r2, a evolução termina.

2: Eu costumava ouvir que o Unix tem muitos comandos Linux e é muito poderoso. Mas agora estou te dizendo que comandos do PowerShell são pelo menos dez vezes maiores que comandos do Linux. Enfim, eu não aprendi a vida toda.

3 Linux depende mais de gráficos, com poucos comandos. E o comando win é muito mais do que o Linux.
3.1 Em qualquer Linux, os comandos no servidor de e-mail são cada vez mais completos do que no Exchange? Mais conveniente do que troca?
3.2 A vinculação do servidor DNS do Linux não é tão conveniente quanto o comando DNS do win. O Bind tem um [comando] para adicionar um registro ipv4 A a um nome de domínio? Ainda não depende de gráficos web?
Algumas pessoas dizem para usar nsupdate. Isso não é sobre fazer uma mensagem e depois rodar a mensagem. Qual é a diferença entre substituir o [arquivo de zona DNS] por sed e depois recarregar a [zona DNS]?

4 Na nova versão do win, ou no powershell, tudo é [comando + parâmetro]. E a maior parte do Linux ainda é [texto sed].
4.1 Pegue o endereço IP atribuído à placa de rede como exemplo.
Conexão NMCLI adicionar tipo Ethernet Con-name NEW_STATIC ifname ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
Não é mais conveniente do que usar o sed para extrair o arquivo ifcfg-eth0?

5 Qualquer linguagem processa dados, assim como scripts. Com a ajuda de objetos, o PowerShell é mais conveniente do que awk. Shenma csv, excel, xml, json
Tabela SQL, tabela NoSQL. html, etc.




P: Como o PowerShell implementa [sed -i "s/o que procurar/substituir por /g"]?
Um:
@(Get-Content nome do arquivo) -substitua 'aaa', 'bbb' | Nome de arquivo de conteúdo conjunto $aaa
Ou seja, abrir o arquivo, substituí-lo, salvar o arquivo.



P: Por que cada vez menos pessoas estão usando SED no Linux?
Um:
Argumento 1: O AWK pode substituir o SED, mas o SED não pode substituir o AWK.
sed, ou seja, simplesmente encontre a substituição. AWK tem para implementar processamento complexo.

Argumento 2: AWK usa o regular padrão, e o regular de sed é o mesmo que o de sed, mas as partes são diferentes.
Aprender SED significa que dois conjuntos de padrões regulares incompatíveis no cérebro estão lutando entre si.



P: Então é certo aprender AWK?
Um:
Aprender PowerShell é mais fácil do que aprender AWK.
O PowerShell usa [split e depois split], [if e se], where-object, string.substing(), string[-3], etc.
Divida o problema da corda camada por camada. Mais simples que o awk normal.




P: Pipelines e AWK podem ser usados no PowerShell?
Um:
Você pode chamar awk no PowerShell, exatamente igual no Bash. As artes marciais antigas são totalmente Turim.



P: Como implementar a função [awk '{print $3}'] no PowerShell?
Um:
($line -split "\s+|\t+") [0] #第一行
($line -split "\s+|\t+") [2] #第三行       

Ficar Conteúdo /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'


P: Como implementar a função [arquivo awk -f a.awk] usando o PowerShell?
Um:
Basicamente, essa é uma função de filtragem que usa um pipe. No PowerShell, isso é chamado de filtro ou filtro.
O PowerShell suporta a combinação de comando + pipe + filtro. Como em Comando 1 | Filtro 1 | Comando 2 | Filtro 2 | Filtro 3
filtro filtro1
{
Funcionalidade semelhante ao AWK
}





P: Existe [xargs] no PowerShell?
Um:
A variável pipe usada no pipeline é chamada [$psitem], e seu alias é [$_].
O PowerShell usa foreach-object e $_ para implementar a função dos xargs.





P: Existe um número [<] [<<] no PowerShell?
Um:
Não.
Talvez o símbolo [<] da direita para a esquerda seja um pensamento anti-humano. Muitos comandos no PowerShell foram alterados para da esquerda para a direita.
Se o get-random < (1..100) não for legal no PowerShell, o legítimo deve ser get-random -inputobject (1..100), ou 1. 100 |get-random
Menos de 1% dos comandos estranhos [devem] depender do símbolo [<], o que pode ser alcançado chamando cmd no PowerShell ou bash (PowerShell para Linux) no PowerShell.
Por exemplo, $a = bash -x "comando 1 < comando 2" #linux
Por exemplo, $a = cmd -c "comando 1 < comando 2" #cmd




P: Existe um comando de espera no PowerShell? Como conectar a um servidor SSH Linux a partir do Win com PowerShell?
Um:
1. Sim. Para algumas necessidades estranhas e parciais de resposta de porta, existem módulos de terceiros.
2 Não. O PowerShell não usa o comando esperar, mas usa uma sessão.

Use Powershell + biblioteca cliente SSH + IP + porta + nome de usuário + senha para combinar em uma conexão e enviar comandos para essa conexão. O código é o seguinte:
$connection 1 = New-SSHSession -Nomecomputador 1.1.1.1 -Porta 22 -Credenciamento aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Comando {cat /etc/issue} -SSHSession $Connection 1

Essa funcionalidade padrão, como (MongoDB, mysql, ssh, ftp, http, telnet, etc.), possui drivers ou módulos. PS e. .netprogram, através da conexão do driver, envia comandos e aceita dados.
Os benefícios de usar módulos ou drivers para enviar e receber [dados] são:
Os dados serão convertidos em um objeto .net, que por sua vez será convertido em um objeto PS. Caso contrário, são só cordas, e as [artes marciais orientadas a objetos] da seita PS são todas inúteis.


Pegando o MongoDB como exemplo, quais são as vantagens de usar módulos ou drivers para enviar comandos? Quem fala?
Acredito que os benefícios são:
1 Multithreading. A thread em segundo plano roda e não ocupa a thread atual.
2. Podemos [desconectar metade] da sessão a qualquer momento, executar outros códigos PS, funções e [retornar à sessão a qualquer momento]. Scripts são mais flexíveis de escrever e fáceis de depurar.
O 3session traz múltiplos usuários, e diferentes usuários podem ter diferentes permissões de servidor.




P: Existe o comando SU, Runas no PowerShell? Como executar o comando de outro usuário com o PowerShell?
Um:
Não.
No PowerShell, executar comandos nativos e pipelines Linux é fácil. Por exemplo:
sshaaa@127.0.0.1"Executado com privilégios AAA do usuário, comando xxx"  
SSHPASS -P user_password SSHaaa@192.168.1.1



P: Duas máquinas Linux com SSHD? Como conectar e enviar comandos com o PowerShell?
Um:
Além do método acima, você também pode usar o método de criar uma nova sessão Linux. (Conectado do Linux a outro SSHD)
Nota: Este método requer editar o arquivo /etc/ssh/sshd_config. Adicione a seguinte linha
Powershell de subsistema powershell -sshs -NoLogo -NoProfile
Depois disso, reinicie o servidor SSHD.
O manual detalhado está aqui:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Comando:
$connect 2 = New-PSSession -Nome do Host 127.0.0.1 -Nome de Usuário usuário006 opção #手动输入密码或用-KeyFilePath opção
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


Resumo:
Cliente Win, conectado ao servidor Linux. Atualmente, módulos de terceiros são necessários, claro, este é um módulo na biblioteca oficial, basta usar o módulo de instalação PoshSSH.
Cliente Linux, conectado ao servidor Linux. Você precisa editar o arquivo /etc/ssh/sshd_config.
Cliente Linux, conectado ao servidor Link. Você precisa ativar o serviço no servidor. Confie no servidor do cliente.
Cliente Win, conectado ao servidor Win (Win Server). Você precisa ativar o serviço no servidor. Confie no servidor do cliente.


P: Existe [grep] no PowerShell?
Um:
O comando select-string é usado no PowerShell.
Só do ponto de vista da programação, select-string=smart, grep=burro + têm um defeito difícil :mrgreen:
Quando há um cabeçalho da BOM, a string-select reconhece automaticamente o tipo de codificação do arquivo.
Quando não há cabeçalho BOM, não há necessidade de mudar o ambiente shell como linux+grep, nem de salvar arquivos de acordo com um determinado código. Você só precisa especificar o parâmetro de codificação de arquivo de acordo com a codificação do arquivo.
E o grep não possui essa função, ou seja, há uma falha grave de [não é possível especificar o tipo de codificação do arquivo].
Claro, grep não é inútil, grep tem alguns parâmetros, possui funções únicas adicionais, select-string não, é aí que grep é mais forte que select-string.



P: Existe alguma [avaliação] no PowerShell?
Um:
Use o Invoke-Expression para executar strings no PowerShell.



P: Existe um -f de cauda no PowerShell? É possível exportar as linhas recém-geradas de um arquivo em tempo real.
Um:
Get-Content D:\a.txt -Cauda 10 -ContaLeitura 0 -Espere



P: Quero usar um teclado pequeno e também quero um terminal de 256 cores, então como o xshell deve ser configurado?
Um:
Terminal --- Tipo de Terminal --- [massa-256cor] ou [TERM=TERM=massa-256cor]
Terminal --- teclado --- padrão ou Linux.

Eterm-256color pode
Gnome-256Color não funciona
Konsole-256Color não funciona
Massa-256Color
PowerShell Missionary Participação Original 2017-02-15
RXVT-256COLOR não funciona
Screen-256color não funciona
ST-256COLOR
O VTE-256COLOR não funciona
Xterm-256Color não funciona
O mesmo princípio se aplica ao SecureCRT




P: Quem é mais poderoso, shell ou python?
Um:
Cada um tem seus próprios pontos fortes e pode se complementar. Mas eles não são complementares. Mais sobre isso abaixo.


P: Por que a versão Linux do PowerShell é mais adequada para que pessoal de operação e manutenção escreva scripts? (Comparado à versão Linux do Python)
Um:
1 Python possui funções orientadas a objetos, e a versão Linux do PowerShell está disponível.

O Python 2 não tem linha de comando.
Python 2.1 não pode ser o terminal padrão para SSH, mas PowerShell para Linux pode. Veja o capítulo: "Duas máquinas Linux com SSHD? Como conectar e enviar comandos com o PowerShell? 》
2.2 Usar comandos shell (awk, grep, etc.) em python é muito trabalhoso. Preciso adicionar muita sintaxe e código PY. PowerShell para Linux roda os comandos awk igual ao bash.

O 3 Python não tem tubos. É muito difícil passar valores entre n [programas de linha de comando]. Preciso adicionar muita sintaxe e código PY. A versão Linux do PowerShell tem pipelines, e executar comandos awk é igual ao bash.

O Python 4 tem a versão 2, a versão 3 não é compatível com câncer! Pergunta. O PowerShell para Linux não tem esse problema.
4.1 Essas perguntas contêm problemas de codificação.

Conclusão:
Comandos de shell como GREP não são bons para suporte à programação, não tão bons quanto os problemas de codificação da versão 4.1 acima no PowerShell em casa. Mais os 2,3 pontos acima.
Isso deixa pessoas com Linux desconfortáveis, mas pouquíssimas pessoas usam comandos externos no py. [biblioteca de comandos PY] e [comando shell] estão mortos e basicamente não podem se complementar. A versão Linux do PS é diferente.




P: Por que dizem que o PowerShell é melhor que o Shell?
Um:
1 O PowerShell é orientado a objetos, e as propriedades retornam dados diretamente disponíveis. Isso é muito menos comum do que em linguagens de script de caracteres (bat, shell) que exigem deduções de cadeias de caracteres.
Nasceu com menos [conteúdo que precisa ser evitado].
2 Substituição de busca por strings, existem métodos no PowerShell que não exigem escape, na classe .NET. Por exemplo:
[string]$a = 'abc\\def'
$b = $a.replace('\\','when')
#返回: [ABC como def]
Para determinar se um IP é legítimo, você pode usar o método TryParse() na classe IPAddress.
Resumindo, minha sugestão é usar o máximo possível de métodos .net, usar o mínimo de regex possível ou apenas usar regulares simples.
3 O PowerShell usa ['] como símbolo de escape. ['] é menos usado que [\] e muito menos usado como símbolo de fuga.
3.1 Ao escrever scripts de banco de dados, há mais conflitos de ['].
Por exemplo, ['table'] vai entrar em conflito com ['t], como ['biao'] vai entrar em conflito com ['b], e depois resolvi isso com ['table'].
busca e substituição de string de 4 ps, possui motor normal, é compatível com Linux e também usa [\] como escape.
No entanto, existe uma função especial de escape de string [[Regex]::Escape()], que é escapada primeiro e depois encontrada e substituída, e o código é altamente legível.
$Original sequência antes da fuga = '\+\&*|]'
$escaped string = [regex]::escape($original string antes de escapar)
-------------
Exemplos de escrita
[string]$a = 'abc\\def'
$Original string antes da fuga = '\'
$Escaped String = [Regex]::Escape($Original String Before Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'Quando')
$b #返回 [ABC Dangdang DEF]
-------------
5 bash e awk, cada um tem seu próprio para, cada um tem sua própria fuga. Juntos, é fácil para A afetar B, e A engole B.
Também é fácil ter problemas ao encontrar ['], ["], [\], [\] e [*].
É como usar duas camadas de calça comprida, você puxa uma camada e a outra também se move, você precisa se preocupar com a compatibilidade delas.
Isso é câncer e difícil de resolver.
Mas o pinçado, esse problema também pode ser evitado até certo ponto. Isso exige que a pessoa que escreveu a concha corrija o problema de cheiro ruim.
[Coloque o código awk no arquivo .awk separadamente, não na linha de comando]
O PowerShell não tem esse problema, coloque na linha de comando, coloque no script, não tem efeito.








Anterior:.net/C# usa Attributes para implementar AOP simples
Próximo:.net/c# Speedy IP Open Port Scanner v2.0 Versão Ultimate
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com