我试图做一些字符串连接/格式化,但它将所有参数放入第一个占位符。

function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
    # Command to create an IIS application pool
    $AppPoolScript = "cscript adsutil.vbs CREATE ""w3svc/AppPools/$AppPoolName"" IIsApplicationPool`n"
    $AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/WamUserName"" ""$AppPoolUser""`n"
    $AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/WamUserPass"" ""$AppPoolPass""`n"
    $AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/AppPoolIdentityType"" 3"

    return $AppPoolScript
}
$s = CreateAppPoolScript("name", "user", "pass")
write-host $s

产量

cscript adsutil.vbs CREATE "w3svc/AppPools/name user pass" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/WamUserName" ""
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/WamUserPass" ""
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/AppPoolIdentityType" 3

===============>>#1 票数:47 已采纳

丢失括号和逗号。

将您的功能称为:

$s = CreateAppPoolScript "name" "user" "pass"

得到:

cscript adsutil.vbs CREATE "w3svc/AppPools/name" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserName" "user"
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserPass" "pass"
cscript adsutil.vbs SET "w3svc/AppPools/name/AppPoolIdentityType" 3

===============>>#2 票数:4

顺便说一下,使用PowerShell here-string可能会使您的函数更容易阅读,因为您不需要将所有" -marks "加倍:

function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
  # Command to create an IIS application pool
  return @"
cscript adsutil.vbs CREATE "w3svc/AppPools/$AppPoolName" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserName" "$AppPoolUser"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserPass" "$AppPoolPass"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/AppPoolIdentityType" 3
"@
}

===============>>#3 票数:3

保罗是对的。
在PowerShell中,函数参数未包含在括号中。 (方法参数仍然是。)
您的初始调用只是将一个大数组传递给函数,而不是您想要的三个独立参数。

  ask by Brian Lyttle translate from so

未解决问题?本站智能推荐:

3回复

将参数传递给Powershell

我有一个powershell脚本,可以完成Active Directory和MS Exchange中的一些任务。 我需要从我们的呼叫记录系统传入Active Directory用户名。 让Call日志系统传递参数很简单。 我面临的问题是让PowerShell将参数读入变量。 我将
2回复

Powershell:将参数传递给作业

我有一个需要多个参数的脚本: 在命令提示符下调用时,例如 powershell。\\ bcpCopy.ps1 -CFROM earn_n_deduct_actg -CTO fin_earn_n_deduct_actg -CCOL f_edeh_doc_id 一切正常。
1回复

在Powershell中将参数传递给mysql.exe

我的任务是将批处理脚本转换为Powershell。 该批处理脚本仅将参数传递给mysql.exe即可运行查询并将其导出到.txt文件中。 作为批处理文件运行时,此方法有效,但是由于将其粘贴到powershell中,因此出现以下错误。 码: 这是我得到的错误: 我希望&l
1回复

如何将数组作为参数传递给另一个脚本?

出于某种原因,看起来我不能将字符串数组作为参数传递给scriptblock。 我在这做错了什么? 我的脚本是从另一个脚本调用的: 我把它从另一个脚本称为 我只得到了数组中的第一项 - “111”。
2回复

如何将复杂的链作为参数传递给批处理“ index1”,“ index2”,“ index3”

我想将此字符串'index1','index2','index3'传递给批处理 如果test2.cmd是 我想看 但这不起作用...因为我明白了 我该如何解决?
2回复

如何在Powershell中处理参数的多个选项?

我希望能够具有相同参数的多种形式,例如: 但我不确定该怎么做。 大多数情况下,您只能选择一个(例如,仅$ p或仅$ path)。 同一变量/参数可以使用多个名称吗?
5回复

我如何抑制用户在没有参数参数的情况下调用我的Powershell脚本时发生的错误

例如,我的脚本可以这样称呼: 如果在不传递带有-s参数的参数的情况下调用它,则会收到错误消息: 有什么办法可以抑制此错误,或使自定义错误出现:
1回复

Powershell参数验证问题

我正在从另一个脚本中调用这样的Powershell脚本。 当我调用该函数时,我从Powershell收到一条错误消息,提示“无法验证参数'Query'上的参数。 参数为null或为空。...' 我不太明白为什么要收到该消息? Execute-SQL-Command脚本没有名为“
1回复

cmd参数的Powershell变量

我想为一个cmd参数使用一个powershell变量,但我不知道如何制作它。 例如,newcredit可以是“James”,但在我的情况下,当我运行命令时-Credit将只是“$ newcredit”。 问候
3回复

PowerShell参数和管道的推荐格式

以这样的命令为例: 当然它是粗略的,长的并且离开屏幕...在多行上分割它的首选方法是什么(提高可读性)? 请提供适用于ISE,简单PowerShell解释器和脚本的示例。