Powershell Web Server 页面上的两个或多个操作
Powershell Web Server two or more actions on a page
通过使用 GIT Hub URL 中的一些说明和我自己的工作,我创建了一个 Powershell Web 服务器。但现在我停在了如何在一页上的不同变量中存储两个或多个数据。
例如,在这种情况下,我需要为命令 New-AdUser 提供用户名和经理姓名。我将拥有比这两个更多的数据,但我们暂时保留它。
网站目前的样子:
执行此脚本后我收到:
?CreateName=John+Doe&CreateManager=John+Lenon&CreateButton=create
不可能将变量一分为二,两个名称都在同一个变量中,我可以使用 -replace 清除不必要的数据,但正如我所说,我需要将它们分成两个变量 $ 才能它工作正常。
正如您在下面的代码中看到的,我在一个页面上使用了两个 GET 方法来输入不同的变量。
!HEADERLINE
<p>
<h2> This is a Header </h2>
<h3>some text in here</h3>
<pre>!RESULT</pre>
<form method="GET" action="/">
<b>User Name</b></br><input type="text" maxlength=255 size=50 name="CreateName" value=''>
</br><form method="GET" action="/">
<b>Manager Name</b></br><input type="text" maxlength=255 size=50 name="CreateManager" value=''>
</br>
</br><input type="submit" name="CreateButton" value="create" >
</form>
</p>
这是来自 switch GET 的部分代码,目前,它只是向我显示输出,所以请注意这一点。
switch ($RECEIVED)
{
"GET /"
{ # execute command
# retrieve GET query string
$CreateUserName = ''
$CreateUserName = [URI]::UnescapeDataString(($REQUEST.Url.Query))
$RESULT = $CreateUserName 2> $NULL | Out-String
但我想要的是收到:
$CreateName = 'John Doe'
$CreateManager = 'John Lenon'
将数据从HTML表格中存入,插入到
New-ADUser -Name $CreateName -Manager $CreateManager
这是我第一次在网络服务器上写脚本,但是我在Powershell中有很多完整的脚本。我希望除了 运行 其他 ps1 脚本之外还有其他选项直接来自 URL
通过访问 .Net Framework class HttpUtility
您可以轻松解析查询字符串。
$query = '?CreateName=John+Doe&CreateManager=John+Lenon&CreateButton=create'
$queryString = [System.Web.HttpUtility]::ParseQueryString($query)
$createName = $queryString['CreateName']
Write-Host $createName
显示器
John Doe
不确定是否有更多 Powershell 风格的解决方案,但这应该可行。另请查看 $queryString.AllKeys
。在循环中处理多个字段可能很有用。
此外,如果您收到完整的 url,您可以执行以下操作:$uri = New-Object System.Uri 'http://example.com?CreateName=John+Doe
,然后检索 url $uri.Query
的查询部分。因此,要获取查询字符串对象,它是:$queryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
通过使用 GIT Hub URL 中的一些说明和我自己的工作,我创建了一个 Powershell Web 服务器。但现在我停在了如何在一页上的不同变量中存储两个或多个数据。 例如,在这种情况下,我需要为命令 New-AdUser 提供用户名和经理姓名。我将拥有比这两个更多的数据,但我们暂时保留它。
网站目前的样子:
执行此脚本后我收到:
?CreateName=John+Doe&CreateManager=John+Lenon&CreateButton=create
不可能将变量一分为二,两个名称都在同一个变量中,我可以使用 -replace 清除不必要的数据,但正如我所说,我需要将它们分成两个变量 $ 才能它工作正常。
正如您在下面的代码中看到的,我在一个页面上使用了两个 GET 方法来输入不同的变量。
!HEADERLINE
<p>
<h2> This is a Header </h2>
<h3>some text in here</h3>
<pre>!RESULT</pre>
<form method="GET" action="/">
<b>User Name</b></br><input type="text" maxlength=255 size=50 name="CreateName" value=''>
</br><form method="GET" action="/">
<b>Manager Name</b></br><input type="text" maxlength=255 size=50 name="CreateManager" value=''>
</br>
</br><input type="submit" name="CreateButton" value="create" >
</form>
</p>
这是来自 switch GET 的部分代码,目前,它只是向我显示输出,所以请注意这一点。
switch ($RECEIVED)
{
"GET /"
{ # execute command
# retrieve GET query string
$CreateUserName = ''
$CreateUserName = [URI]::UnescapeDataString(($REQUEST.Url.Query))
$RESULT = $CreateUserName 2> $NULL | Out-String
但我想要的是收到:
$CreateName = 'John Doe'
$CreateManager = 'John Lenon'
将数据从HTML表格中存入,插入到
New-ADUser -Name $CreateName -Manager $CreateManager
这是我第一次在网络服务器上写脚本,但是我在Powershell中有很多完整的脚本。我希望除了 运行 其他 ps1 脚本之外还有其他选项直接来自 URL
通过访问 .Net Framework class HttpUtility
您可以轻松解析查询字符串。
$query = '?CreateName=John+Doe&CreateManager=John+Lenon&CreateButton=create'
$queryString = [System.Web.HttpUtility]::ParseQueryString($query)
$createName = $queryString['CreateName']
Write-Host $createName
显示器
John Doe
不确定是否有更多 Powershell 风格的解决方案,但这应该可行。另请查看 $queryString.AllKeys
。在循环中处理多个字段可能很有用。
此外,如果您收到完整的 url,您可以执行以下操作:$uri = New-Object System.Uri 'http://example.com?CreateName=John+Doe
,然后检索 url $uri.Query
的查询部分。因此,要获取查询字符串对象,它是:$queryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)