Aufforderung, eine Benutzereingabe für einen Powershell-Befehl zu verwenden?

974
Ruther Melchor

Ich versuche den folgenden Code auszuführen und er funktioniert:

PS C:\> Rename-Computer -NewName TEST -DomainCredential okadamanila\itservices 

Da der Hostname in der PS1-Datei angegeben ist, möchte ich den Benutzer jedoch um Eingabe bitten, um den Hostnamen zu ersetzen. Ich habe versucht, den folgenden Codeblock zu verwenden:

$hostname = read-host "Please enter your name" Write-Host "YOUR PREFERRED HOSTNAME IS $hostname - INITIALIZING HOSTNAME CHANGE" $credential = Get-Credential PS C:\> Rename-Computer -NewName $name -DomainCredential $credential Read-Host -Prompt "Press Enter to exit" 

Wo die Eingabe des Benutzers der Hostname wäre, der für die Funktion "Computer umbenennen" verwendet wird, ist dies möglich?

BEARBEITEN:

Der obige Codeblock scheint zu funktionieren, aber ich stoße auf das folgende Problem:

FEHLER, DER BEGEISTERT WIRD

0
Was genau läuft falsch? Wenn ich folgendes mache: $ var = read-host "Frage:" `gefolgt von" $ var "bekomme ich in $ var das, was ich bei der Frage eingegeben habe. LPChip vor 7 Jahren 1
Wenn Sie eine dedizierte Funktion zum Abrufen des Benutzernamens haben ([`Get-UserName` wäre übrigens die richtige Nomenklatur)] (https://msdn.microsoft.com/de-de/library/ms714428 (v = vs. 85) .aspx)), warum sollten Sie den `Read-Host` in einen` param () `- Block einfügen? Ich mache einfach 'while ($ true) { else } ` flolilolilo vor 7 Jahren 0
Wenn Sie den `param ()` - Block verwenden möchten, damit Sie die Funktion und den name-parameter aufrufen können, damit keine Aufforderung erfolgt, dann würde ich vorschlagen, dass Sie `.Length` von` $ name` als `testen -name "" ist eine gültige Zeichenfolge, die keinen Namen enthält. Also `function Get-UserName () else } `_Ost es einen offensichtlichen Punkt, den ich nicht sehe? _ flolilolilo vor 7 Jahren 0

1 Antwort auf die Frage

0
stevlars

Befreien Sie sich PS C:>vorher von der Eingabeaufforderung ( ) Rename-Computer. Sie müssen immer noch den Variablennamen (von myname in name ) ändern, den Sie haben, $myname = read-host "Please enter your name:"damit er liest $name = read-host "Please enter your name:"und mit dem übereinstimmt, was Sie als Variablennamen in Ihrem Aufruf der Funktion haben Rename-Computer -NewName $name -DomainCredential $credential.