首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何围绕IIS AppCmd封装Powershell

如何围绕IIS AppCmd封装Powershell
EN

Stack Overflow用户
提问于 2021-01-04 16:31:13
回答 2查看 514关注 0票数 0

我正在尝试将Powershell封装在AppCmd上,以执行一些安全性遵从性检查。我决定这样做,而不是使用powershell的Get-WebConfiguration命令,因为对于所有这些检查,安全策略已经提供了相应的AppCmd命令。因此,我决定编写一个函数,以变量的形式接受提供的AppCmd命令和参数,并在powershell中运行这些命令和参数,并可能将结果传递给另一个函数,而不是花费太多的时间试图解决等效的命令。

我面临许多将变量值传递给AppCmd的问题。以下代码工作:

代码语言:javascript
复制
$appCmd = "C:\Windows\system32\inetsrv\appcmd.exe"
& $appCmd list config /section:system.web/authentication /text:forms.requireSSL

到目前一切尚好。现在,下面的代码导致一个错误:

代码语言:javascript
复制
$appCmd = "C:\Windows\system32\inetsrv\appcmd.exe"
$appcmd_args = "list config /section:system.web/authentication /text:forms.requireSSL"

& $appCmd $appcmd_args

该错误如下:

代码语言:javascript
复制
Object 'LIST CONFIG /SECTION:SYSTEM.WEB/AUTHENTICATION /TEXT:FORMS.REQUIRESSL' is not supported.  Run 'appcmd.exe /?' to display supported objects.

我阅读了前一篇文章,其中建议在将变量传递给${}时使用AppCmd。所以,试过这个:

代码语言:javascript
复制
$appCmd = "C:\Windows\system32\inetsrv\appcmd.exe"
$appcmd_args = "list config /section:system.web/authentication /text:forms.requireSSL"

& $appCmd ${appcmd_args}

我可能做错了,所以我得到了与上面相同的错误。我还注意到,下面的代码也有相同的错误:

代码语言:javascript
复制
$appCmd = "C:\Windows\system32\inetsrv\appcmd.exe"
& $appCmd "list config /section:system.web/authentication /text:forms.requireSSL"

也许需要进行某种类型的转换或调整?

所有的AppCmd命令和参数都将通过变量提供,因此,如果这项技术不起作用,我的计划就会失败。很明显我漏掉了什么。你能给我一个解决方案的建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-04 17:34:25

因为appcmd.exe需要用空格分隔的参数,所以不能将其全部作为一个字符串发送。我会采取这些方法之一。

用逗号分隔每个参数,然后分割它们。

代码语言:javascript
复制
$appcmd_args = "list", "config", "/section:system.web/authentication", "/text:forms.requireSSL"

& $appCmd $appcmd_args

或者,您可以像下面这样将参数拆分成一行

代码语言:javascript
复制
$appcmd_args = "list config /section:system.web/authentication /text:forms.requireSSL"

& $appCmd (-split $appcmd_args)
票数 2
EN

Stack Overflow用户

发布于 2021-01-04 19:23:07

经过几个小时的尝试和错误,我发现这是可行的。

代码语言:javascript
复制
$appCmd = "C:\Windows\system32\inetsrv\appcmd.exe"
$appcmd_args = "list config /section:system.web/authentication /text:forms.requireSSL"
$AppCmd_Command = [string]::Format("{0} {1}", $appCmd, $appcmd_args)

iex $AppCmd_Command
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65566237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档