powershell创建HTML,借助 PowerShell 创建动态Web内容

PowerShell Web Publishing可在ASP.NET平台运行,通过自定义的IHttpHandler映射到*.ps1x文件。因此,PowerShell Web Publishing页面可与任何ASP.NET应用程序交互。这样可充分利用 PowerShell Web Server运行现有的应用系统,也可仅基于 *.ps1x 页面创建完整的应用系统。

借助 PowerShell 创建 Web 内容

借助PowerShell的Web服务只需简单几个步骤即可实现常规ASP.NET应用程序的操作:

添加 PowerShell Web 程序集的引用:nsoftware.PowerShellASP.dll。

在 Web.config 文件添加条目,映射 *.ps1x 扩展文件到 PowerShell Web发布的程序集,例如:

1

2

3

若没有按照如上步骤操作,可配置*.ps1x扩展文件映射到IIS应用程序的ASP.NET ISAPI扩展库。

完成这些简单的步骤之后,即可在Web应用程序创建PowerShell Web Publishing页面。

发布PowerShell Web页面

PowerShell Web 页面是扩展名为 *.pslx 的文本文件,包括相互作用的常规 PowerShell 代码标记片段。不同于 ASP.NET ,在 PS1X 页面没有“代码分离”模型,这样更类似于ASP经典模式。

如下是一个简单的PS1X页面:

Hello !

1

2

3

4

5

6

7

Hello!

正如你看到的所有页面都是HTML标记语言组成以“

你还可创建完整的代码块,包含任何形式的 PowerShell 表达和控制流结构,甚至是混合使用的标记代码。例如,下面是一个简单的页面,显示目前运行的计算机进程列表:

IDName

1

2

3

4

5

6

7

8

9

10

11

12

13

IDName

动态RSS和Atom Feeds

PowerShell Web 发布允许借助 PowerShell 脚本在 ASP.NET Web Server上生成 RSS 和 Atom feeds。Feed 可基于执行 PowerShell pipeline 中的 PowerShell RSS 特殊脚本的返回对象自动生成。

借助PowerShell Web发布创建Feed

启用PowerShell RSS脚本,如下简单步骤即可实现:

创建新的ASP.NET 网页/应用程序。

添加 nsoftware.PowerShellRSS.dll的引用,或者将其复制到你站点的 ./bin 文件夹。

在网站Web.Config文件注册PowerShell RSS ASP.NET Http Handler。

1

2

3

若没有按照如上步骤操作,可配置*.ps1x扩展文件映射到IIS应用程序的ASP.NET ISAPI扩展库。

创建PowerShell RSS 脚本

PowerShell RSS 是一种以 .rslx 扩展名保存的标准 PowerShell 脚本。当 PowerShell Web 服务执行脚本时,pipeline 返回对象基于如下规则自动转化为 RSS/Atom Feed 条目:

通过 pipeline 返回的每个对象都是一个 RSS 条目。

如果对象只是一个常规的原始值,比如字符串或数字,其值可作为 RSS 条目的标题。

如果对象是一个数组,数组中的每一项都可被编写为 RSS 条目的元素。

如果对象是一个哈希表,那么它的每个key/value都可被编写为 RSS 条目的元素,使用key作为元素名称。

例如,如下脚本生成3个RSS条目:

# a simple value translates into an item

"This is a simple Item"

# an array translates into a single item (but no way to set the title)

,('an', 'array')

# a hashtable allows you to set your own element names

@{ 'name' = 'John'; Value = 'Foo' }

1

2

3

4

5

6

7

8

# a simple value translates into an item

"This is a simple Item"

# an array translates into a single item (but no way to set the title)

,('an','array')

# a hashtable allows you to set your own element names

@{'name'='John';Value='Foo'}

自定义RSS生成

如果想要更好控制对象转换成 RSS 条目的过程,可以通过返回一个哈希表来实现。哈希表可准确控制 RSS Feed 条目的元素名称,并且允许通过添加前缀“rss:”或“atom:”覆盖基本 RSS 条目属性值。

如下是从C盘文件列表生成一个消息源,自定义条目转化过程:

ls c:\ | %{

@{

'rss:id' = "urn:$($_.Name)";

'rss:updated' = $_.LastWriteTime.ToString('R');

'rss:title' = $_.Name;

'fullname' = $_.FullName;

'size' = $_.Length;

'directory' = $_.PSIsContainer;

'Mode' = $_.Mode;

}

}

1

2

3

4

5

6

7

8

9

10

11

lsc:\|%{

@{

'rss:id'="urn:$($_.Name)";

'rss:updated'=$_.LastWriteTime.ToString('R');

'rss:title'=$_.Name;

'fullname'=$_.FullName;

'size'=$_.Length;

'directory'=$_.PSIsContainer;

'Mode'=$_.Mode;

}

}

自定义的Feed属性

默认情况下,PowerShell Web 发布会提供一些关于生成脚本元数据的基本信息。例如feed标题将会是你 *.rslx 脚本文件名称。

然而,你也可以通过调用Set-FeedAttr函数自定义这些属性值,唯一需要的参数是属性名称和属性值。

set-feedattr 'title' "This is a sample feed"

set-feedattr 'link' "http://my.feed.url.here/"

1

2

3

set-feedattr'title'"This is a sample feed"

set-feedattr'link'"http://my.feed.url.here/"

生成Atom Feeds

PowerShell Web 服务将默认生成 RSS feeds,然而,如果你在feed URL PowerShellRSS的查询字符串中添加“?@atom” ,将会生成Atom格式的Feed。

内置对象

除了运行标准PowerShell代码外,你或许想通过调用如 HttpRequest 和 HttpResponse 的 ASP.NET 内置对象改变 HTTP runtime设置,因为 PowerShell 中使用线程模型,那些对象都不能通过 HttpContext.Runtime 直接访问。

$Request: 包含 HttpRequest 对象。

$Server: 包含 HttpUtility 对象。

$Session: 包含HttpSession对象。

$Application: 包含HttpApplication对象。

$Response: 包含HttpResponse对象. 你可根据自己的意愿直接将代码写在响应流中,也可使用write-host和friends实现。

$Cache: 包含HttpCache对象。

$Context: HttpContext 对象与当前请求相关联。

这些对象工作原理与常规的 ASP.NET 应用程序一样,如下代码可实现将 HttpRequest 对象的所有值转存到 一个简单的HTML 页面:

write "$_ = $($request[$_])
"

} %>

1

2

3

write"$_ = $($request[$_])
"

}%>

正如我们所看到的,这个示例并没有使用模板功能,而是使用简单的 PowerShell 表达式生成并输出的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值