Kategorie-Archiv:Windows Powershell

Update-SteamApplication.ps1

Mit der folgenden Funktion kann man eine Applikation von Steam wie einen Ark: Survival Evolved oder Armed Assault 3 Server downloaden.

Download des folgenden Codes: http://martyn.sol-diers.com/wp-content/uploads/2015/12/Update-SteamApplication.zip

Die Windows Powershell-Funktion „Update-SteamApplication“ wurde von mir geschrieben, um meine Gaming Server schneller und einfacher bereitstellen zu können. Mit Hilfe dieser Funktion ist gewährleistet, dass die Gaming Server bei jedem Neustart auf dem neuesten Stand gehalten werden, sofern man diese mit dem Neustart eines Server verbindet (Windows Dienste als Denkanstoß).

Bei Fehlern und ähnlichem bitte ich um eine entsprechende Nachricht.


Quelle

Windows Powershell und 7zip als Backup

Hier gibt es mal eine von mir selbst geschriebene Funktion mit 7zip und Windows Powershell 3.0! Ich betone das 3.0. Mit vorherigen Versionen wird dieses Skript nicht funktionieren können, da sonst unten im Code folgende Parameter nicht richtig interpretiert werden.

Die folgende Funktion hat mir schon oft das Leben erleichtert. Damit kann man ganze Ordner sichern, aber auch einzelne Files und wenn gewünscht sogar mit einem Passwort versehen.

Noch kurz ein Hinweis zu den Parametern:
„program_7z_local_path_string“ erwartet den Installationspfad von 7-zip. Weiß man diesen nicht oder hat das Programm standardmäßig installiert, so wird aufgrundlage der Betriebssystemarchitektur der Pfad gewählt. Wobei ich leider kein x86 Betriebssystem zur Hand habe um das genauer zu testen.

Falls jemanden ein Fehler auffallen sollte, so bitte ich doch um einen Kommentar oder eine E-Mail an martyn@sol-diers.com

function New-7z{
<#
.SYNOPSIS
This function creates a 7z file (*.7z) with a timestamp.

.DESCRIPTION
This function creates a 7z file (*.7z) with a timestamp and with a password if you wish.

.PARAMETER file_7z_name_string
Type here the name of the file that will be created.

.PARAMETER file_7z_password_string
Type a password to protect your new 7z file.

.PARAMETER folder_local_path_input_string
Input path means all items in this folder will be zipped.

.PARAMETER folder_local_path_output_string
Output path of the new 7z file.

.PARAMETER program_7z_local_path_string
Installation path of 7z (7z.exe).

.EXAMPLE
#With password
New-7z -file_7z_name_string „MyFile“ -file_7z_password_string „12345“ -folder_local_path_input_string „C:\test“ -folder_local_path_output_string „C:\temp“

.EXAMPLE
#Without password
New-7z -file_7z_name_string „MyFile“ -folder_local_path_input_string „C:\test“ -folder_local_path_output_string „C:\temp“
#>
[CmdletBinding()]
Param(
[string]$file_7z_name_string,
[string]$local_path_input_string,
[string]$local_path_output_string,
[string]$file_7z_password_string,
[string]$program_7z_local_path_string = „“,
[SWITCH]$enableTimeStamp,
[SWITCH]$enableFilePacking
)

If ($program_7z_local_path_string -eq „“){
$osarch = (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture
If ($osarch -eq „64-bit“){
$program_7z_local_path_string = „C:\Program Files\7-Zip\7z.exe“
}
else {
$program_7z_local_path_string = „C:\Program Files (x86)\7-Zip\7z.exe“
}
}

##############################################
## Setting the name of the 7z-file
##############################################
If ($enableTimeStamp){
$file_7z_name_timestamp_string = [datetime]::Now.ToString(„yyyy-MM-dd_HHmm“)
$file_7z_final_name_string = [String]::Format(„{0}\{1}_{2}.7z“, $local_path_output_string,$file_7z_name_string,$file_7z_name_timestamp_string)
}
else {
$file_7z_final_name_string = [String]::Format(„{0}\{1}.7z“, $local_path_output_string,$file_7z_name_string)
}

##############################################
## Create the 7z-file (with and or
## without password)
##############################################
If ($enableFilePacking){
If ($file_7z_password_string -ne „“){
&$program_7z_local_path_string a -t7z $file_7z_final_name_string $local_path_input_string -mx9 -r -p““$file_7z_password_string““ -mhe | out-host
}
else {
&$program_7z_local_path_string a -t7z $file_7z_final_name_string $local_path_input_string -mx9 -r -mhe | out-host
}
}
else {
If ($file_7z_password_string -ne „“){
&$program_7z_local_path_string a -t7z $file_7z_final_name_string $local_path_input_string\* -mx9 -r -p““$file_7z_password_string““ -mhe | out-host
}
else {
&$program_7z_local_path_string a -t7z $file_7z_final_name_string $local_path_input_string\* -mx9 -r -mhe | out-host
}
}

}

Get-Counter in Variable

Damit verschiedene Werte von Get-Counter in eine Variable gepackt werden können, müssen diese isoliert werden.

$a = (Get-Counter „\\meinserver\Memory\Available MBytes“).CounterSamples.CookedValue;
Write-Host $a


Quelle

E-Mails versenden

Um E-Mails zu versenden, kann man dies natürlich als Funktion aufrufen. Damit die Parameter richtig übergeben werden, muss der Befehl richtig formatiert werden, wie es das nachfolgende Beispiel ist:

sendmail “$computer_name@test.com” “john.doe@test.com” “Server-Neustart” “Der Server $computer_name wurde neu gestaret.”;

Alternativ dazu kann man es natürlich auch im Script direkt mit

$sender = „john.doe@test.com“
$receiver = „john.doe@test.com“
$subject = „Test“
$body = „Meine spitzenklasse E-Mail.“

aufrufen. Der SMTP-Server sollte direkt im Skript definiert werden, da sich dieser für gewöhnlich nur sehr selten verändert, aber dies liegt im eigenen ermessen.

$global:SMTP_Server = „meinmailserver“

Was auf jeden Fall in der Funktion stehen muss, ist der nachfolgende Code. Dieser ist das Kernstück und versendet die E-Mail wirklich, auf Wunsch auch mit einem Anhang.

$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = $global:SMTP_Server
$mailmessage.from = $sender
$mailmessage.To.add($receiver)
$mailmessage.Subject = $subject
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = $body
$smtpclient.Send($mailmessage)


Quelle

Dateien kopieren

Der folgende Befehl kopiert alle Unterordner und -dateien eines Ordners an den gewünschten Pfad.

Copy-Item [SOURCE] [DESTINATION] -recurse

Der Aufruf innerhalb der Powershell könnte dann z.B. so aussehen:

Copy-Item c:\scripts c:\test -recurse

Allerdings möchte ich noch darauf hinweisen, dass die Pfade ein Leerzeichen enthalten können z.B. „C:\Program Files“. Das wird dann durch Anführungszeichen geregelt. Nachfolgend nochmal ein Beispiel:

Copy-Item „C:\Program Files“ „c:\test der zweite“ -recurse

Der Parameter „recurse“ heißt, dass bei einer Angabe eines Ordners nicht nur der Ordner, sondern auch alle Unterordner mitsamt Dateien kopiert werden.


Quelle
http://technet.microsoft.com/de-de/library/hh849793%28v=wps.620%29.aspx