Benutzer mit den meisten Antworten
string.length liefert Länge 1 zurück?

Frage
-
Hallo Leute,
ich weiss nicht mehr weiter nach lesen von about_Functions und anderen Quellen. Folgende Funktion ergibt, mit dem Debugger betrachtet, für die Variable $l immer eine Länge des übergebenen Strings von 1 obgleich dieser immer länger ist.
Function ToUpper-Chars { Param( [string[]]$passwd, [int]$NumChars=1 ) $l = $passwd.length For ($loop=1; $loop -le $NumChars; $loop++){ $r = Get-Random -minimum 1 -maximum $l $ss = $passwd.SubString($r, 1).ToUpper() $ToUpper = $passwd.Remove($r,1) $ToUpper = $ToUpper.Insert($r,$ss) } Return $ToUpper }
# Aufrufbeispiel
$p = "kkfzjde"
$p = ToUpper-Chars -passwd $p -NumChars 2Erwähnenswert wäre vielleicht noch folgende Fehlermeldung beim Start, obwohl das restliche Script soweit funktionierte:
PS C:\Users\Michael> Set-ExecutionPolicy unrestricted
Set-ExecutionPolicy : Der Zugriff auf den Registrierungsschlüssel "HKEY_LOCAL_MACHINE\SOFT
WARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" wurde verweigert.
Bei Zeile:1 Zeichen:20
+ Set-ExecutionPolicy <<<< unrestricted
+ CategoryInfo : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccess
Exception
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Com
mands.SetExecutionPolicyCommand
Ich mache wohl etwas grundsätzlich falsch. Kann jemand helfen?
Danke!
- Bearbeitet mlkuen Mittwoch, 18. September 2013 17:08
Antworten
-
Dein parameter ist als String Array String[] deklariert.
Dein Array hat natürlich nur einen String im Index!
Entfernen die Klammern, Dann ist das ein Sring und kein Array von Strings!
Function ToUpper-Chars { Param( [string]$passwd, [int]$NumChars=1 ) $l = $passwd.length For($loop=1; $loop -le $NumChars; $loop++){ $r = Get-Random -minimum 1 -maximum $l $ss = $passwd.SubString($r, 1).ToUpper() $ToUpper = $passwd.Remove($r,1) $ToUpper = $ToUpper.Insert($r,$ss) } Return $ToUpper } # Aufrufbeispiel $p = "kkfzjde" $p = ToUpper-Chars -passwd $p -NumChars 2 $p
Mein deutscher PowerShell Blog http://www.admin-source.info
In meinem Blog: PowerShell Buchtipps und kostenlose PowerShell Tutorials + E-Books
Deutsche PowerShell Videos in meinem Youtube Kanal:http://www.youtube.com/user/GermanPowerShell
Auf Youtube mein 21 Teiliger PowerShell Video Grundlehrgang
Twitter: @PeterKriegel
Facebook: Peter Kriegel
Google+ : Peter Kriegel
Deutsches TechNet PowerShell Forum!
[[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort vorgeschlagen Peter Kriegel Donnerstag, 19. September 2013 04:59
- Als Antwort markiert Denniver ReiningMVP, Moderator Samstag, 21. September 2013 00:12
Alle Antworten
-
Dein parameter ist als String Array String[] deklariert.
Dein Array hat natürlich nur einen String im Index!
Entfernen die Klammern, Dann ist das ein Sring und kein Array von Strings!
Function ToUpper-Chars { Param( [string]$passwd, [int]$NumChars=1 ) $l = $passwd.length For($loop=1; $loop -le $NumChars; $loop++){ $r = Get-Random -minimum 1 -maximum $l $ss = $passwd.SubString($r, 1).ToUpper() $ToUpper = $passwd.Remove($r,1) $ToUpper = $ToUpper.Insert($r,$ss) } Return $ToUpper } # Aufrufbeispiel $p = "kkfzjde" $p = ToUpper-Chars -passwd $p -NumChars 2 $p
Mein deutscher PowerShell Blog http://www.admin-source.info
In meinem Blog: PowerShell Buchtipps und kostenlose PowerShell Tutorials + E-Books
Deutsche PowerShell Videos in meinem Youtube Kanal:http://www.youtube.com/user/GermanPowerShell
Auf Youtube mein 21 Teiliger PowerShell Video Grundlehrgang
Twitter: @PeterKriegel
Facebook: Peter Kriegel
Google+ : Peter Kriegel
Deutsches TechNet PowerShell Forum!
[[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort vorgeschlagen Peter Kriegel Donnerstag, 19. September 2013 04:59
- Als Antwort markiert Denniver ReiningMVP, Moderator Samstag, 21. September 2013 00:12
-
Wir dutzen uns hier ;-)
Bitte lies noch das hier:
Wozu Antworten markieren und für Beiträge abstimmen?
Mein deutscher PowerShell Blog http://www.admin-source.info
In meinem Blog: PowerShell Buchtipps und kostenlose PowerShell Tutorials + E-Books
Deutsche PowerShell Videos in meinem Youtube Kanal:http://www.youtube.com/user/GermanPowerShell
Auf Youtube mein 21 Teiliger PowerShell Video Grundlehrgang
Twitter: @PeterKriegel
Facebook: Peter Kriegel
Google+ : Peter Kriegel
Deutsches TechNet PowerShell Forum!
[[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
- Bearbeitet Peter Kriegel Donnerstag, 19. September 2013 05:47 asADS