2017-09-11 70 views
0

好的,這段代碼完美地工作,它從API中抽取我需要的所有數據。但我需要它來插入特定的數據。我如何去製作一個IF語句,它只是插入標籤中名爲供應的數據並將其插入到SQL中。我對PowerShell非常陌生,所以我不知道如何使這項工作。如果有人能指引我走向正確的方向。編寫一條If語句將某些數據插入SQL

For循環使變量的對象

foreach($obj in $Json.devices) 

{ 
    $DeviceIdentifier = $obj.deviceId 
    $DeviceNombre = $obj.deviceName 
    $DomainNombre = $obj.domainName 
    $Tags =$obj.tags 


    Write-Host ($obj.deviceId) -BackgroundColor White -ForegroundColor darkblue 
    Write-Host ($obj.devicename) -BackgroundColor White -ForegroundColor red 
    Write-Host ($obj.domainname) -BackgroundColor White -ForegroundColor red 
    Write-Host ($obj.tags) -BackgroundColor White -ForegroundColor black 

插入到MYSQL數據庫

 $cmd = $connection.CreateCommand() 
     $insert_stmt = "INSERT INTO [dbo].[Tags]([DeviceID],[DeviceName],[DomainName],[Tags]) 
          VALUES ('$DeviceIdentifier','$DeviceNombre', '$DomainNombre','$tags')" -replace "\s+"," " 
     $cmd.CommandText = $insert_stmt 
     write-host $insert_stmt -BackgroundColor White -ForegroundColor DarkBlue 
     $cmd.ExecuteNonQuery() 
} 

$Connection.Close() 

回答

0

您可以使用Where-Object cmdlet來篩選$Json.devices下降到只有對象,其中Tags = provisioned

$objs = $Json.devices | Where-Object {$_.tags -eq "provisioned"} 
foreach($obj in $objs) 

否則,你可以使用一個if聲明

if ($Tags -eq "provisioned) { 
    #Do logic here 
} 
+0

將在哪裏,我的OBJ去後,爲每個語句或在我的每一個? – Scrat50

+0

使用'Where-Object',你可以在你繞過它之前過濾對象。只運行在剩下的元素上。用'if',你可以把它放在循環中,並評估你循環的每個元素的條件。 – BenH

+0

讓你謝謝你本我會試一試。 – Scrat50