Xml 在powershell中调用函数时,无法处理参数错误的参数转换

Xml 在powershell中调用函数时,无法处理参数错误的参数转换,xml,function,powershell,parameter-passing,Xml,Function,Powershell,Parameter Passing,我有一个powershell脚本,在其中生成xml文件 我的脚本如下: $filePath= "C:\Powershell\Report.xml" if(Test-Path $filePath) { Remove-Item $filePath } #set encoding $encoding = [System.Text.Encoding]::UTF8 # Create The Document $XmlWriter = New-Object System.XMl.XmlText

我有一个powershell脚本,在其中生成xml文件

我的脚本如下:

$filePath= "C:\Powershell\Report.xml"
if(Test-Path $filePath)
{
    Remove-Item $filePath
} 

#set encoding
$encoding = [System.Text.Encoding]::UTF8

# Create The Document
$XmlWriter = New-Object System.XMl.XmlTextWriter($filePath,$encoding)

# Set The Formatting
$xmlWriter.Formatting = "Indented"
$xmlWriter.Indentation = "4"

# Write the XML Decleration
$xmlWriter.WriteStartDocument()

SetNamespace($xmlWriter)

# Write Root Element
$xmlWriter.WriteStartElement($RootElement)

#set Root Element namespaces
SetRootElementNamespace($xmlWriter)

#Create <my:PruefAuftragHeader>

$Ablagenummer = "234"
$Beschrieb = "This is testing"
$Auftraggeber = @("ADAMS","Alu König Stahl","Caradon")

CreatePruefAuftragHeader($xmlWriter ,$Ablagenummer)



Function CreatePruefAuftragHeader([System.Xml.XmlTextWriter] $xmlWriter ,[String] $Ablagenummer)
{
    $xmlWriter.WriteStartElement($PruefAuftragHeaderElement) # opening <my:PruefAuftragHeader>

    $xmlWriter.WriteElementString($AblagenummerElement,$Ablagenummer)
    $xmlWriter.WriteElementString($BeschriebElement,$Beschrieb)

    foreach($elem in $Auftraggeber)
    {
        $xmlWriter.WriteElementString($AuftraggeberElement,$elem)
    }

    $xmlWriter.WriteEndElement #closing <my:PruefAuftragHeader>
}
$filePath=“C:\Powershell\Report.xml”
if(测试路径$filePath)
{
删除项$filePath
} 
#集合编码
$encoding=[System.Text.encoding]::UTF8
#创建文档
$XmlWriter=New Object System.XMl.XmlTextWriter($filePath,$encoding)
#设置格式
$xmlWriter.Formatting=“缩进”
$xmlWriter.Indentation=“4”
#编写XML声明
$xmlWriter.WriteStartDocument()
SetNamespace($xmlWriter)
#写根元素
$xmlWriter.WriteStarteElement($RootElement)
#设置根元素名称空间
SetRootElementNamespace($xmlWriter)
#创造
$Ablagenummer=“234”
$Beschrieb=“这是测试”
$Auftraggeber=@(“亚当斯”、“阿鲁克尼格·斯塔尔”、“卡拉顿”)
CreatePruefAuftragHeader($xmlWriter,$ablagenumer)
函数CreatePruefAuftragHeader([System.Xml.XmlTextWriter]$xmlWriter,[String]$ablagenumer)
{
$xmlWriter.WriteStarteElement($pruefauftrageHeaderElement)#开始
$xmlWriter.WriteElementString($ablagenumerement,$Ablagenummer)
$xmlWriter.WriteElementString($BeschriebElement,$Beschrieb)
foreach($Auftraggeber中的元素)
{
$xmlWriter.WriteElementString($AuftraggeberElement,$elem)
}
$xmlWriter.WriteEndElement#结束
}
当执行到达以下行时:
CreatePruefAuftragHeader($xmlWriter,$Ablagenummer)
它抛出一个错误:
无法处理参数“xmlWriter”上的参数转换。无法将类型为“System.Object[]”的“System.Object[]”值转换为类型
“System.Xml.XmlTextWriter”。


我应该如何处理错误?

如果您这样调用脚本:

CreatePruefAuftragHeader($xmlWriter ,$Ablagenummer)
CreatePruefAuftragHeader $xmlWriter $Ablagenummer
您正在以数组类型传递第一个参数

你必须这样称呼它:

CreatePruefAuftragHeader($xmlWriter ,$Ablagenummer)
CreatePruefAuftragHeader $xmlWriter $Ablagenummer
脚本/函数的In-powershell参数按空格分隔传递,不包含在
()