Mai 10

Powershell: Setzen von IP und Computername

In den Demo-Umgebungen möchte man fix die Netzwerkeinstellungen und Computernamen nach einer Grundinstallation oder Kopieren einer virtuellen Maschine anpassen. Dieses ist mit einem vorgefertigtem Powershell-Skript in kurzer Zeit realisierbar.

#Variablen
$ip = "192.168.0.5" 
$prefix = "24" 
$gw = "192.168.0.1" 
$dns = "192.168.0.1" 
$name = "Server1" 
 
#Setzen der IP-Einstellungen
$adapter = (Get-NetAdapter).ifIndex 
New-NetIPAddress -IPAddress $ip -PrefixLength $prefix -InterfaceIndex $adapter -DefaultGateway $gw 
#Setzen des DNS-Servers
Set-DNSClientServerAddress –InterfaceIndex $Adapter -ServerAddresses $dns
#Setzen des Computernamens
Rename-Computer -NewName $name -force 
#Neustart des Systems
Restart-Computer 

Mrz 19

Powershell: Verzeichnisstruktur in Textdatei exportieren

Mit disem Code können Ordnerstrukturen des Filesystems in eine Textdatei exportiert werden. Es wird der Startordner sowie der Pfad und der Dateiname der Exportdatei angegeben werden. Nach der Erstellung kann direkt die Textdatei geöffnet werden.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
 
$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "FolderListGenerator"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
 
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") { $path=$objTextBox.Text;$objForm.Close()} })
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") { $objForm.Close()} })
 
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$path=$objTextBox1.Text;$file=$objTextBox2.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)
 
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
 
$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,20) 
$objLabel1.Size = New-Object System.Drawing.Size(280,20) 
$objLabel1.Text = "Bitte Verzeichnispfad eingeben (z.B. C:\Folder):"
$objForm.Controls.Add($objLabel1) 
 
$objTextBox1 = New-Object System.Windows.Forms.TextBox 
$objTextBox1.Location = New-Object System.Drawing.Size(10,40) 
$objTextBox1.Size = New-Object System.Drawing.Size(260,20)
$objTextBox1.Text = ""
$objForm.Controls.Add($objTextBox1) 
 
$objLabel2 = New-Object System.Windows.Forms.Label
$objLabel2.Location = New-Object System.Drawing.Size(10,70) 
$objLabel2.Size = New-Object System.Drawing.Size(280,20) 
$objLabel2.Text = "Bitte Dateiablage eingeben (z.B. C:\temp\folder.txt):"
$objForm.Controls.Add($objLabel2) 
 
$objTextBox2 = New-Object System.Windows.Forms.TextBox 
$objTextBox2.Location = New-Object System.Drawing.Size(10,90) 
$objTextBox2.Size = New-Object System.Drawing.Size(260,20)
$objTextBox2.Text = ""
$objForm.Controls.Add($objTextBox2) 
 
[void] $objForm.ShowDialog()
 
Get-Childitem $path -recurse -filter * | 
? { $_.PSisContainer -eq $true} | 
% {$_.fullname -replace "\\","`t" } | 
sort | out-file $file
 
$a = new-object -comobject wscript.shell
$intAnswer = $a.popup("Exportdatei öffnen?",0,"FolderListGenerator",4)
If ($intAnswer -eq 6) {
  Invoke-Item $file
} else {
  $a.popup("Datei erstellt")
}

Als Trennzeichen wird der TAB genutzt, so dass ein Import z.B. in Excel ohne Probleme funktionieren sollte.

Jun 20

Skript: Server-Erstkonfiguration per Powershell

Häufig muss ich für Testumgebungen Windows Server 2008 R2 installieren. Dieses kann in Testumgebungen oder auch in Produktiv-Umgebungen vorkommen. Regelmäßig muss man dann die selben Einstellungen vornehmen. Dafür habe ich mir ein Powershell-Skript erstellt, welches folgende Konfiguration herstellt:

    • Installation des SNMP-Service
    • Installation des Telnet-Clients
    • Installation des .NET Framework 3.5.1
    • Installation von Bitlocker
    • Gesammte Firewall deaktivieren
    • Verstärkte Sicherheitskonfiguration füe IE für alle Benutzer deaktivieren
    • Start des “Assistent für die Erstkonfiguration” deaktivieren
    • Start des “Server-Manager” deaktivieren
    • Remote Desktop aktivieren

Um dieses Ausführen zu können muss erst die Berechtigung für Skripts angepasst werden. Dafür wird die Powershell geöffnet und der folgende Befehl eingeegben:

Set-ExecutionPolicy unrestricted

Anschließend kann das folgende Skript gestartet werden. Dafür muss es in eine Datei kopiert und mit der Datei-Endung “ps1″ versehen werden.

# Vorbereitung zur Feature-Installation
Import-Module Servermanager 
 
# SNMP installieren
Add-WindowsFeature SNMP-Services
Set-Service SNMP -StartupType Automatic
Start-Service SNMP
 
#Telnet-Client installieren
Add-WindowsFeature Telnet-Client
 
#.NET Framework 3.5.1 installieren
Add-WindowsFeature AS-NET-Framework
 
#Bitlocker installieren
Add-WindowsFeature Bitlocker
 
# Firewall deaktivieren
netsh advfirewall set allprofiles state off
 
# Registry für Routing-Anpassung
Set-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -name "IPEnableRouter" -value "0"
 
# Registry für IE ESC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" -Name "IsInstalled" -Value "0"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}" -Name "IsInstalled" -Value "0"
 
# Registry für Assistent für Erstkonfiguration
Set-ItemProperty -Path "HKLM:\Software\Microsoft\ServerManager\Oobe" -Name "DoNotOpenInitialConfigurationTasksAtLogon" -Value "1"
 
# Registry für Server-Manager
Set-ItemProperty -Path "HKLM:\Software\Microsoft\ServerManager\" -Name "DoNotOpenServerManagerAtLogon" -Value "1"
 
# RemoteDesktop
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value "0"
 
# Restart des Computers
Restart-Computer