異なる部門のソフトウェアを自動インストールするスクリプトを作成しています。アイデアは、あなたが特定の部門を選択することができますドロップダウンリストを持つことであるアーキテクチャとソフトウェアの選択肢の改善
:これは、現在、どのように見えるかです。 "Marketing"を選択した後、プログラマーはx86またはx64アーキテクチャー用Chechboxesと、この部門用にインストールする必要があるProgrammeを自動化する必要があります。 (だから私は、PowerShellは、部門を選択した後呼び出すことができますどのようなテンプレートを構築したいと思います。
これまでのところ、私はPowerShellがアーキテクチャを求めると32を与えている
$wmiquery = (Get-WmiObject -Class Win32_Processor | Select-Object AddressWidth)
$wmiquery = $wmiquery.AddressWidth
[string]$wmiquery2 = $wmiquery
write-host $wmiquery2
「Architecturチュー」を構築します。。または文字列として64 previusスクリプトがこのようにそれを使用されて
switch ($wmiquery2) {
"64" {
x64
x86_x64
}
"32" {
x86
x86_x64
}
function x64 {
Copy-Item -Path "#" -Destination "#"
Start-Process "#" /qn -Wait
Remove-Item -Path "#"
}
function x32 {
Copy-Item -Path "#" -Destination "#"
Start-Process "#" /qn -Wait
Remove-Item -Path "#"
}
しかし、私はこの文句を言わない作業にこの時間を推測:/
を私はまた、テスト部分を構築GUIの例を示します。
###Windowloader
[void][reflection.assembly]::Load('mscorlib')
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$objForm = New-Object System.Windows.Forms.Form
### Height and width of window
$objForm = New-Object System.Windows.Forms.Form
$objForm.width = 400
$objForm.height = 900
$objForm.StartPosition = "CenterScreen"
### Set the font of the text to be used within the form
$objFont = New-Object System.Drawing.Font("Times New Roman",09)
$objForm.Font = $Font
### set objform icon
$objform.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon("#")
### set objform text
$objForm.Text = "Installmanager"
###Drowdown position, height, list
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(40,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Treffen Sie bitte eine Auswahl:"
$objForm.Controls.Add($objLabel)
$objCombobox = New-Object System.Windows.Forms.Combobox
$objCombobox.Location = New-Object System.Drawing.Size(10,40)
$objCombobox.Size = New-Object System.Drawing.Size(260,20)
[void] $objCombobox.Items.Add("IT")
[void] $objCombobox.Items.Add("Controlling")
[void] $objCombobox.Items.Add("Redaktion")
[void] $objCombobox.Items.Add("Disposition")
[void] $objCombobox.Items.Add("Grafik")
[void] $objCombobox.Items.Add("Redaktion(Schnitt)")
[void] $objCombobox.Items.Add("Sekreteriat")
$objCombobox.Height = 70
$objForm.Controls.Add($objCombobox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
$x
### Checkboxdescrption
###Textbox 32 Bit
$obj32Bit = New-Object System.Windows.Forms.Label
$obj32Bit.Location = New-Object System.Drawing.Size(10,100)
$obj32Bit.Size = New-Object System.Drawing.Size(40,20)
$obj32Bit.Text = "32 Bit"
$obj32Bit.Name = "32 Bit"
$objForm.Controls.Add($obj32Bit)
###Textbox 64 Bit
$obj64Bit = New-Object System.Windows.Forms.Label
$obj64Bit.Location = New-Object System.Drawing.Size(50,100)
$obj64Bit.Size = New-Object System.Drawing.Size(40,20)
$obj64Bit.Text = "64 Bit"
$obj64Bit.Name = "64 Bit"
$objForm.Controls.Add($obj64Bit)
###Textbox application
$objProgrammText = New-Object System.Windows.Forms.Label
$objProgrammText.Location = New-Object System.Drawing.Size(100,100)
$objProgrammText.Size = New-Object System.Drawing.Size(70,20)
$objProgrammText.Text = "Anwendung"
$objProgrammText.Name = "Programm"
$objForm.Controls.Add($objProgrammText)
### 7zip
$obj7zipText = New-Object System.Windows.Forms.Label
$obj7zipText.Location = New-Object System.Drawing.Size(100,128)
$obj7zipText.Size = New-Object System.Drawing.Size(300,20)
$obj7zipText.Text = "7Zip"
$obj7zipText.Name = "7Zip"
$objForm.Controls.Add($obj7zipText)
###Java
$objJava = new-object System.Windows.Forms.checkbox
$objJava.Location = new-object System.Drawing.Size(20,145)
$objJava.Size = new-object System.Drawing.Size(40,50)
$objJava.Checked = $false
$objForm.Controls.Add($objJava)
###Checkbox Programm 32 Bit
$obj7zip = new-object System.Windows.Forms.checkbox
$obj7zip.Location = new-object System.Drawing.Size(20,110)
$obj7zip.Size = new-object System.Drawing.Size(40,50)
$obj7zip.Checked = $false
$objForm.Controls.Add($obj7zip) **
###Checkbox Programm 64 Bit
$obj7zip64 = new-object System.Windows.Forms.checkbox
$obj7zip64.Location = new-object System.Drawing.Size(60,110)
$obj7zip64.Size = new-object System.Drawing.Size(40,50)
$obj7zip64.Checked = $false
$objForm.Controls.Add($obj7zip64)
###Java
$objJava = new-object System.Windows.Forms.checkbox
$objJava.Location = new-object System.Drawing.Size(60,145)
$objJava.Size = new-object System.Drawing.Size(40,50)
$objJava.Checked = $false
$objForm.Controls.Add($objJava)
### OK Button End
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,700)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Name = "OK"
$OKButton.DialogResult = "OK"
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)
### OK Button Top
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Point(290, 40)
$Button.Size = New-Object System.Drawing.Size(80, 23)
$Button.Text = "OK"
$Button.add_Click(
{
$obj7zip64.Checked = $false
$obj7zip32.Checked = $false
$dropdown = $objCombobox.SelectedItem.ToString()
if ($dropdown -eq "Controlling") {
$obj7zip64.Checked = $true
#if ($dropdown -eq "Sekretariat") {
#$obj7zip64.Checked = $false
#}
}
}
)
$objForm.Controls.Add($Button)
###Shows Window
[void] $objForm.ShowDialog()
最後のボタン(### OKボタントップ)では、私は例を書いてこれまでのところ動作します。しかし、もしあなたが20-30の異なるソフトウェアのためにこのように構築すれば、私はそのような巨大で混乱したリストを手に入れます。
多分あなたは私のためにこれを管理する方法を持っています。
を、しかし、私は、両方のチェックボックスを持っている必要がありますたとえば、ハードウェアの低いシステムでは32ビットを手動で選択できます。 – chrystalf
ねえ、ありがとう!これは知っているいくつかのクールな新しいものです:) – chrystalf
私はあなたの大きなダイナミックメソッドで私のための問題を考え出しました。私のバージョンでは、 "$ obj7zip.Checked = $ false/true"を使用してGUIのステータスを変更しました。今はダイナミックな方法では、私はもうこのオプションを持っていません。私の考えは、「ForEach-Object」を数えて、それが私に与えた数字で動作するかもしれないということでした。しかし、これは解決策として私のために複雑に思えます。チェックボックスをtrueまたはfalseに操作するために統計を戻す方法はありますか? – chrystalf