在powershell

时间:2015-07-10 22:46:24

标签: powershell

我可能在想这个,但这并不是我想象的那样。我搜索了谷歌,我搜索了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"。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 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]