【问题标题】:PowerShell parameters from file文件中的 PowerShell 参数
【发布时间】:2015-01-22 12:11:49
【问题描述】:

我在使用命名参数调用函数时遇到了一些问题。

这是函数在单独文件 (Security.ps1) 中的声明:

function Add-SSRSItemSecurity
(
    [Parameter(Position=0,Mandatory=$false)]
    [Alias("SSRSrange")]
    [string]$range,[Parameter(Position=1,Mandatory=$false)]
    [Alias("path")]
    [string]$itemPath,

    [Parameter(Position=2,Mandatory=$false)]
    [Alias("grp")]
    [string]$groupUserName,

    [Parameter(Position=3,Mandatory=$false)]
    [Alias("SSRSrole")]
    [string]$role,

    [Parameter(Position=2)]
    [bool]$inherit=$true
)

然后我在另一个 Host.ps1 脚本中调用这个函数:

    Set-Location 'C:\SSRSJobs'
    . .\SSRSsecurity.ps1

此调用适用于 Host 文件:

Add-SSRSItemSecurity -range "server1" -itemPath "/Test" -groupUserName "CN\Group" -role "Browser"

我尝试将多个参数作为循环传递给函数,但每次都调用新变量:

$securityArray = @()
$securityArray = Get-Content -Path "C\ReleaseSecurity.txt"
    foreach($line in $securityArray)
    {
        Add-SSRSItemSecurity $line;
    }

文件有:

-range "server1" -itemPath "/Test" -groupUserName "CN\Group" -role "Browser"
-range "server2" -itemPath "/Test" -groupUserName "CN\Group" -role "Browser"
-range "server3" -itemPath "/Test" -groupUserName "CN\Group" -role "Browser"

我得到的错误是:

Add-SSRSItemSecurity : Cannot bind positional parameters because no names were given.
At line:229 char:27
+                         Add-SSRSItemSecurity <<<<  $line;
    + CategoryInfo          : InvalidArgument: (:) [Add-SSRSItemSecurity], ParameterBindingExcepti
   on
    + FullyQualifiedErrorId : AmbiguousPositionalParameterNoName,Add-SSRSItemSecurity

检查字符串,$line 变量确实包含正确的参数命名。我已经尝试了各种错误捕获,但除了上述之外,我无法得到一个像样的错误消息。我也尝试过引用的形式,但我无法获得查看名称绑定的功能。

是否可以在仅绑定到 PowerShell 变量名的函数中调用多个变量?

【问题讨论】:

    标签: function powershell binding parameters


    【解决方案1】:

    您可以为此使用splatting。将参数保存为 CSV,如下所示:

    "range","itemPath","groupUserName","role"
    "server1","/Test","CN\Group","Browser"
    "server2","/Test","CN\Group","Browser"
    "server3","/Test","CN\Group","Browser"
    

    并像这样加载它:

    Import-Csv 'C:\ReleaseSecurity.txt' | % {
      Add-SSRSItemSecurity @_
    }
    

    【讨论】:

    • 安斯加尔,你这个天才!我没有使用您的代码,但确实使用了您的方法,并且效果很好!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多