我可能在想这个,但这并不是我想象的那样。我搜索了谷歌,我搜索了stackoverflow。请帮忙。
以下是一些测试变量和函数调用:
$SQL_FirstName = "PowerShell";
$SQL_LastName = "CreateUser";
$SQL_Office = "TEST";
$SQL_IsAdmin = $true;
Create_User($SQL_FirstName.ToLower(), $SQL_LastName.ToLower(), $SQL_Office, $SQL_IsAdmin);
这是功能,还没有多少:
Function Create_User([string]$FirstName, [string]$LastName, $Office, $IsAdmin)
{
$FirstNameCharArray = [char[]]$FirstName;
$UserName = [string]$FirstNameCharArray[0] + $LastName;
Write-Host $UserName;
}
现在我希望输出为" pcreateuser"。但事实并非如此。我尝试过不同的东西,我尝试用$()包围我的变量。我尝试使用+符号而不使用+符号。我曾尝试将变量粉碎对方。每次只输出" p"。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
这是因为您调用该函数的方式。您不应该使用括号进行函数调用,也不应使用逗号分隔参数(除非您是故意或子表达式发送数组值)。你已经传递了这些元素的单个数组。
Create_User $SQL_FirstName.ToLower() $SQL_LastName.ToLower() $SQL_Office $SQL_IsAdmin
在你的函数中调用你发送的一个数组到$firstname
,它被作为一个字符串“powershell createuser TEST True”。其他参数应为空白。因此你的输出。
它们的工作方式与cmdlet调用相同。只需使用空格来分隔参数及其值。
Get-ChildItem -Filter "*.txt" -Path "C:\temp"
字符串到字符数组
对于它的价值,您不需要将字符串转换为char数组。您可以直接在字符串上使用数组表示法。
PS C:\Users\Matt> [string]"Bagels"[0]
B
哎呀,你甚至不需要施展它"Bagels"[0]