Runbook 测试窗格未显示写入输出
Runbook test pane is not showing Write-Output
我是自动化的新手,也是 Powershell 的新手,所以我希望这是一个简单的修复。 :)
我正在尝试获取 运行 的一些代码。据我所知,它确实 运行,但测试窗格没有显示任何内容。基于此线程:Azure powershell runbook don't show any output,我确实尝试重新发布代码并清除浏览器缓存,但这对我的情况没有帮助,所以我认为代码有问题?
这是我的(通用化)代码:
workflow DB_DailyTasks
{
Write-Output "Code starting"
inlinescript
{
[string] $SqlServerName = "myDb.database.windows.net"
$Credential = Get-AutomationPSCredential -Name "myDatabase-automation"
# Setup credentials
$ServerName = $Using:SqlServerName
$UserId = $Using:Credential.UserName
$Password = ($Using:Credential).GetNetworkCredential().Password
# Execute the udp_myProc procedure
# Create connection for each individual database
$DatabaseConnection = New-Object System.Data.SqlClient.SqlConnection
$DatabaseCommand = New-Object System.Data.SqlClient.SqlCommand
Write-Output "ConnectionState is: $(DatabaseConnection.State)"
$DbName = "myDb"
# Setup connection string for $DbName
$DatabaseConnection.ConnectionString = "Server=$ServerName; Database=$DbName; User ID=$UserId; Password=$Password;"
$DatabaseConnection.Open();
Write-Output "ConnectionState is: $(DatabaseConnection.State)"
# Create command for a specific database $DBName
$DatabaseCommand.Connection = $DatabaseConnection
Write-Output "Running udp_myProc procedure"
$DatabaseCommand.CommandText = "EXECUTE [dbo].[udp_myProc]"
$NonQueryResult = $DatabaseCommand.ExecuteNonQuery()
# Close connection to $DbName
$DatabaseConnection.Close()
}
}
...这是我尝试测试时在测试窗格中看到的内容:
...这对于了解它是否真的 运行 没有太大帮助。
提前感谢您提供的任何帮助! :)
[编辑] 代码绝对不是 运行ning。存储过程将条目插入到历史记录 table 中,但没有记录 运行ning 用于测试或当我 运行 发布的输出时。
有趣的是,当我 运行 发布输出时,没有错误也没有警告,但它确实在“输出”选项卡中显示 "This job does not have any output"。
[编辑 #2]:它也不会在我的本地计算机上写入任何内容??
[编辑 #3]:将内联脚本块内的 Write-Output 替换为 Write-Host。在 Azure 管理控制台或我的本地计算机上都没有变化。
我猜您创建的是 PowerShell 运行手册,而不是 PowerShell Workflow 运行手册。如果这是正确的,那么您的 Runbook 代码 声明 一个名为 DB_DailyTasks 的工作流,但永远不会 调用 它。例如,您可以 声明 一个函数,但不会期望它因此自动 被调用 。
除非您确定需要 工作流 ,而不是常规的 PowersShell 运行手册,否则我建议您从代码中删除 workflow
和 InlineScript
,并处理常规 PowerShell。
但是,如果您真的需要它作为工作流程(不推荐,除非您必须使用检查点和 parallel
和 foreach -parallel
之类的东西),然后创建 "PowerShell Workflow" 类型:它以不同的方式对待 workflow
关键字,因此您的代码是正确的。
我是自动化的新手,也是 Powershell 的新手,所以我希望这是一个简单的修复。 :)
我正在尝试获取 运行 的一些代码。据我所知,它确实 运行,但测试窗格没有显示任何内容。基于此线程:Azure powershell runbook don't show any output,我确实尝试重新发布代码并清除浏览器缓存,但这对我的情况没有帮助,所以我认为代码有问题?
这是我的(通用化)代码:
workflow DB_DailyTasks
{
Write-Output "Code starting"
inlinescript
{
[string] $SqlServerName = "myDb.database.windows.net"
$Credential = Get-AutomationPSCredential -Name "myDatabase-automation"
# Setup credentials
$ServerName = $Using:SqlServerName
$UserId = $Using:Credential.UserName
$Password = ($Using:Credential).GetNetworkCredential().Password
# Execute the udp_myProc procedure
# Create connection for each individual database
$DatabaseConnection = New-Object System.Data.SqlClient.SqlConnection
$DatabaseCommand = New-Object System.Data.SqlClient.SqlCommand
Write-Output "ConnectionState is: $(DatabaseConnection.State)"
$DbName = "myDb"
# Setup connection string for $DbName
$DatabaseConnection.ConnectionString = "Server=$ServerName; Database=$DbName; User ID=$UserId; Password=$Password;"
$DatabaseConnection.Open();
Write-Output "ConnectionState is: $(DatabaseConnection.State)"
# Create command for a specific database $DBName
$DatabaseCommand.Connection = $DatabaseConnection
Write-Output "Running udp_myProc procedure"
$DatabaseCommand.CommandText = "EXECUTE [dbo].[udp_myProc]"
$NonQueryResult = $DatabaseCommand.ExecuteNonQuery()
# Close connection to $DbName
$DatabaseConnection.Close()
}
}
...这是我尝试测试时在测试窗格中看到的内容:
...这对于了解它是否真的 运行 没有太大帮助。
提前感谢您提供的任何帮助! :)
[编辑] 代码绝对不是 运行ning。存储过程将条目插入到历史记录 table 中,但没有记录 运行ning 用于测试或当我 运行 发布的输出时。
有趣的是,当我 运行 发布输出时,没有错误也没有警告,但它确实在“输出”选项卡中显示 "This job does not have any output"。
[编辑 #2]:它也不会在我的本地计算机上写入任何内容??
[编辑 #3]:将内联脚本块内的 Write-Output 替换为 Write-Host。在 Azure 管理控制台或我的本地计算机上都没有变化。
我猜您创建的是 PowerShell 运行手册,而不是 PowerShell Workflow 运行手册。如果这是正确的,那么您的 Runbook 代码 声明 一个名为 DB_DailyTasks 的工作流,但永远不会 调用 它。例如,您可以 声明 一个函数,但不会期望它因此自动 被调用 。
除非您确定需要 工作流 ,而不是常规的 PowersShell 运行手册,否则我建议您从代码中删除 workflow
和 InlineScript
,并处理常规 PowerShell。
但是,如果您真的需要它作为工作流程(不推荐,除非您必须使用检查点和 parallel
和 foreach -parallel
之类的东西),然后创建 "PowerShell Workflow" 类型:它以不同的方式对待 workflow
关键字,因此您的代码是正确的。