Хорошо, вот в чем дело. Я попытался создать сценарий PowerShell для создания некоторых папок и изменения пары строк в текстовом файле .txt.

Но, как вы можете догадаться, это не работает. Смотрите мою конфигурацию ниже:

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"

Это не работает

(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

Это работает, но я могу заменить только одну строку

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

У кого-нибудь есть идеи?

1 ответ1

0

Было бы удобно, если бы вы вставили полученную ошибку. Но у вас слишком много закрывающей фигурной скобки в коде вашего цикла for, что, вероятно, таково:

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

Кстати, вы можете сократить количество кода для создания подпапок, создав целое дерево за один раз, что PowerShell может прекрасно обрабатывать

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .