Powershell默认的控制台大小

我正在使用NSCLient在Windows Server框上运行一些NRPE检查。 检查运行Powershell脚本,但我遇到的问题是NSClient 79个字符后添加随机换行符。 我猜这是因为默认的Powershell / CMD控制台宽度是80个字符(这是正确的?),但我需要检查添加这些新行(他们搞砸了性能数据和Nagios得不安)。

我试过从一个标准的Powershell实例改变控制台的大小,但没有奏效,有什么办法用命令行标志指定控制台的大小? 帮助文件没有多大用处。

我从Nagios的check_nrpe得到的输出的一个例子

vmxnet3 ethernet adapter _2:728.370961294234isatap.{1c6435bc-27c9-452b-a6fe-668^M dced31461}:0| 'Network Usage (Bytes/sec) (vmxnet3 ethernet adapter _2)'=728.370^M 961294234 'Network Usage (Bytes/sec) (isatap.{1c6435bc-27c9-452b-a6fe-668dced31^M 461})'=0 

(问题不在于控制字符,Nagios似乎没有注意到它们,但是新的线路本身)

Powershell脚本;

 # # Check Network Usage # #Check for argument variables if ( $($args.count) -lt 2 ) { "Usage: ./check_network.ps1 [warn level] [crit level]" exit 3 } $warn = [int]$args[0] $crit = [int]$args[1] #Create buffers for the Nagios output $ExitStatus = 0 $TextOP = "" $PerfDataOP = "" #Get the average network usage for the last 5 seconds $PerfData = Get-Counter -Counter "\network interface(*)\bytes total/sec" -SampleInterval 5 -MaxSamples 1 foreach($InterfacePerf in $PerfData.CounterSamples) { #Write the outputs $TextOP = %{"{0}" -f $TextOP,$InterfacePerf.InstanceName,$InterfacePerf.CookedValue} $PerfDataOP = %{"{0} 'Network Usage (Bytes/sec) ({1})'={2}" -f $PerfDataOP,$InterfacePerf.InstanceName,$InterfacePerf.CookedValue} #Trigger alerts #If level is higher than crit, and the status is 'OK' or 'Warn' if ( $InterfacePerf.CookedValue -gt $crit -and $ExitStatus -lt 2 ) { $ExitStatus = 2 } elseif ( $InterfacePerf.CookedValue -gt $warn -and $ExitStatus -eq 0 ) {#warning $ExitStatus = 1 } } #Exit and return status "$TextOP|$PerfDataOP" exit $ExitStatus 

我用下面的代码成功了,用一个testing样本生成一个长string…

 if( $Host -and $Host.UI -and $Host.UI.RawUI ) { $rawUI = $Host.UI.RawUI $oldSize = $rawUI.BufferSize $typeName = $oldSize.GetType( ).FullName $newSize = New-Object $typeName (101, $oldSize.Height) $rawUI.BufferSize = $newSize } $longstring = "" 1..200 | %{$longstring += "a"} $longstring 

显然最重要的是顶部。 $longstring只是我做一个长string。 你也可以缩短这个:

 $Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (101, 25) 

这在设置值之前删除任何types的testing。

我把宽度设置为101,这样我就可以看到一个清晰的线条包装。

我没有办法来testing你的情况,但这将有望解决它:

 "$TextOP|$PerfDataOP" | Out-String -Width 1024