Powershell_Scripts/SyncglpicomputertoitopPC.ps1
andre e6fa14ecd0 Synchro GLPI ordis vers itop PC
en utilisant des modules powershell pour accéder au API GLPI et Itop + un peu de php
2020-01-17 15:24:26 +01:00

141 lines
5.7 KiB
PowerShell

$GlpiCreds = @{AppURL = "http://192.168.100.89/apirest.php";UserToken = "JSsoyIIG067IOWJG0EoJoDFtDSWs8fYgUZgVYQRo";AppToken = "4eMkSWhCanzvyOhTcVInLYhmA4c4gfdXFcCVOsRl";AuthorizationType = "user_token"}
$salle = 'A105'
$liste = Search-GlpiItem -ItemType "Computer" -SearchOptions ("AND",1,"contains","$salle"),("OR",2,"contains",""),("OR",4,"contains",""),("OR",5,"contains",""),("OR",37,"contains",""),("OR",40,"contains",""),("OR",46,"contains",""),("OR",48,"contains",""),("OR",17,"contains",""),("OR",111,"contains","") -Creds $GlpiCreds
$local = Get-iTopObject -key "SELECT Location WHERE name LIKE '%A105'" -class "Location" -OutputFields "*"
$location = $local.key
For ($i=0; $i -le $liste.Length; $i++) {
$pcglp = $liste[$i].2
echo $pcglp
$liste2 = Search-GlpiItem -ItemType "Computer" -SearchOptions ("AND",1,"contains",""),("AND",2,"contains","$pcglp"),("OR",4,"contains",""),("OR",5,"contains",""),("OR",37,"contains",""),("OR",40,"contains",""),("OR",46,"contains",""),("OR",48,"contains",""),("OR",17,"contains",""),("OR",111,"contains","") -Creds $GlpiCreds
$modele = $liste2.40
$mod = Get-iTopObject -key "SELECT Model WHERE name LIKE '%$modele%'" -class "Model" -OutputFields "*"
if (!$mod) {
Write-Host "Le modèle '$modele' ne existe pas dans iTop"
}
$pc = Get-glpiitem -itemtype Computer -id $liste2.2 -creds $GlpiCreds
$pc_id = $pc.id
$pc_serial = $pc.serial
$name = $pc.name
if (($pc.otherserial -eq $null) -or ($pc.otherserial -eq "")) { $pcserial = 'notset' } else { $pcserial = $pc.otherserial }
if (!$pc.manufacturers_id) { $brand = 10 } elseif ($pc.manufacturers_id -eq 1) {$brand = 106}
if (!$pc.computermodels_id) { $model= 150 }
elseif ($pc.computermodels_id -eq 6) {
$model = 152}
elseif ($pc.computermodels_id -eq 8) {
$model = 149}
elseif ($pc.computermodels_id -eq 10) {
$model = 176}
elseif ($pc.computermodels_id -eq 1) {
$model = 175}
if (!$liste2.46) {
$os = 8 }
elseif ($liste2.46 -eq 1803) {
$os = 146}
elseif ($liste2.46 -eq 1607) {
$os = 146}
elseif ($liste2.46 -eq 1703) {
$os = 146}
elseif ($liste2.46 -eq 1709) {
$os = 146}
elseif ($liste2.46 -eq 1809) {
$os = 146}
elseif ($liste2.46 -eq 1909) {
$os = 146}
if (!$liste2.48) {
$version = 154 }
elseif ($liste2.48 -eq '10.0.17134')
{ $version = 154}
if (!$liste2.37) {
$date2prod = $null
$garantie = $null
}
else
{ if (($liste2.37 -eq $null) -or ($liste2.37 -eq ""))
{
$date2prod = $null
$garantie = $null
}
else
{$date2prod = $liste2.37
$dateprod = [datetime]::parseexact($date2prod, 'yyyy-MM-dd', $null)
$datep = $dateprod.ToString('yyyy-M-d')
$garantie = $dateprod.AddYears(+5)
$garant = $garantie.ToString('yyyy-M-d')
}
}
if (!$liste2.17) { $cpu = "" } else { $cpu = $liste2.17 }
if (!$liste2.111) { $ram = "" } else { $ram = $liste2.111 }
if (!$liste2.4) {
$type = 'desktop' }
elseif ($liste2.4 -eq 'Laptop' ) {
$type = 'laptop' }
elseif ($liste2.4 -eq 'Desktop' ) {
$type = 'desktop' }
elseif ($liste2.4 -eq 'Mini Tower' ) {
$type = 'desktop' }
elseif ($liste2.4 -eq 'Precision 5820 Tower' ) {
$type = 'desktop' }
$pcitop = Get-iTopObject -key "SELECT PC WHERE serialnumber='$pc_serial'" -class "PC" -OutputFields "*"
if ((!$pcitop) -or ($pcitop -eq $null) -or ($pcitop -eq "")) {
if ((!$liste2.37) -or ($liste2.37 -eq $null) -or ($liste2.37 -eq "")) {
php -f CreatePC2-itop.php PC 2 $name $pc_serial $pcserial $location $brand $model $os $version $cpu $ram $type
}
else {
php -f CreatePC-itop.php PC 2 $name $pc_serial $pcserial $location $brand $model $os $version $date2prod $garant $cpu $ram $type
}
}
else {
echo $name $location $brand $model $os $version $date2prod $cpu $ram $type $garant
if ((!$liste2.37) -or ($liste2.37 -eq $null) -or ($liste2.37 -eq "")) {
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'name'=$name}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'asset_number'=$pcserial}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'location_id'=$location}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'type'=$type}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'brand_id'=$brand}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'model_id'=$model}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'cpu'=$cpu}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'osfamily_id'=$os}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'osversion_id'=$version}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'ram'=$ram}
}
else {
echo $location $brand $model $os $version $date2prod $cpu $ram $type $garant
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'name'=$name}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'asset_number'=$pcserial}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'location_id'=$location}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'type'=$type}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'brand_id'=$brand}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'model_id'=$model}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'cpu'=$cpu}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'osfamily_id'=$os}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'osversion_id'=$version}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'ram'=$ram}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'move2production'=$date2prod}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'purchase_date'=$date2prod}
Set-iTopObject -key $pcitop.key -class "PC" -Fields @{'end_of_warranty'=$garant}
Write-Host "rien à faire"
}
}
}