193 lines
5.5 KiB
PowerShell
193 lines
5.5 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
A short one-line action-based description, e.g. 'Tests if a function is valid'
|
|
.DESCRIPTION
|
|
A longer description of the function, its purpose, common use cases, etc.
|
|
.NOTES
|
|
Information or caveats about the function e.g. 'This function is not supported in Linux'
|
|
.LINK
|
|
Specify a URI to a help page, this will show when Get-Help -Online is used.
|
|
.EXAMPLE
|
|
$params = @{
|
|
HostName = "itdzmtest999.nd.gov";
|
|
LicensingRestrictions = "No Licensing Restrictions";
|
|
DataCenter = 'Bismarck';
|
|
Environment = 'Test';
|
|
StartupPriority = '5';
|
|
OperatingSystem = 'Windows Server 2022 Datacenter (64-Bit)'
|
|
DR_Protection = 'None';
|
|
CPU = 1;
|
|
MemoryGB = 4;
|
|
Disk1 = 50;
|
|
Disk2 = 2;
|
|
Disk3 = 3;
|
|
|
|
}
|
|
|
|
New-ITDVMwareSharePointVMRecord @params
|
|
#>
|
|
|
|
function New-ITDVMwareSharePointVMRecord {
|
|
[CmdletBinding()]
|
|
param (
|
|
[string]
|
|
$HostName,
|
|
|
|
[string]
|
|
$ReplacesVM,
|
|
|
|
[string]
|
|
$LicensingRestrictions,
|
|
|
|
<#[string]
|
|
$AgencyName,#>
|
|
|
|
[string]
|
|
$SupportHours,
|
|
|
|
[string]
|
|
$DataCenter,
|
|
|
|
[string]
|
|
$Environment,
|
|
|
|
[int]
|
|
$StartupPriority,
|
|
|
|
[string]
|
|
$DR_Protection,
|
|
|
|
[string]
|
|
$OperatingSystem,
|
|
|
|
[int]
|
|
$CPU,
|
|
|
|
[int]
|
|
$MemoryGB,
|
|
|
|
[string]
|
|
$CIDRBlock,
|
|
|
|
[int]
|
|
$Disk1,
|
|
|
|
[int]
|
|
$Disk2,
|
|
|
|
[int]
|
|
$Disk3,
|
|
|
|
[int]
|
|
$Disk4,
|
|
|
|
[int]
|
|
$Disk5,
|
|
|
|
[int]
|
|
$Disk6,
|
|
|
|
[int]
|
|
$Disk7,
|
|
|
|
[int]
|
|
$Disk8,
|
|
|
|
[int]
|
|
$Disk9,
|
|
|
|
[int]
|
|
$Disk10,
|
|
|
|
[int]
|
|
$Disk11,
|
|
|
|
[int]
|
|
$Disk12,
|
|
|
|
[int]
|
|
$Disk13,
|
|
|
|
[int]
|
|
$Disk14,
|
|
|
|
[int]
|
|
$Disk15,
|
|
|
|
[int]
|
|
$Disk16
|
|
)
|
|
|
|
begin {
|
|
$UrlContextInfo = "https://share.nd.gov/itd/computer-systems/distributed-systems/vmware/_api/contextinfo"
|
|
$InvokeWebRequestParams = @{
|
|
Uri = $UrlContextInfo;
|
|
Method = "Post";
|
|
UseBasicParsing = $true;
|
|
}
|
|
If ($Credential) { $InvokeWebRequestParams += @{Credential = $Credential } }
|
|
Else { $InvokeWebRequestParams += @{UseDefaultCredentials = $true } }
|
|
#$RequestDigest = Invoke-RestMethod -Uri $UrlContextInfo -Method Post -UseDefaultCredentials
|
|
$RequestDigest = Invoke-RestMethod @InvokeWebRequestParams
|
|
$RequestDigest = $RequestDigest.GetContextWebInformation.FormDigestValue
|
|
|
|
$UrlList = "https://share.nd.gov/itd/computer-systems/distributed-systems/vmware/_api/lists/getbytitle('VM Guests')"
|
|
$InvokeWebRequestParams = @{
|
|
Uri = $UrlList;
|
|
UseBasicParsing = $true;
|
|
}
|
|
If ($Credential) { $InvokeWebRequestParams += @{Credential = $Credential } }
|
|
Else { $InvokeWebRequestParams += @{UseDefaultCredentials = $true } }
|
|
#$List = Invoke-RestMethod -uri $UrlList -UseDefaultCredentials
|
|
$List = Invoke-RestMethod @InvokeWebRequestParams
|
|
$ListItemEntityTypeFullName = $list.entry.content.properties.ListItemEntityTypeFullName
|
|
|
|
$UrlListItems = "https://share.nd.gov/itd/computer-systems/distributed-systems/vmware/_api/lists/getbytitle('VM Guests')/items"
|
|
|
|
$header = @{
|
|
"accept" = "application/json;odata=verbose"
|
|
"X-RequestDigest" = $RequestDigest
|
|
}
|
|
}
|
|
|
|
process {
|
|
[PSCustomObject]$NewRecord = @{
|
|
"__metadata" = @{type = $ListItemEntityTypeFullName }
|
|
Title = $HostName
|
|
}
|
|
write-host $PSBoundParameters
|
|
switch($PSBoundParameters.Keys){
|
|
# '' {$NewRecord += @{ = }}
|
|
'LicensingRestrictions' {$NewRecord += @{LicensingRestrictions = $LicensingRestrictions}}
|
|
'DataCenter' {$NewRecord += @{DataCenter = $DataCenter}}
|
|
'Environment' {$NewRecord += @{Environment = $Environment}}
|
|
'StartupPriority' {$NewRecord += @{StartupPriority = [string]$StartupPriority}}
|
|
'OperatingSystem' {$NewRecord += @{OS = $OperatingSystem}}
|
|
'DR_Protection' {$NewRecord += @{DR_Protection = $DR_Protection}}
|
|
'CPU' {$NewRecord += @{Processors = $CPU}}
|
|
'MemoryGB' {$NewRecord += @{RAM = $MemoryGB}}
|
|
'Disk1' {$NewRecord += @{Disk_x0020_C_x003a_ = $Disk1}}
|
|
'Disk2' {$NewRecord += @{Disk2_x002d_SwapDisk = $Disk2}}
|
|
'Disk3' {$NewRecord += @{Disk_x0020_D_x003a_ = $Disk3}}
|
|
}
|
|
|
|
$body = $NewRecord | ConvertTo-Json
|
|
|
|
$InvokeWebRequestParams = @{
|
|
Uri = $UrlListItems;
|
|
Method = "Post";
|
|
Body = $body;
|
|
ContentType = "application/json;odata=verbose";
|
|
Headers = $header;
|
|
UseBasicParsing = $true;
|
|
}
|
|
If ($Credential) { $InvokeWebRequestParams += @{Credential = $Credential } }
|
|
Else { $InvokeWebRequestParams += @{UseDefaultCredentials = $true } }
|
|
#Invoke-RestMethod -Method Post -Uri $UrlListItems -Body $body -ContentType "application/json;odata=verbose" -Headers $header -UseDefaultCredentials
|
|
Invoke-RestMethod @InvokeWebRequestParams
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
} |