Nach dem ich letzte Woche gelesen hatte, dass der Windows Server 8, genau wie Windows 8, mit dieser bescheuerten Metrooberfläche kommt, hab ich mir erstmal an den Kopf gefasst. Wie kann man sowas nur machen…. Im nächsten Absatz hieß es dann aber, dass der Server wohl diesmal _komplett_ über die Powershell administriert werden könnte. Im Gegensatz zu der Core Version von W2k8 R2 könnte man komplett auf eine GUI/Fenstermanager verzichten. Alles remote über eine erweiterte Powershellkonsole zu erledigen hört sich zwar anstregend, aber auch interessant an.
Ich hab das als Gelegenheit genutzt mich erneut in das Thema Powershell einzuarbeiten. Die Powershell ist eine komplexe und mächtige, aber auch sehr komplizierte, Scriptsprache. Nach ein paar Ausflügen zu MSDN und Technet habe ich mich wieder eingefunden und konnte sogar ein halbwegs sinnvolles Script zusammenklauen
[php]
#Danke an das Powershell Script Repository && Kevin Markwardt
#http://technet.microsoft.com/de-de/scriptcenter/dd742419
#loewenherz – 2011
if (!(Test-path -path C:\Portscans\))
{
New-item C:\Portscans\ -type directory
}
if (Test-Path C:\Portscans\scan.txt)
{
clear-content "C:\Portscans\scan.txt"
}
else
{
New-item C:\Portscans\scan.txt -type file
}
$server = "google.de"
$ports = (1..1000)
$timeout = 700
function Get-ChkPort([string]$portip,[string]$conport)
{
$ErrorActionPreference = "SilentlyContinue"
try
{
$tcpclient = new-Object system.Net.Sockets.TcpClient
$iar = $tcpclient.BeginConnect($portip,$conport,$null,$null)
$wait = $iar.AsyncWaitHandle.WaitOne($timeout,$false)
if(!$wait)
{
$tcpclient.Close()
Return $false
}
else
{
$error.Clear()
$tcpclient.EndConnect($iar) | out-Null #Buggy -.-
if(!$?){$failed = $true}
$tcpclient.Close()
}
if($failed)
{
return $FALSE
}
else
{
return $TRUE
}
}
catch
{
return $FALSE
}
}
function port_scanner([string]$srv)
{
$lisport = @()
foreach($pnummer in $ports)
{
$presult = ""
$presult = Get-ChkPort $srv $pnummer
Add-Content "C:\Portscans\scan.txt" "$server Port $pnummer Ergebnis: $presult"
Write-Host "$server Port $pnummer Ergebnis: $presult"
if($presult)
{
$lisport = $lisport + $pnummer
}
}
return $lisport
}
$p = port_scanner $server
[/php]