2013-12-20 40 views
0

如果我只是按下输入没有输入任何变量..它会吐出错误。我可以添加什么才能让它再次被重新使用?Pompt如果没有输入输入

mode con: cols=35 lines=5 
while (1) { 
    $tag1 = Read-Host 'Enter tag # or Q to quit' 
    if ($tag1 -eq "Q") { 
     break; 
    } 

    mode con: cols=80 lines=46 

    cls 

    sc.exe \\$tag1 start RemoteRegistry; 

    cls 

    start-sleep -seconds 2 

    cls 

    $OSInfo = get-wmiobject -class win32_operatingsystem -computername $tag1; 
    $OSInfo | Format-Table -Property @{Name="OS Name";Expression={$_.Caption}} -AutoSize; 
    $OSInfo | Format-Table -Property @{Name="System Boot Time";Expression={$_.ConvertToDateTime($_.LastBootUpTime)}} -AutoSize; 
    $OSInfo | Format-Table -Property @{Name="OS Install Date";Expression={$_.ConvertToDateTime($_.InstallDate)}} -AutoSize; 

    "`n" 

    "Current Date & Time: $(Get-Date -Format G)"; 

    "`n" 

    Get-WmiObject win32_computersystem -Computer $tag1 | Format-Table -Property @{Name="Username";Expression={$_.username}} -Autosize; 

    Get-EventLog system -computername $tag1 -InstanceId 2147489657 -Newest 10 | format-table EventID,TimeWritten,MachineName -AutoSize; 
} 

回答

1

几种不同的方法:

$tag1 = $null 
while (-not $tag1) { 
    $tag1 = Read-Host 'Enter tag # or Q to quit' 
    if ($tag1 -eq "Q") { 
     return; 
    } 
} 

mode con: cols=80 lines=46 

cls 

sc.exe \\$tag1 start RemoteRegistry; 

cls 

start-sleep -seconds 2 

cls 

$OSInfo = get-wmiobject -class win32_operatingsystem -computername $tag1; 
$OSInfo | Format-Table -Property @{Name="OS Name";Expression={$_.Caption}} -AutoSize; 
$OSInfo | Format-Table -Property @{Name="System Boot Time";Expression={$_.ConvertToDateTime($_.LastBootUpTime)}} -AutoSize; 
$OSInfo | Format-Table -Property @{Name="OS Install Date";Expression={$_.ConvertToDateTime($_.InstallDate)}} -AutoSize; 

"`n" 

"Current Date & Time: $(Get-Date -Format G)"; 

"`n" 

Get-WmiObject win32_computersystem -Computer $tag1 | Format-Table -Property @{Name="Username";Expression={$_.username}} -Autosize; 

Get-EventLog system -computername $tag1 -InstanceId 2147489657 -Newest 10 | format-table EventID,TimeWritten,MachineName -AutoSize; 

或者:

$GetTag = { 
Switch (Read-Host 'Enter tag # or Q to quit') 
    { 
    'Q' {Return} 
    '' {.$GetTag} 
    default {$_} 
    } 
} 

$tag = &$GetTag 
+0

当我更换我的东西时发生错误。 – Aaron

+0

你使用了哪一个,你得到了什么错误? – mjolinor

+0

我用两个例子代替了第2-6行,并且我在表达式或语句中得到了意外的令牌'}'。 – Aaron

1

只需清除变量,然后循环,直到它被设置。

$tag1 = "" 
while (-not ($tag1)) { 
    $tag1 = Read-Host 'Enter tag # or Q to quit' 
} 
+0

我仍然得到错误。如果没有输入任何内容,我只想让提示继续询问输入,而不是继续执行脚本。 – Aaron