Powershell: Auslesen von Device Name, MAC Adress und Device Collection aus der PVS Datenbank

0
0

Um bestehende End-Systeme aus einer Provisioning Server Umgebung auszulesen, damit man diese in Empirum importieren kann, kann das folgende PowerShell Skript verwendet.

Dieses Skript liest den PC Namen, die Mac Adresse und die Device Collection eines jeden End-Systems aus und schreibt diese Kommagetrennt in eine Ausgabedatei. Bei der MAC Adresse werden zusätzlich noch die Bindestriche herausgefiltert, um diese für den Import in Empirum verwenden zu können.

bt-attention-icon Hinweis: Das Skript sollte man direkt auf dem Provisioning Server ausführen, da eine installierte Provisioning Server Console vorausgesetzt wird. Zusätzlich muss die Powershell executionpolicy angepasst werden, damit das ausführen von Skripten erlaubt wird.

Um das Skript verwenden zu können, müssen die folgenden 4 Variablen im Skript angepasst werden:

$servernameConnection = „IP Address of the PVS Server
$username = „Domain Account with PVS Admin rights
$domainNetBiosName = „Domain Name
$password = „PVS Admin Account Password

Wenn das Skript ausgeführt wird, wird im Skriptordner eine Ausgabedatei mit dem folgenden Ausgabeformat angelegt:

PC0102,45012ABC494C,DC_Production,
PC0103,45012ABC4942,DC_Production,
PC0104,45012ABC6277,DC_Integration,
PC0001,45012ABC708A,DC_Installation,
PC0002,45012ABC70B0,DC_Test,

Powershell Skript:   [ddownload id=178]

[php]#Variable##################################################################################
$servernameConnection = "IP Address of the PVS Server"
$username = "Domain Account with PVS Admin rights"
$domainNetBiosName = "Domain Name"
$password = "PVS Admin Account Password"
###########################################################################################

#Register the PowerShell Snap-In
$installutil = $env:systemroot + ‚\Microsoft.NET\Framework\v2.0.50727\installutil.exe‘
&$installutil McliPSSnapIn.dll

$installutil = $env:systemroot + ‚\Microsoft.NET\Framework64\v2.0.50727\installutil.exe‘
&$installutil McliPSSnapIn.dll

#Loading PVS MCLI CmdLet#####
function LoadCmdLet_PVS (){
write-host "Loading Citrix PVS MCLI, please wait…"

get-pssnapin -name McliPSSnapin
if ($? -eq "True"){
write-host "     CtxPvsMCLI – Loading Citrix PVS MCLI exist – done"
}
Else{
Add-PSSnapin -Name McliPSSnapIn
If ($? -eq "True"){
write-host "    CtxPvsMCLI – Loading Citrix PVS MCLI – done"
}
Else{
write-host "     CtxPvsMCLI – Loading Citrix PVS MCLI – failed"
exit
}
}
}

#Connect to PVS server#####
function ConnectManagementServer_PVS (){
write-host "Connecting to Citrix PVS server, please wait…"

Mcli-Run SetupConnection -p server=$servernameConnection, user=$username, domain=$domainNetBiosName, password=$password
If ($? -eq "True"){
write-host "     CtxPvsMCLI – Connecting to Citrix PVS server – done"
}
Else {
write-host "     CtxPvsMCLI – Connecting to Citrix PVS server – failed"
exit
}
}

#Get Script directory#####
function Get-ScriptDirectory{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}

LoadCmdLet_PVS
#ConnectManagementServer_PVS

#Output file#####
$OutPutFile = Join-Path (Get-ScriptDirectory) out_pvs.log
If (test-path $OutPutFile) {Remove-Item $OutPutFile}

#Get devicenames#####
$cc_devices = mcli-get device -f devicename | select-string devicename

#Get information from devices#####
foreach ($cc_device in $cc_devices){
$cc_devicename_string = [string]$cc_device
$cc_devicename_string = $cc_devicename_string.substring(12)
$cc_deviceout = mcli-get device -p devicename=$cc_devicename_string -f devicename, devicemac, collectionname

$cc_devicemac = $cc_deviceout | select-string devicemac
$cc_devicemac_string = [string]$cc_devicemac
$cc_devicemac_string = $cc_devicemac_string.substring(11)
$cc_devicemac_string = $cc_devicemac_string -replace "-",""

$cc_devicecollectionname = $cc_deviceout | select-string collectionname
$cc_devicecollectionname_string = [string]$cc_devicecollectionname
$cc_devicecollectionname_string = $cc_devicecollectionname_string.substring(16)

write-host $cc_devicename_string
write-host $cc_devicemac_string
write-host $cc_devicecollectionname_string

$OutputLog = $cc_devicename_string + "," + $cc_devicemac_string + "," + $cc_devicecollectionname_string + "," + [STRING]$cc_devicepers

$OutputLog | out-file -Append $OutPutFile
}

[/php]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert