Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell “这是怎么回事?”;“输入对象”;无效的_Powershell - Fatal编程技术网

Powershell “这是怎么回事?”;“输入对象”;无效的

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 ... + ~~~~

我有一个脚本,它已经在服务器上运行了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 ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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