mineralwasser
Goto Top

Powershell Custom Commands Respektiv Shortcuts

Hallo Leute

Ich habe vor nun Powershell häufiger einzusetzen und daher möchte ich mir zu den Befehlen die ich häufig benütze Shortcuts erstellen. Wie kann ich das am Besten machen und wo geht ihr mit euren eigenen Scripts hin, damit ich sie von überall aus starten kann? Gibt es da eine Best Practice?

Beispiel:
connectDC -> Enter-PSSession -ComputerName DC1 -Credential Administrator@mydomain.com

Mit Set-Alias hat es auf jeden Fall nicht wie gewünscht funktioniert und ich habe auch versucht die Environmental Path Variable zu editieren, aber das ruft mir standardmässig nicht die PS1 befehle aus.

Vielen Dank

Content-ID: 263045

Url: https://administrator.de/contentid/263045

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

colinardo
Lösung colinardo 11.02.2015 aktualisiert um 13:14:10 Uhr
Goto Top
Hallo Mineralwasser,
für sowas gibt es das Powershell-Profil. Den Pfad zu dieser PS1 Datei kannst du dir mit
$profile
in einer Konsole ausgeben lassen. Wenn die Datei noch nicht existiert legst du sie einfach an. Die Profil-Datei ist ein ganz normales Script in das du deine Befehle, Funktionen etc. hinterlegen kannst. Das Profil-Script wird bei jedem erstellen einer Powershell-Session geladen, und ist dann in deiner Powershell-Session verfügbar.
Ich persönlich mache das mit PhraseExpress um meine Scripte etc. überall einfügen zu können. Aber das ist Geschmackssache und das kann jeder selber entscheiden.
Zusätzlich könnte man häufig benötigte Funktionen in Powershell-Module auslagern, genauso wie du z.B. mit Import-Module ActiveDirectory die CMDLets des AD lädst.

Grüße Uwe
AnkhMorpork
Lösung AnkhMorpork 11.02.2015 aktualisiert um 13:14:15 Uhr
Goto Top
Was letztlich dazu führen kann, dass ein Profil so aussieht (oder eben anders):

$env:ScriptPath = '\\Server\Verzeichnis\WindowsPowershell\Scripts'
$Profile = '\\Server\Verzeichnis\WindowsPowershell\Profile.ps1'
Import-Module PSUserTools
Function tcm ([String]$volume="d:\data.tc",[String]$letter="x:")
{
$MountError = 0
If (Test-Path $letter)
{
"Drive $letter is already mounted."
$MountError = 1
} #EndIf
If (!(Test-Path $volume))
{
"File $volume not found."
$mountError = 1
} #EndIf
If ($MountError -eq 0)
{
C:\"Program Files"\TrueCrypt\TrueCrypt.exe /volume $volume /letter $letter
} #EndIf
} #EndFunction

Function tcdm ([String]$letter="x:") 
{
If (Test-Path $letter)
{
C:\"Program Files"\TrueCrypt\TrueCrypt.exe /volume /dismount /letter $letter
} #EndIf
Else
{
"Drive is not mounted."
Test-path $letter
} #EndElse
} #EndFunction
Function GoHome ([String]$HomeDir="\\Server\Verzeichnis") {Set-Location $HomeDir}
Function GoScripts ([String]$Path=$env:ScriptPath) {Set-Location $Path}
Function INC {Param([int32]$a=0,[int32]$b=0);$a+=$b;$a}
Function DEC {Param([int32]$a=0,[int32]$b=0);$a-=$b;$a}
$Konsole=(Get-Host).UI.RawUI
$Konsole.ForegroundColor="Green"
$Konsole.BackGroundColor="DarkBlue"
$Konsole.WindowTitle=" Wbemtest.exe, Functions:  Sudo / GoHome / GoScripts / TCm / TCdm / INC / DEC"
#$host.ui.rawui.ForegroundColor = "Green"
Set-Alias sudo Start-ProcessAsAdministrator
if(test-path $env:ScriptPath) {GoScripts} else {"Script path ($env:ScriptPath) not found ... gone home.";GoHome}
Mineralwasser
Mineralwasser 11.02.2015 aktualisiert um 13:18:37 Uhr
Goto Top
Ihr seid grossartig... vielen Dank

Ist genau das was ich gesucht habe. Ich werde mir jetzt auch ein persönliches Profil erstellen. Als editor habe ich einmal VIM installiert. Phraseexpress muss ich mir noch genauer anschauen.