Powershell “这是怎么回事?”;“输入对象”;无效的
我有一个脚本,它已经在服务器上运行了2年了。在过去的一周里,我突然记录了以下错误:Powershell “这是怎么回事?”;“输入对象”;无效的,powershell,Powershell,我有一个脚本,它已经在服务器上运行了2年了。在过去的一周里,我突然记录了以下错误: Cannot bind argument to parameter 'InputObject' because it is null. At C:\Scripts\Export_Usage_CSV.ps1:162 char:17 + ... geResults | Export-Csv -Path $Usage_file_Path\CUBE_USAGE.csv ... + ~~~~
Cannot bind argument to parameter 'InputObject' because it is null.
At C:\Scripts\Export_Usage_CSV.ps1:162 char:17
+ ... geResults | Export-Csv -Path $Usage_file_Path\CUBE_USAGE.csv ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
at <ScriptBlock>, C:\Scripts\Export_Usage_CSV.ps1: line 162
Exit Code: 1
Failed!
我注意到csv文件被创建了,但是它仍然是空的
所以我想肯定是$UsageResults
是空的,这可以解释空值。
所以我注释掉了| Export Csv-Path$Usage\u file\u Path\CUBE\u Usage.Csv-NoTypeInformation
,并期望$UsageResults
不会打印任何东西来证实我的假设。
但它确实打印了!!
它正在控制台上逐条打印查询中存储的内容
我想csv导出可能对记录的数量有限制,所以我把它改为导出到txt文件,同样的事情!txt文件已创建,但仍为空
会发生什么?剧本绝对没有任何变化,这周突然开始发生
我在csv中有另一个导出,非常类似于CUBE_用法,它的导出很好,如上图所示(PBI_用法,10k KB)
我们也有这个脚本在一个测试环境中运行,相比之下,它是完全相同的,但是问题并没有发生在那里 事实证明这确实是一个超时问题 我不得不在我的查询函数中添加以下内容来稍微增加超时时间,因为默认值是15秒
$UsageResults
集合中至少有一项为$null
。尝试$UsageResults | Where Object{$\u-是[Object]}| Export Csv…
@MathiasR.Jessen我应该为Object放什么?它不是占位符,这是字面表达式:)-$null
是-是[Object]的唯一操作数
永远不会回来false@MathiasR.Jessen哦,有趣的lol。顺便说一句,我尝试了$UsageResults |其中对象{$\u-是[Object]}|导出Csv…
,但仍然得到相同的结果issue@MathiasR.Jessen我所期望的至少是该文件应该超过0KB。它应该填充文件中的某些内容,即使其中一个项是我们假定的$null(在控制台上打印记录时,我没有看到这种情况)
Function Query($Query) {
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Initial Catalog=$Database;Integrated Security=SSPI"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandText = $Query
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$a=$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0] }
$UsageResults = Query "SELECT TOP (1) WITH TIES [SERVERNAME]
,[SESSION_ID]
,[SESSION_SPID]
,[SESSION_CONNECTION_ID]
,[SESSION_USER_NAME]
,[SESSION_CURRENT_DATABASE]
,[Business_Name]
,[SESSION_USED_MEMORY]
,[SESSION_PROPERTIES]
,[SESSION_START_TIME]
,[SESSION_ELAPSED_TIME_MS]
,[SESSION_LAST_COMMAND_START_TIME]
,[SESSION_LAST_COMMAND_END_TIME]
,[SESSION_LAST_COMMAND_ELAPSED_TIME_MS]
,[SESSION_IDLE_TIME_MS]
,[SESSION_CPU_TIME_MS]
,[SESSION_LAST_COMMAND_CPU_TIME_MS]
,[SESSION_READS]
,[SESSION_WRITES]
,[SESSION_READ_KB]
,[SESSION_WRITE_KB]
,[SESSION_COMMAND_COUNT]
,[UPDATE_TIME]
FROM [dbo].[$Usage_Table]
ORDER BY ROW_NUMBER() OVER (PARTITION BY SESSION_ID ORDER BY UPDATE_TIME DESC)";
$UsageResults | Export-Csv -Path $Usage_file_Path\CUBE_USAGE.csv -NoTypeInformation
$PBI_Query_Result | Export-Csv -Path $Usage_file_Path\PBI_USAGE.csv -NoTypeInformation
$SqlAdapter.SelectCommand.CommandTimeout=60