O que estou fazendo errado no meu script powershell?

0

Ok, aqui está a coisa. Eu tentei criar um script do PowerShell para criar algumas pastas e alterar algumas strings em um arquivo .txt.

Mas, como você pode imaginar, não está funcionando. Veja minha configuração abaixo:

Start-Transcript
[string]$CustomerName = Read-host "Enter the company name of the customer (e.g. Companyname)"
write-host ""
[string]$Hostname = Read-host "Enter the FQDN of the customers machine (e.g. HV00.domain.local)"
write-host ""
[string]$Logon = Read-host "Enter te logon credentials of the customers machine (e.g. domain\user)"
write-host ""
[string]$Password = Read-host "Enter the password of the customers machine"
write-host ""

cd C:\Monitor\Logs
mkdir .\$CustomerName
cd C:\Monitor\Logs\$CustomerName
mkdir .\$Hostname
cd $Home

cd C:\Monitor\Scripts\CustomScript
mkdir .\$CustomerName
cd $Home

$InputFile = "C:\Monitor\Scripts\BaseScript\BaseScript.txt"
$OutputFile = "C:\Monitor\Scripts\CustomScript\$CustomerName\$CustomerName.txt"

Isso não está funcionando

(Get-Content $InputFile) | ForEach-Object { $_ 
-replace "hostname", "$Hostname" '
-replace "username@domainname", "$Logon" '
-replace "password", "$Password" } '
-replace "C:\Monitor\Logs\customername\hostname\", "C:\Monitor\Logs\$Customername\$Hostname\" 
} | Set-Content $OutputFile

Isso está funcionando, mas posso substituir apenas uma string por

(Get-Content $InputFile) -replace "hostname", "$Hostname" > $OutputFile

Alguém tem alguma ideia?

    
por Jeffrey Jaspers 10.09.2014 / 14:46

1 resposta

0

Seria útil se você também colasse o erro que está recebendo. Mas você tem um colchete de fechamento muito no código do seu loop, que provavelmente é:

-replace "password", "$Password" } '  <=== this one

btw, você pode diminuir a quantidade de código de criação de subpastas criando a árvore inteira de uma só vez, o que o PowerShell pode lidar perfeitamente

mkdir c:\foo\bar\this\will\all\be\created\in\one\statement
    
por 12.09.2014 / 21:15