Powershell从命令

时间:2017-01-10 19:01:18

标签: powershell

我有这个命令

Write-Host "Background " -NoNewline; [System.Windows.Forms.SystemInformation]
    ::PrimaryMonitorSize.Width;  Write-Host "x" -NoNewline; 
          [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height

我希望它出来背景1920x1080

我似乎找不到停止命令的方法

[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width

制作新行。

它的出现

背景1920

X1080

2 个答案:

答案 0 :(得分:1)

简单地使用字符串格式化或内联扩展到单个字符串中就不那么复杂了。

"Background {0}x{1}" -f [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width,[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height

Write-Host "Background $([System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width)x$([System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height)"

有关各种格式选项的文章:https://blogs.technet.microsoft.com/heyscriptingguy/2013/03/12/use-powershell-to-format-strings-with-composite-formatting/

您获得额外换行符的原因是您的代码示例省略了Width部分上的Write-Host。第一个项目转到Write-Host,然后输出流上的一个项目没有办法省略换行符。简单地纠正这个缺陷可以得到你想要的输出,但这种方法过于复杂。

修复原始样本:

Write-Host "Background " -NoNewline;
Write-Host ([System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width) -NoNewLine;  
Write-Host "x" -NoNewline; 
Write-Host ([System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height)

答案 1 :(得分:1)

您获得了多行,因为您没有在命令上调用Write-Host -NoNewLine来输出宽度。您的代码正在运行以下四个命令

Write-Host "Background " -NoNewline
[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width
Write-Host "x" -NoNewline
[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height

第二个和第四个命令插入换行符,因为您没有使用Write-Host告诉他们不要。

Write-Host not usually the best way输出文字。更好的选择是使用PowerShell的-f格式化运算符在一个语句中构建输出字符串。

$width = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width
$height = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height
"Background {0}x{1}" -f ($width, $height)