2016-01-22 67 views
1

我一直在尝试创建一个输出文件,该文件写入多个执行脚本,并从数组列表中获取某个参数。到目前为止,我得到混乱的重复输出。我怎样才能在每一行上获得一个执行命令?这是我的。将新行写入输出

$myArray = @(1,2,3) 

foreach ($element in $myArray) { 

$myobj = "EXECUTE [masterdb].[dbo].[update_rows] @row_num=" +"'"+$element+"'"+","+ "@status = 'Fail'" 
$myprocedure += $myobj 
$myobj = $null 
} 
Out-file -filepath $path -inputobject $myprocedure -width 50 -force 

回答

1

$myprocedure永远不会初始化为数组,所以它成为一个字符串,只需添加更多的文字。要么你需要在执行线的末尾添加换行符:

$myobj = "EXECUTE [masterdb].[dbo].[update_rows] @row_num=" +"'"+$element+"'"+","+ "@status = 'Fail'" + [System.Environment]::NewLine 

或创建一个空数组称为$myprocedure第一:

$myArray = @(1,2,3) 

$myprocedure = @() 
$path = "test.txt" 

foreach ($element in $myArray) { 

    $myobj = "EXECUTE [masterdb].[dbo].[update_rows] @row_num=" +"'"+$element+"'"+","+ "@status = 'Fail'" 
    $myprocedure += $myobj 
    $myobj = $null 
} 
Out-file -filepath $path -inputobject $myprocedure -width 50 -force 

或追加3次到该文件:

$myArray = @(1,2,3) 

$path = "test.txt" 

#remove-item $path if necessary 

foreach ($element in $myArray) { 
    "EXECUTE [masterdb].[dbo].[update_rows] @row_num=" +"'"+$element+"'"+","+ "@status = 'Fail'" | Out-file -filepath $path -width 50 -force -Append 
} 
+0

非常感谢,我不知道我是如何错过它的。 – user2382789