如何循环我的powershell脚本?

Roo*_*oop 0 powershell powershell-2.0 powershell-3.0

我有一个小脚本可以过滤掉过去 7 天内远程 PC 的应用程序和系统的错误日志。

Write-Host "Creating Error Log of Remote PC ......."
[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"
$date = get-date
$range = $date.adddays(-7)
$pcname = Read-Host -Prompt "Please Enter PC name"

Get-WinEvent -ComputerName $pcname -FilterHashtable @{LogName="system","application"; Level=1,2; starttime=$range} | 
Select-Object @{label="PC"; expression={"$pcname"}},LogName,levelDisplayName,ProviderName,ID,TimeCreated,message | 
Sort-Object logname | 
Format-Table -AutoSize | 
Out-File C:\Eventlog.txt -width 214748

C:\Eventlog.txt
Run Code Online (Sandbox Code Playgroud)

当它运行时,我会得到一个输入 PC 名称的提示,问题是当脚本完成后,powershell 提示将返回到

PS c:\windows\system32\windowspowershell\v1.0>
Run Code Online (Sandbox Code Playgroud)

如果我想在另一台 PC 上检查日志,我必须关闭当前的 PS 窗口并再次运行我的脚本。

我怎样才能做一个循环,让它在第一次运行完成后再次显示我的 [Enter PC name] 提示?

Raf*_*Raf 5

您可以将现有代码包含在while循环中:

while($true){
   Write-Host "Creating Error Log of Remote PC ......."
   ...
   # rest of the code
   ...
   C:\Eventlog.txt
}
Run Code Online (Sandbox Code Playgroud)

这将无限重复您的代码或直到您按下ctrl+c