这是我的第一篇文章,所以请保持温和.
我最近开始在工作中使用Powershell来更改AD组,查找AD信息等,但我缺少我非常喜欢Java的GUI.
是否有一种简单的方法(或代码示例),我输入目标主机名,然后返回我要求的详细信息.AD会员组,帐户信息等?
我的Java知识并不像我的Powershell那么大,所以尽可能多的帮助会真正得到理解.
谢谢
我试过在互联网上查找,但找不到任何关于此的内容。
我已经构建了一个 powershell GUI 应用程序,但想添加一个带有不同菜单项的菜单栏。
这可能吗?有没有人做过(有例子)?
谢谢
到目前为止,我有这个代码.
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(900,600)
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size=New-Object System.Drawing.Size(800,400)
$go = New-Object System.Windows.Forms.Button
$go.Location = New-Object System.Drawing.Size(300,450)
$go.Size = New-Object System.Drawing.Size(75,23)
$go.text = "Select"
$form.Controls.Add($go)
$form.Controls.Add($dataGridView)
$dataGridView.ColumnCount = 4
$dataGridView.ColumnHeadersVisible = $true
$dataGridView.Columns[0].Name = "Name"
$dataGridView.Columns[1].Name = "ID"
$dataGridView.Columns[2].Name = "Description"
$dataGridView.Columns[3].Name = "Memory"
$dataGridView.Columns[0].width = 240
get-process | foreach {
$dataGridView.Rows.Add($_.Name,$_.ID,$_.Description,$_.WorkingSet) | out-null
}
$go.Add_Click({
$selectedRow = $dataGridView.CurrentRowIndex
write-host $selectedRow
})
[void]$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
它只是获取进程名称,ID等属性,并将它们放入一个预定义的头文件中DataGridView.
我的问题是我想看到我点击的行$selectedRow = $dataGridView.CurrentRowIndex并将其输出到控制台.相反,当按下"选择"按钮时,空白字符串将输出到终端.
只是一个快速的.我有一个问题,我创建了一个简单的工具,它使用一个小框来获取CPU使用一段时间,看起来显示正在使用的CPU的百分比(我已经删除了以下代码的GUI) ).
function loop
{
$get = read-host
for($start = 0; $start -le 100;$start++)
{
cls
$pro_percentage = Get-WmiObject win32_processor -computer $get -property Loadpercentage | select loadpercentage
$percentage = "Processor usage is: " + $pro_percentage.loadpercentage + "%"
$percentage
}
}
loop
Run Code Online (Sandbox Code Playgroud)
我已经创建了GUI的其他一些位,但我注意到了一个主要问题,这适用于我创建的其他GUI应用程序.每当按下"go"按钮从对话框启动脚本时,GUI就会冻结.我在GUI中创建的菜单栏冻结,没有其他按钮可以按下.
我应该在不同的线程中运行每个函数吗?那样的东西?
谢谢
因此,我试图创建一个自定义Datagridview放入我制作的GUI程序中,但是遇到了一些麻烦。
到目前为止,我有这个:
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(900,600)
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size=New-Object System.Drawing.Size(800,400)
$form.Controls.Add($dataGridView)
$dataGridView.ColumnCount = 4
$dataGridView.ColumnHeadersVisible = $true
$dataGridView.Columns[0].Name = "Process"
$dataGridView.Columns[1].Name = "ID"
$dataGridView.Columns[2].Name = "Description"
$dataGridView.Columns[3].Name = "Memory"
$row1 = get-process -property name | select Name
$rows = @($row1)
foreach ($row in $rows)
{
$dataGridView.Rows.Add($row.name)}
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
我的问题是这样的:
我该如何为不同的属性分配不同的列,因此“ process”列将用于进程名称,“ id”列将用于进程ID,依此类推。
到目前为止,我所要做的就是为一列分配一个输入范围:“进程名称”。
请帮忙!
谢谢
我想阻止最终用户调整我创建的 GUI 的大小。
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "ADX v2.1.2.0"
$objForm.minimumSize = New-Object System.Drawing.Size(965,665)
$objForm.StartPosition = "CenterScreen"
$objForm.backcolor = "gray"
Run Code Online (Sandbox Code Playgroud)
我试过了$objform.resize = 'false',但这不起作用。
我该怎么做?
我被困在一些我知道非常简单的东西上,但对于我的生活却无法理解.
我正在尝试导入一个带有主机名列表的.txt文件,一旦重新启动,脚本将返回已安装的总物理内存量.
到目前为止我有这个:
function get
{
$boxes = Get-Content C:\Temp\hostnamesforRAM.txt
foreach($box in $boxes)
{
Get-WmiObject Win32_ComputerSystem | select TotalPhysicalMemory
}
}
get
Run Code Online (Sandbox Code Playgroud)
然而,它只是简单地返回:
4151570432
4151570432
4151570432
4151570432
4151570432
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢
所以我试图在一台机器上返回一个正在运行的进程描述列表,我可以通过它来解决这个问题 get-process | select description
但是,当我尝试:get-process -computer remote | select description没有返回任何内容,只有空字符串.
是否有一个原因?
谢谢
powershell ×8
arrays ×2
datagridview ×2
foreach ×1
function ×1
java ×1
menu ×1
ram ×1
vb.net ×1