首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell appcmd.exe正在尝试执行

Powershell appcmd.exe正在尝试执行
EN

Stack Overflow用户
提问于 2019-01-17 23:45:22
回答 1查看 219关注 0票数 0

我必须向appPools添加一些环境吗?我尝试了下面的代码:

代码语言:javascript
复制
$Appcmd = [System.Environment]::SystemDirectory + "\inetsrv\appcmd.exe"

& $appcmd --% set config -section:system.applicationHost/applicationPools /+""[name='$Task.eProto_Pool'].environmentVariables.[name='PRODUCT_NAME',value='eProto']"" /commit:apphost"

但是第二行的$Task不起作用,我怎么能把一个变量传递给这个字符串呢?我还尝试了%Task%

EN

回答 1

Stack Overflow用户

发布于 2019-01-18 00:16:49

.eProto_Pool$Task的属性。如果要在字符串中取消引用(即检索对象的单个属性),则需要使用$() ( PowerShell中的子表达式运算符)对字符串进行包装。

例如,我将创建一个名为$MyString的新哈希表,它有两个属性。

代码语言:javascript
复制
$MyString = @{Name = "Stephen";Value="CoolDude"}

>$MyString

Name                           Value
----                           -----
Value                          CoolDude
Name                           Stephen

看看如果我用常规的字符串扩展在一个字符串中引用它会发生什么。这基本上就是你在上面的例子中所做的。看看它是如何不能像你预期的那样工作的?

代码语言:javascript
复制
write-host " The user $MyString.Name is a $MyString.Value"
 The user System.Collections.Hashtable.Name is a System.Collections.Hashtable.Value

使用子表达式运算符保存日期的时间。

代码语言:javascript
复制
write-host " The user $($MyString.Name) is a $($MyString.Value)"
 The user Stephen is a CoolDude

当有疑问的时候,把它表达出来。

再看一眼

我认为可能是%的百分比符号引起了你的悲痛。这是PowerShell中ForEach-Object命令的简写形式。试着这样做:

代码语言:javascript
复制
Invoke-expression "$appcmd --% set config -section:system.applicationHost/applicationPools /+`"`"[name='$($Task.eProto_Pool)'].environmentVariables.[name='PRODUCT_NAME',value='eProto']`"`" /commit:apphost`""

这应该会像您需要的那样转义字符串,并传入参数,就像$TaskeProto_Pool属性一样。

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

https://stackoverflow.com/questions/54239460

复制
相关文章

相似问题

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