Powershell: Computernamen eingeben
Hallo,
ich versuche gerade, ein Powershell-Skript zu schreiben, welches dem Benutzer auffordern soll, einen Computernamen einzugeben. Wenn der Computername nicht eingegeben wird bzw. wenn dieser Vorgang abgebrochen wird, soll die Meldung wieder auftreten und zwar so lange, bis ein Computername eingegeben wurde.
Ich bin leider kein Powershell-Profi. Wie gehe ich am besten vor?
ich versuche gerade, ein Powershell-Skript zu schreiben, welches dem Benutzer auffordern soll, einen Computernamen einzugeben. Wenn der Computername nicht eingegeben wird bzw. wenn dieser Vorgang abgebrochen wird, soll die Meldung wieder auftreten und zwar so lange, bis ein Computername eingegeben wurde.
Ich bin leider kein Powershell-Profi. Wie gehe ich am besten vor?
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$name = [Microsoft.VisualBasic.Interaction]::InputBox("Bitte Computernamen eingeben:")
$computerName = Get-WmiObject Win32_ComputerSystem
$computerName.Rename($name)
if ($name -eq $null) {
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$name = [Microsoft.VisualBasic.Interaction]::InputBox("Bitte Computernamen eingeben:")
$computerName = Get-WmiObject Win32_ComputerSystem
$computerName.Rename($name)
}
else {
Write-Host ""
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 328109
Url: https://administrator.de/contentid/328109
Printed on: April 19, 2024 at 21:04 o'clock
10 Comments
Latest comment
Moin,
etwa so:
lg,
slainte
etwa so:
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
do {
$name = [Microsoft.VisualBasic.Interaction]::InputBox("Bitte Computernamen eingeben:")
}
while ($name -eq $null)
$computerName = Get-WmiObject Win32_ComputerSystem
$computerName.Rename($name)
lg,
slainte
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$name = ""
while($name -eq ""){
$name = [Microsoft.VisualBasic.Interaction]::InputBox("Bitte Computernamen eingeben:")
}
write-host $name
Ist doch logisch warum, schau mal zu den Parametern in die Doku:
https://msdn.microsoft.com/en-us/library/aa393056(v=vs.85).aspx
Warum nimmst du nicht gleich Rename-Computer???
https://msdn.microsoft.com/en-us/library/aa393056(v=vs.85).aspx
Warum nimmst du nicht gleich Rename-Computer???
$Null funktioniert hier nicht, da ein leerer String vom Dialog zurückgegeben wird. Deswegen habe ich das oben ja extra mit "" gemacht .
Zitat von @honeybee:
Weil es anscheinend in Windows 7 nicht funktioniert. Habe diese Meldung bekommen:
Wenn du dort noch die alte PS 2.0 nutzt dann klar Weil es anscheinend in Windows 7 nicht funktioniert. Habe diese Meldung bekommen:
Rename-Computer
This cmdlet was introduced in Windows PowerShell 3.0.
@honeybee
Nur als Anregung, falls du mal "PS-only" Inputboxen erstellen willst:
Gruß
Ankh
Nur als Anregung, falls du mal "PS-only" Inputboxen erstellen willst:
$global:x = ''
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Eingabe-Form"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$global:x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$global:x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Bitte Computernamen eingeben:"
$objForm.Controls.Add($objLabel)
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,40)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
$global:x
Gruß
Ankh