Apa yang saya lakukan salah dalam skrip PowerShell saya

0

Ok, ini masalahnya. Saya mencoba membuat skrip PowerShell untuk membuat beberapa folder dan mengubah beberapa string dalam file .txt.

Tetapi karena Anda dapat menebak itu tidak berfungsi. Lihat konfigurasi saya di bawah ini:

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"

Ini tidak bekerja

(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

Ini berfungsi, tetapi saya hanya bisa mengganti satu string dengan itu

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

Adakah yang punya ide?

Jeffrey Jaspers
sumber
Hancurkan apa yang tidak berfungsi menjadi bagian mereka sendiri. Tolong tunjukkan bagian mana dari "apa yang tidak berfungsi" yang berfungsi dan yang tidak berfungsi. Dasar debugging 101.
Ramhound

Jawaban:

0

Akan berguna jika Anda akan menempel kesalahan yang Anda dapatkan juga. Tetapi Anda memiliki satu braket keriting penutupan terlalu banyak dalam kode for-loop Anda, yang mungkin itu:

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

btw, Anda dapat mempersingkat jumlah kode pembuatan subfolder dengan membuat seluruh pohon sekaligus, yang dapat ditangani oleh PowerShell dengan sempurna

mkdir c:\foo\bar\this\will\all\be\created\in\one\statement
jurgenb
sumber