我的问题是我不知道问题是什么。显示变量
$VMName
和$Output
的内容有问题,如果您有任何解决方案,请告诉我。不起作用的部分用感叹号和主题标签圈起来。除此之外,我已经将脚本的最大部分复制到这里,以防有人想要测试它。
# Create the main window
$form = New-Object System.Windows.Forms.Form
$form.Text = "Serverkonfigurations-Export"
$form.Width = 555
$form.Height = 500
# static size
$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$form.MaximizeBox = $false
$DataGridView = New-Object Windows.Forms.DataGridView
$DataGridView.Location = New-Object Drawing.Point(25, 50)
$DataGridView.Size = New-Object Drawing.Size(490, 350)
$DataGridView.ReadOnly = $true
$DataGridView.AllowUserToAddRows = $false
$DataGridView.AutoGenerateColumns = $false
$Form.Controls.Add($DataGridView)
# Create columns
$Column1 = New-Object Windows.Forms.DataGridViewTextBoxColumn
$Column1.Name = "VM Name"
$Column1.HeaderText = "VM Name"
$Column1.Width = 272
$DataGridView.Columns.Add($Column1)
$Column2 = New-Object Windows.Forms.DataGridViewTextBoxColumn
$Column2.Name = "CPU/RAM"
$Column2.HeaderText = "CPU/RAM"
$Column2.Width = 175
$DataGridView.Columns.Add($Column2)
# Get virtual machines
$VMs = Get-SCVirtualMachine | Where-Object {$_.Name -like "*xenapp1*"}
#Start foreach-Schleife
foreach($VM in $VMs){
$ProcessorCount = $VM.CPUCount
$Memory = $VM.Memory
$MemoryConfiguration = $VM.DynamicMemoryEnabled
$MemorySize = $Memory / "1024"
# Format for Output
$OutputFormat = "{0}c/{1}G{2}"
if($MemoryConfiguration -eq $true){
$MemoryUnit = "d"
}
else{
$MemoryUnit = "s"
}
# Result Output
$VMName = $VM.Name
$Output = $OutputFormat -f $ProcessorCount, $MemorySize, $MemoryUnit
$Output1 = [PSCustomObject]@{
VMName = $VMName
Config = $Output
}
}
######################################################################
! Create Data as datatable !
! $dataTable = New-Object System.Data.DataTable !
! $dataTable.Columns.Add("VM Name", [string]::typeid) | Out-Null !
! $dataTable.Columns.Add("CPU/RAM", [string]::typeid) | Out-Null !
! $dataRow = $dataTable.NewRow() !
! $dataRow["VM Name"] = $VMName !
! $dataRow["CPU/RAM"] = $Output !
! $dataTable.Rows.Add($dataRow) !
! $DataGridView.DataSource = $dataTable !
######################################################################
# Button creation
$button3 = New-Object System.Windows.Forms.Button
$button3.Text = "Export to CSV"
$button3.Location = New-Object System.Drawing.Point(330, 405)
$button3.Size = New-Object System.Drawing.Size(100,25)
$form.Controls.Add($button3)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(440, 405)
$cancelButton.Size = New-Object System.Drawing.Size(75,25)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.Controls.Add($cancelButton)
# create copy button
$CopyButton = New-Object Windows.Forms.Button
$CopyButton.Location = New-Object Drawing.Point(195, 405)
$CopyButton.Size = New-Object Drawing.Size(125, 25)
$CopyButton.Text = "Copy marked cells"
$CopyButton.Add_Click({
# Check if a cell is marked
if ($DataGridView.SelectedCells.Count -gt 0) {
# content of marked cells copy to clipboard
$ClipboardData = ""
foreach ($cell in $DataGridView.SelectedCells) {
$ClipboardData += $cell.Value + "`t" # Tab als Trennzeichen verwenden
}
$ClipboardData | Set-Clipboard
}
else {
[System.Windows.MessageBox]::Show("Value cannot be null","Copy to Clipboard failed",0)
}
})
$form.Controls.Add($CopyButton)
$text = "Dieses Script ist dazu da, die Serverkonfigurationen von den einzelnen Xenapp-Server auszulesen."
# Label for introduction
$label = New-Object System.Windows.Forms.Label
$label.Text = $text
$label.AutoSize = $true
$label.Location = New-Object System.Drawing.Point(25, 20)
$form.Controls.Add($label)
这些是我执行脚本时出现的错误。
Exception calling "Add" with "2" argument(s): "'dataType' argument cannot be null.
Parameter name: dataType"
At C:\Scripts\000_In_Progress\nois\VMconfig_auslesen.ps1:72 char:1
+ $dataTable.Columns.Add("VM Name", [string]::typeid) | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentNullException
Exception calling "Add" with "2" argument(s): "'dataType' argument cannot be null.
Parameter name: dataType"
At C:\Scripts\000_In_Progress\nois\VMconfig_auslesen.ps1:73 char:1
+ $dataTable.Columns.Add("CPU/RAM", [string]::typeid) | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentNullException
Column 'VM Name' does not belong to table .
At C:\Scripts\000_In_Progress\nois\VMconfig_auslesen.ps1:75 char:1
+ $dataRow["VM Name"] = $VMName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException
Column 'CPU/RAM' does not belong to table .
At C:\Scripts\000_In_Progress\nois\VMconfig_auslesen.ps1:76 char:1
+ $dataRow["CPU/RAM"] = $Output
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException