[英]Extra empty column in the Out-GridView (powershell 4)?
我有以下代码片段:
function MyTestString { [string]$OutString $OutString = 'ABCDEFG' #$OutString | Out-GridView -Wait -Title "String inside function" return $OutString } $MyString = MyTestString | Out-GridView -Wait -Title "Getting Extra Column"
当我在Powershell
中运行它时,我在网格视图中得到一个额外的空列。 如果Out-GridView
放在 function 内,则没有空列。 Export-Clixml
也发生了同样的事情。
如何避免网格中的空列? 我想知道为什么我在GridView
中得到一个空列。
这是额外空列的屏幕截图:
谢谢您的帮助。
那将是额外的row
而不是列,这是由 function 主体引起的。 让我们检查一下。
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
现在我们正在取得进展。 function 返回一个数组。 它的内容如何?
PS C:\> $o[0]
PS C:\> $o[1]
ABCDEFG
第零个元素除了空虚之外什么都不包含。 这看起来很奇怪,所以让我们确保 Powershell 正在使用严格模式(默认情况下不会这样做。这是一个脑残的设计决定。)
Set-StrictMode -Version 'latest'
MyTestString
The variable '$OutString' cannot be retrieved because it has not been set.
At line:3 char:13
+ [string]$OutString
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (OutString:String) [],
RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined
我们再来看看 function 本体:
{
[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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.