Powershell脚本调用函数

时间:2014-03-12 16:46:28

标签: function powershell

试图在PS中做一些非常简单的事情,但由于一些奇怪的原因,它只是不打球。我的PS脚本如下:

出于某种原因,它抱怨说:

enableMSDTC:术语' enableMSDTC'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我不允许这样做吗?我必须为每个函数都有一个单独的脚本文件吗?

提前致谢,DS。

    param
    (
        [string]$folder = $(throw 'Local folder to map to is required.')
    )

    begin
    {
        [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
    }
    process
    {
$hasDrive = Test-Path -Path "D:\"

    if ($hasDrive -eq $true) {
        echo "Enabling MSDTC settings..."
        enableMSDTC    
    }

    Function enableMSDTC() {
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "LuTransactions" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccess" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessAdmin" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessClients" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessInbound" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessOutbound" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessTransactions" -Value "1"
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSDTC\Security" -Name "NetworkDtcAccessXaTransactions" -Value "1"        
    }
}

2 个答案:

答案 0 :(得分:1)

在尝试调用之前定义函数。

答案 1 :(得分:0)

Powershell是一种解释语言,这意味着在运行时按顺序(自顶向下)解析命令。

在定义变量之前,不能调用函数或引用变量。