· 5 years ago · Nov 10, 2020, 05:48 PM
1##config
2$varcat = "CHG"
3$api = "https://baramundiserver.domain.tld:443/bConnect/v1.0"
4$user = "bara_bconnect@carthago.local"
5$SecureString = "$f=x+ajj"
6$columns = @("Seriennummer","Mietscheinnummer","Mietbeginn","Mietende (geplant)")
7$ErrorActionPreference= 'silentlycontinue'
8##config end
9
10## accept self signed certificates
11if (-not("dummy" -as [type])) {
12 add-type -TypeDefinition @"
13using System;
14using System.Net;
15using System.Net.Security;
16using System.Security.Cryptography.X509Certificates;
17
18public static class Dummy {
19 public static bool ReturnTrue(object sender,
20 X509Certificate certificate,
21 X509Chain chain,
22 SslPolicyErrors sslPolicyErrors) { return true; }
23
24 public static RemoteCertificateValidationCallback GetDelegate() {
25 return new RemoteCertificateValidationCallback(Dummy.ReturnTrue);
26 }
27}
28"@
29}
30
31[System.Net.ServicePointManager]::ServerCertificateValidationCallback = [dummy]::GetDelegate()
32##
33
34##establish connection
35$passwd = ConvertTo-SecureString $SecureString -AsPlainText -force
36$cred = New-Object System.Management.Automation.PSCredential($user, $passwd)
37
38#prompt for file input
39Function Get-FileName($initialDirectory)
40{
41 [System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) |
42 Out-Null
43
44 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
45 $OpenFileDialog.initialDirectory = $initialDirectory
46 $OpenFileDialog.filter = “csv (*.csv)| *.csv”
47 $OpenFileDialog.ShowDialog() | Out-Null
48 $OpenFileDialog.filename
49}
50
51$path = Get-FileName -initialDirectory “c:fso”
52
53if($path -notlike '')
54{
55 $csv = Import-Csv -path $path -Delimiter ';'
56
57 foreach($line in $csv)
58 {
59 #search Client via Seriennummer
60 #$endpointData = Invoke-RestMethod -Uri "$($api)/search.json?type=endpoint&term=$($line.Seriennummer)" -Credential $cred -Method Get
61
62 $endpointID = $endpointData.ID
63 $endpointName = $endpointData.Name
64
65 <#if($endpointID -like '')
66 {
67 Write-Host "Fehler: Es wurde kein Client mit der Seriennummer $($line.Seriennummer) gefunden."
68 }
69 else
70 {#>
71 foreach($col in $columns)
72 {
73
74 #load var of client
75 #$var = Invoke-RestMethod -Uri "$($api)/Variables.json?scope=device&objectid=$endpointID&category=$varcat&Name=$col" -Credential $cred -Method Get
76
77 #change value of var
78 $varNew = $var.Variables.Item(0)
79 $varNew.Value = $line.$col.ToString()
80 $var.Variables.Item(0) = $varNew
81
82 #format date
83
84 if($col -eq 'Mietbeginn')
85 {
86 $line.$col
87
88 }
89
90 if($col -eq 'Mietende (geplant)')
91 {
92
93 $varNew
94 }
95
96 #write back the modifyed data by put function
97 #$putvar = Invoke-RestMethod -Uri "$($api)/Variables.json" -Method put -Credential $cred -Body (ConvertTo-Json $var) -ContentType "application/json"
98
99 }
100
101 #output log
102 Write-Host "$endpointName wurde erfolgreich modifiziert."
103 #}
104 }
105}
106Write-Host "press any key to end script"
107$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
108