你自己的代碼中做的是:
[object] $x = 'abc', 'def'
==>類型 'ABC' 和 '高清' 是[System.String]。因爲你用逗號分隔它們,PowerShell會自動創建一個列表。所以執行該行$ x是一個System.Object []。索引0和1包含[System.String]。
$x = $null;
==>現在您定義$ null作爲$ x的值。所以你正在消除價值。 $ x的類型現在未發現。您可以設置值123,然後$ x將變成類型System.Int32。你可以重新定義一個字符串等等。
在你的for循環使用
$x += 'somestring' + $addingSomeStuff + 'otherstring'
==>這裏的結果是,for循環的PowerShell的第一次迭代內將一個字符串賦值給$ x。所以$ x的類型將是[System.String]。在下一次迭代中,+ =運算符將額外內容添加到$ x的值,該值仍然是[System.String]
不要將$ x設置爲$ null。因爲你會丟失類型信息。有關更多信息,請閱讀PowerShell Extended Type System。
以下片段適用。希望有所幫助。
############################################
# The following was not part of your post #
# I added it to get it run in general #
$numberOfColumns = 2
$NamesOfColumns = 'Column1', 'Column2'
############################################
[object] $x = 'abc','def';
# don't set $x to $null
# define an empty list instead ;-)
$x = @()
for ($i = 0; $i -lt $numberOfColumns; $i++) {
$x += '$_.' + $NamesOfColumns[$i] + '.Trim()';
}
謝謝你的回覆。它在保持它作爲一個對象的工作,但動態它仍然看到對象不同,當你鍵入它。等待..完成評論仍然輸入 –
我相信我告訴過你,但你採取的方法(建設和調用命令字符串)是不必要的複雜和令人費解。將代碼調整到我爲迴應最後一個問題而發佈的內容時,您的時間將會更長*而不是解決所有如果繼續此路線將不可避免地彈出的陷阱和問題。 –