en utilisant des modules powershell pour accéder au API GLPI et Itop + un peu de php
141 lines
5.7 KiB
PowerShell
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"
|
|
}
|
|
}
|
|
}
|
|
|