2017-08-03 17 views
2

運行在PowerShell中的以下SQLCMD:SQLCMD PowerShell的需要只返回值(無頭)

$unassignedCnt = sqlcmd -W -k 1 -S MSSQLSERVER -E -Q "SET NoCount ON; SELECT Count(DISTINCT SP.SubnetKey) AS 'UnassignedCount' FROM [Control].[dbo].[Subnet] AS SP Left OUTER JOIN [Control].[rw_current].[QIP_Subnet] AS Q ON SP.KeyHash = Q.__key_Hash; SET NoCount OFF; " 
Write-Host $unassignedCnt 

這將返回以下格式的結果:

UnassignedCount --------------- 1 

我想只有有:

1 

我可以通過SQL命令實現嗎?還是需要後處理結果?如果是這樣,最簡單的方法是什麼?

+0

'寫主機$ unassignedCnt' - >'寫主機$ unassignedCnt.UnassignedCount' –

+0

@AnsgarWiechers - 即返回null – dross

+0

可能性不大。 '$ unassignedCnt.GetType()。FullName'的輸出是什麼? –

回答

2

可以使用通過更改SQL查詢中使用的PRINT代替SELECT

SELECT將創建具有標頭和與之相關的數據表中做到這一點。打印只需輸出結果。

$unassignedCnt = sqlcmd -W -k 1 -S MSSQLSERVER -E -Q "SET NoCount ON; DECLARE @result varchar(max); SELECT @result= Count(DISTINCT SP.SubnetKey) FROM [Control].[dbo].[Subnet] AS SP Left OUTER JOIN [Control].[rw_current].[QIP_Subnet] AS Q ON SP.KeyHash = Q.__key_Hash; PRINT @result ;SET NoCount OFF; " 
Write-Host $unassignedCnt