我的代码
$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”,但它将删除它但不在内部。