none
Substituir arquivo RRS feed

  • Pergunta

  •  

    Boa tarde pessoal.

     

    Procurei mas não achei no forum.

    Acho que uma solução por script podeira me ajudar.

    Preciso jogar um arquivo na maq de vários usuários. Esse arquivo tem que substituir o arquivo existente. É um arquivo do windows, todas a maquinas possuem ele. Só vou colocar o mesmo arquivo sendo que editado.

     

    Vlw pessoal.

    Abraço.

    quinta-feira, 19 de junho de 2008 20:28

Respostas

Todas as Respostas

  • Manipulando arquivos e pastas no Power Shell.
    Fonte: http://technet.microsoft.com/pt-br/library/dd315304.aspx

    Trabalhando com arquivos e pastas

    Este tópico ainda não foi avaliado como Avalie este tópico

    Navegar pelas unidades do Windows PowerShell e manipular os itens contidos ali é similar à manipulação de arquivos e pastas das unidades de disco do Windows. Discutiremos como podemos lidar com tarefas específicas da manipulação de arquivos e pastas nesta seção.

    Listando todos os arquivos e pastas de uma pasta

    Você pode obter todos os itens contidos em uma pasta usando Get-ChildItem. Para exibir itens ocultos ou do sistema, adicione o parâmetro opcional Force. Por exemplo, este comando exibe o conteúdo direto da Unidade C do Windows PowerShell (que é a mesma unidade C física do Windows):

    Get-ChildItem -Force C:\
    

    O comando lista somente os itens diretamente contidos, como faz o comando DIR do Cmd.exe ou o ls em um shell do UNIX. Para exibir os itens contidos, você também precisa especificar o parâmetro -Recurse. (Esse processo pode demorar muito para ser concluído.) Para listar todo o conteúdo da unidade C:

    Get-ChildItem -Force C:\ -Recurse
    

    Get-ChildItem pode filtrar itens com os parâmetros PathFilterIncludeExclude, mas esses parâmetros geralmente se baseiam apenas no nome. Você pode executar a filtragem complexa baseada em outras propriedades de itens usando Where-Object.

    O comando a seguir encontra todos os executáveis da pasta Program Files modificados depois de 1o de outubro de 2005 e que não sejam nem menores do que 1 megabyte nem maiores do que 10 megabytes:

    Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt "2005-10-01") -and ($_.Length -ge 1m) -and ($_.Length -le 10m)}
    

    Copiando arquivos e pastas

    A cópia é feita com Copy-Item. O comando a seguir faz o backup de C:\boot.ini em C:\boot.bak:

    Copy-Item -Path c:\boot.ini -Destination c:\boot.bak
    

    Se o arquivo de destino já existir, a tentativa de cópia falhará. Para substituir um destino pré-existente, utilize o parâmetro Force:

    Copy-Item -Path c:\boot.ini -Destination c:\boot.bak -Force
    

    Esse comando funciona mesmo quando o destino é somente leitura.

    A cópia de pastas funciona da mesma maneira. Este comando copia de forma recursiva a pasta C:\temp\test1 para a nova pasta c:\temp\DeleteMe:

    Copy-Item C:\temp\test1 -Recurse c:\temp\DeleteMe
    

    Você também pode copiar uma seleção de itens. O comando a seguir copia todos os arquivos .txt contidos em qualquer local de c:\data para c:\temp\text:

    Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination c:\temp\text
    

    Você ainda pode usar outras ferramentas para fazer cópias no sistema de arquivos. XCOPY, ROBOCOPY e objetos COM, como Scripting.FileSystemObject, funcionam no Windows PowerShell. Por exemplo, você pode usar a classeScripting.FileSystem COM do Windows Script Host para fazer backup de C:\boot.ini em C:\boot.bak:

    (New-Object -ComObject Scripting.FileSystemObject).CopyFile("c:\boot.ini", "c:\boot.bak")
    

    Criando arquivos e pastas

    A criação de novos itens funciona da mesma forma em todos os provedores do Windows PowerShell. Se um provedor do Windows PowerShell tiver mais de um tipo de item – por exemplo, o provedor FileSystem do Windows PowerShell faz a distinção de diretórios e arquivos – você terá de especificar o tipo do item.

    Este comando cria uma nova pasta, C:\temp\New Folder:

    New-Item -Path 'C:\temp\New Folder' -ItemType "directory"
    

    Este comando cria um novo arquivo vazio, C:\temp\New Folder\file.txt

    New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType "file"
    

    Removendo todos os arquivos e pastas de uma pasta

    Você pode remover os itens contidos usando Remove-Item, mas terá de confirmar a remoção caso o item contenha algo mais. Por exemplo, se você tentar excluir a pasta C:\temp\DeleteMe, que contém outros itens, o Windows PowerShell solicita a confirmação antes de excluir a pasta:

    Remove-Item C:\temp\DeleteMe
    
    Confirm
    The item at C:\temp\DeleteMe has children and the -recurse parameter was not
    specified. If you continue, all children will be removed with the item. Are you
    sure you want to continue?
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
    (default is "Y"):
    

    Caso você não queira que haja uma solicitação para cada item contido, especifique o parâmetro Recurse:

    Remove-Item C:\temp\DeleteMe -Recurse
    

    Mapeando uma pasta local como uma unidade acessível do Windows

    Você também pode mapear uma pasta local usando o comando subst. O comando a seguir cria um unidade local P: com raiz no diretório local Arquivos de Programas:

    subst p: $env:programfiles
    

    Assim como acontece com as unidades de rede, as unidades mapeadas no Windows PowerShell com subst ficam imediatamente visíveis no shell do Windows PowerShell.

    Lendo um arquivo de texto em uma matriz

    Um dos formatos de armazenamento mais comuns para dados de texto é em um arquivo com linhas separadas, tratadas como elementos de dados distintos. O cmdlet Get-Content pode ser usado para ler todo o arquivo de uma só vez, como mostrado aqui:

    PS> Get-Content -Path C:\boot.ini
    [boot loader]
    timeout=5
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional"
     /noexecute=AlwaysOff /fastdetect
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=" Microsoft Windows XP Professional 
    with Data Execution Prevention" /noexecute=optin /fastdetect
    

    Get-Content já trata os dados lidos do arquivo como uma matriz, com um elemento por linha do conteúdo do arquivo. Você pode confirmar isso verificando Length no conteúdo retornado:

    PS> (Get-Content -Path C:\boot.ini).Length
    6
    

    Esse comando é mais útil para a inserção de listas de informação diretamente no Windows PowerShell. Por exemplo, você poderia armazenar uma lista de nomes de computadores ou de endereços IP em um arquivo C:\temp\domainMembers.txt, com um nome em cada linha do arquivo. Você pode usar Get-Content para recuperar o conteúdo do arquivo e colocá-lo na variável $Computers:

    $Computers = Get-Content -Path C:\temp\DomainMembers.txt
    

    $Computers agora é uma matriz que contém um nome de computador em cada elemento.

    Abs

    * Ajude a organizar melhor o Fórum, dando Feedback sobre a dúvida solicitada, e marcando como Útil e como Resposta, a postagem dos colaboradores que resolveram o seu caso, ou foram úteis *

    domingo, 3 de junho de 2012 17:50
    Moderador
  • Amigo, eu aconselho a utilizar GPO para isso, caso seja 2008+ você tem a opção de copiar arquivos e substituir.


    Ajudei? Marca como útil.
    Visite meu blog: HowToServer
    Quer conversar sobre Powershell?
    entre nos grupos, no Facebook e noLinkedin Cadastre-se também na mailing list Powershell Brasil Quer Aprender Powershell?
    Meus Artigos na TechNet Wiki

    segunda-feira, 29 de outubro de 2012 10:12