Mr_Marple 15 Geschrieben 20. Februar 2016 Melden Teilen Geschrieben 20. Februar 2016 (bearbeitet) Hallo Forum! Wie prüft man in der Powershell richtig, ob ein Parameter leer ist? Param( [string]$ComputerName, [string]$File, [string]$DriveLetter ) Function auslesen { [array]$volume=Get-WmiObject -Class Win32_Volume -Filter "DriveLetter='$DriveLetter'" -ComputerName $_ $capacity=$volume.Capacity/1gb $freespace=$volume.FreeSpace/1gb "Frei: {0:n2} GB, Gesamtgröße: {1:n2} GB, Computer: {2}" -f $freespace,$capacity,$_ } #if ($DriveLetter -eq $null) {$DriveLetter="C:"} if (($DriveLetter | Measure-Object -Character).Characters -eq 0) {$DriveLetter="C:"} if (($ComputerName | Measure-Object -Character).Characters -ne 0) {$ComputerName | ForEach-Object {auslesen}} if (($File | Measure-Object -Character).Characters -ne 0) {Get-Content $file | ForEach-Object {auslesen}} Wichtig sind die letzten 4 Zeilen. Bisher habe ich Variablen, die nicht per Skriptparameter daherkamen, immer so abgefragt wie in der auskommentierten Zeile. Wäre also $DriveLetter eine nicht definierte Variable, dann funktioniert das auch. Da es aber ein Parameter ist, muss man anscheinend was anderes machen. Ich habe es nun so hingebogen, dass ich die Zeichen zähle. Aber ich denke da gibt es sicher eine richtigere Lösung, wie sieht die aus? LG bearbeitet 20. Februar 2016 von Mr_Marple Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 20. Februar 2016 Melden Teilen Geschrieben 20. Februar 2016 Hi, In der Parameterliste kannst du der Variable einfach einen default-wert mitgeben function Get-SmallFiles ($size = 100) { Get-ChildItem c:\ | where {$_.Length -lt $Size -and !$_.PSIsContainer} } Get-SmallFiles 500 # $size ist 500 Get-SmallFiles # $size ist default 100 # https://technet.microsoft.com/en-us/library/hh847829.aspx blub Zitieren Link zu diesem Kommentar
Beste Lösung Cybquest 36 Geschrieben 20. Februar 2016 Beste Lösung Melden Teilen Geschrieben 20. Februar 2016 Statt $null ggf. einfach $Driveletter -eq "" ? Zitieren Link zu diesem Kommentar
Mr_Marple 15 Geschrieben 20. Februar 2016 Autor Melden Teilen Geschrieben 20. Februar 2016 @blub Danke für die super Info! Ist wirklich praktisch so. :cool: @Cybquest Oh Gott, so einfach ist das?! :schreck: Hab ich in CMD Zeiten immer so gemacht. Wie bin ich davon nur abgekommen... Danke jedenfalls! Seltsam ist trotzdem dass es mit $null bei undefinierten Variablen trotzdem funktioniert. Beitrag ist somit gelöst, danke! LG Oh, kann man hier nicht 2 Beiträge als Lösung markieren? Schade! Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 20. Februar 2016 Melden Teilen Geschrieben 20. Februar 2016 nu ja, eine undefinierte und eine leere Variable sind 2 Paar Stiefel ;) Schön, wenn Lösungen manchmal so einfach sein können :) Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 24. Februar 2016 Melden Teilen Geschrieben 24. Februar 2016 Da gabs doch auch noch isnullorempty? http://techibee.com/powershell/check-if-a-string-is-null-or-empty-using-powershell/1889 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.