String Out GridView(powershell 4)中是否有额外的空列?
我有以下代码片段:String Out GridView(powershell 4)中是否有额外的空列?,string,powershell,powershell-4.0,String,Powershell,Powershell 4.0,我有以下代码片段: 函数MyTestString { [字符串]$OutString $OutString='ABCDEFG' #$OutString | Out GridView-等待-标题“函数内字符串” 返回$OutString } $MyString=MyTestString | Out GridView-Wait-Title“get Extra Column”这将是额外的行而不是列,它是由函数体引起的。让我们检查一下 function MyTestString { [s
函数MyTestString
{
[字符串]$OutString
$OutString='ABCDEFG'
#$OutString | Out GridView-等待-标题“函数内字符串”
返回$OutString
}
$MyString=MyTestString | Out GridView-Wait-Title“get Extra Column”
这将是额外的行而不是列,它是由函数体引起的。让我们检查一下
function MyTestString
{
[string]$OutString
$OutString = 'ABCDEFG'
return $OutString
}
MyTestString
ABCDEFG
好的,看起来直接呼叫会返回额外的行。真的是这样吗
$o=MyTestString
$o
ABCDEFG
让我们看看里面的$o
:
$o.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
现在我们正在取得进展。函数返回一个数组。内容如何
PS C:\> $o[0]
PS C:\> $o[1]
ABCDEFG
第0个元素只包含空。这看起来很奇怪,所以让我们确保Powershell使用的是严格模式(默认情况下它不会这样做。这是一个死脑筋的设计决策。)
让我们再看看函数体:
{
[string]$OutString
$OutString = 'ABCDEFG'
#$OutString | Out-GridView -Wait -Title "String inside function"
return $OutString
}
注意[string]
部分?这不是一个可变的声明。它将其内容返回到管道中。当Powershell未处于严格模式时,它将返回一个很大的空元素,即$o[0]
。在严格模式下,Powershell注意到正在访问未初始化的变量
至于修复方法,请将值指定给OutString
——除非您尝试使用参数
function MyTestString
{
[string]$OutString = 'ABCDEFG'
return $OutString
}
这将是额外的行
而不是列,这是由函数体引起的。让我们检查一下
function MyTestString
{
[string]$OutString
$OutString = 'ABCDEFG'
return $OutString
}
MyTestString
ABCDEFG
好的,看起来直接呼叫会返回额外的行。真的是这样吗
$o=MyTestString
$o
ABCDEFG
让我们看看里面的$o
:
$o.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
现在我们正在取得进展。函数返回一个数组。内容如何
PS C:\> $o[0]
PS C:\> $o[1]
ABCDEFG
第0个元素只包含空。这看起来很奇怪,所以让我们确保Powershell使用的是严格模式(默认情况下它不会这样做。这是一个死脑筋的设计决策。)
让我们再看看函数体:
{
[string]$OutString
$OutString = 'ABCDEFG'
#$OutString | Out-GridView -Wait -Title "String inside function"
return $OutString
}
注意[string]
部分?这不是一个可变的声明。它将其内容返回到管道中。当Powershell未处于严格模式时,它将返回一个很大的空元素,即$o[0]
。在严格模式下,Powershell注意到正在访问未初始化的变量
至于修复方法,请将值指定给OutString
——除非您尝试使用参数
function MyTestString
{
[string]$OutString = 'ABCDEFG'
return $OutString
}
你的解释和分析很好。非常感谢。你的解释和分析非常好。谢谢。