无法获得Runbook测试(在门户中)以要求输入参数

时间:2019-09-13 19:35:03

标签: azure powershell azure-automation

我对自动化是全新的,并且正在尝试获取Runbook以连接到sql数据库并运行存储过程。问题是,当我尝试对其进行测试时,我使用的代码(改编自https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/)没有询问服务器和凭据参数。测试窗口将显示“无输入参数”。

这是我的(通用)代码:

workflow DB_DailyTasks 
{
    param
    (
        # Fully-qualified name of the Azure DB server 
        [parameter(Mandatory=$true)] 
        [string] $SqlServerName="mydb.database.windows.net",

        # Credentials for $SqlServerName stored as an Azure Automation credential asset
        # When using in the Azure Automation UI, please enter the name of the credential asset for the "Credential" parameter
        [parameter(Mandatory=$true)] 
        [PSCredential] $Credential
    )

    inlinescript
    {

        # Setup credentials   
        $ServerName = $Using:SqlServerName
        $UserId = $Using:Credential.UserName
        $Password = ($Using:Credential).GetNetworkCredential().Password

        # Execute the udp_Test procedure

        # Create connection for each individual database
        $DatabaseConnection = New-Object System.Data.SqlClient.SqlConnection
        $DatabaseCommand = New-Object System.Data.SqlClient.SqlCommand

        $DbName = "myDB"

        # Setup connection string for $DbName
        $DatabaseConnection.ConnectionString = "Server=$ServerName; Database=$DbName; User ID=$UserId; Password=$Password;"
        $DatabaseConnection.Open();

        # Create command for a specific database $DBName
        $DatabaseCommand.Connection = $DatabaseConnection

        Write-Output "Running udp_Test procedure"

        $DatabaseCommand.CommandText = "EXECUTE [dbo].[udp_Test]"
        $NonQueryResult = $DatabaseCommand.ExecuteNonQuery()

        # Close connection to $DbName
        $DatabaseConnection.Close()        
    }    
}

我在自动化帐户中存储了一些凭据,但是我无法为其进行实际的测试!当我测试时,它说:“没有输入参数。”我在做错什么吗?

2 个答案:

答案 0 :(得分:1)

我不太确定这一点,因为我实际上选择删除参数,只是使用硬编码的服务器名称和对凭证的硬编码引用(这不会改变)。但是,当我这样做时,我遇到了不同的问题,我在这里发布了这些问题:Runbook test pane is not showing Write-Output ...并且答案是代码声明了工作流运行手册,而Azure中的运行手册是常规的Powershell运行手册。 (直到现在我才意识到有什么区别)。但这导致代码实际上根本没有运行。一旦我删除了工作流程定义和内联脚本块(仅保留代码),并删除了$ using并修复了其他一些东西,它就起作用了。

我的猜测是,因为脚本根本没有真正运行,所以这就是为什么它没有更早地要求参数的原因,如果我选择保留参数,然后删除工作流程定义和内联脚本块本来可以解决这个问题。

答案 1 :(得分:0)

它没有输入参数,因为AFAIK您没有为Runbook提供正确的所需输入凭据。您必须使用Get-AutomationPSCredential cmdlet来执行此操作。我尚未进行端到端测试,但是很可能您可以点击this链接来满足您的要求。

希望这会有所帮助!