1

我目前正在尝试使用 Powershell Web 服务器 PoSH ( http://poshserver.net/ ) 来获取一些管理报告。但我不知道如何格式化输出。

从一开始:我使用默认快捷方式启动控制台,并具有管理员权限。我打字Import-Module PoSHServer,然后Start-PoSHServer。Web 服务器启动,然后我创建一个简单的 index.ps1 文件,在正文部分只有一行代码:$(command)。

例如,我想使用Get-Service Mpssvc命令,但我得到的是:

System.ServiceProcess.ServiceController

我试试Get-Service MpsSvc | Select Name,Status。输出:

@{Name=MpsSvc; Status=Running}

cmdlet 也是Get-Process如此,我有一个包含进程列表的输出,但它看起来像这样:System.Diagnostics.Process (AcroRd32)...

但是,某些 cmlet 就像Get-Date(在 Posh 演示网页中使用的)一样工作正常并且具有“正常”输出。

我阅读了文档,但没有任何示例可以帮助我。

如何编写 powershell 代码以获得“干净”和类似控制台的输出?

4

1 回答 1

1

昨天我刚刚下载并安装了 Posh-Server 后阅读了这篇文章。

如果您希望输出看起来像网页内的控制台,那么您可能从错误的角度看待这个问题,您需要考虑字符串而不是控制台。在示例中,您的代码应该在此处的字符串中运行。所以我在这里得到了提示,标准控制台格式化程序不适用,豪华服务器将使用它想要的任何东西将您返回的对象转换为字符串!。您的代码输出将使用它认为适用的任何格式化程序转换为字符串,除非您明确返回一个字符串 - 示例脚本正确地执行了该操作。所以在控制台上试试这个

get-process "power*" | out-string -width 80

然后在您的豪华服务器脚本中尝试它。你可能真的想要这个:

Get-Service MpsSvc | Select Name,Status | out-string -width 120

希望有所帮助——我认为这个项目中缺少示例是一件好事,因为这确实是一个非常简单的网络服务器;在你开始之前需要大量的概念思考:)。

于 2013-10-02T08:06:50.717 回答