使用函数创建动态变量

时间:2017-11-21 19:17:03

标签: powershell

我的代码

$SQLResults = Invoke-SQLCmd -ServerInstance $SeverInstance-Database $DataBase -query $Query

$Results = $SQLResults | gm | where { $_.membertype -eq "Property" }



        foreach($Name in $Results)
        {
            $var = $Name.name
            New-Variable -name "$var" -Value $var
        }



function reset-variables($Results)
{
    get-variable | where {$_.name -match $_.value} | foreach Remove-Variable -Force
}                 

使用PowerShell

主要次要构建修订

5 0 10586 117

我想创建一组动态创建和删除变量的函数。这只是为了为pester测试集成创建更好的代码。我遇到的问题是以下代码发布了我还没有看到过的Unrecognized escape sequence等不同的奇怪异常。权限是正确的我将结果存储在$SQLResults$Results中但是当我调用我的函数并传入$Results时,什么都不会发生。但是,如果我运行get-variable | where {$_.name -match $_.value} | foreach Remove-Variable -Force之类的内部命令,则会抛出cannot be resolved to a method异常。但它删除了变量!

感谢您的时间。

*** EDIT 我能够获得正确的创作行为

$Results = $SQLResults | gm | where { $_.membertype -eq "Property" }
$b = $Results.name
$c = [string]$b -split " "

        foreach($Name in $Results)
        {
            $var = $Name.name
            New-Variable -name "$var" -Value $var
        }

以及正确的删除行为

foreach($i in $c){
    Remove-Variable $i
    }

请帮助我理解A)如何创建可以使用这些行为的函数或B)为什么范围不允许这些内部工作如果创建函数我一直得到以下错误

Remove-Variable : Cannot find a variable with the name 'apple'.
At line:4 char:9
+Remove-Variable $i
+         ~~~~~~~~~~~~~~~~~~
+ CategoryInfo: ObjectNotFound: (apple:String) [Remove-Variable ItemNotFoundException
+ FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.RemoveVariableCommand 

尽管当我在函数外部解析$ c(包括苹果)时,变量$ apple存在值为“apple”,但它将删除它但不在内部。

0 个答案:

没有答案