我有一个功能正常的功能。 它从PowerShell GUI中的文本框中提取firstname的第一个字符和整个lastname,然后从两者中创建一个sAMAccountName。 现在我只需要生成的sAMAccountName中的前8个字符。
这是函数
Function Set-sAMAccountName {
Param([Switch]$Csv=$false)
if(!$Csv)
{
$GivenName = $txtFirstName.text
$Surname = $txtLastName.text
}
else{}
Switch($XML.Options.Settings.sAMAccountName.Style | Where{$_.Enabled -eq $True} | Select -ExpandProperty Format)
{
"FirstName.LastName" {"{0}.{1}" -f $GivenName,$Surname}
"FirstInitialLastName" {"{0}{1}" -f ($GivenName)[0],$Surname}
"LastNameFirstInitial" {"{0}{1}" -f $Surname,($GivenName)[0]}
Default {"{0}.{1}" -f ($GivenName)[0],$Surname}
}
}
有什么想法吗? 很多提前很多
答案 0 :(得分:0)
Substring
就是这样的:
你传递了你想要开始的地方的索引
你传递了你想要结束子串读数的索引(如果你没有传递任何东西,它将一直到字符串的长度结束)
所以在你的情况下,它将从索引0
的索引8
读取开始阅读:
$str = "a simple string"
$newString = $str.Substring(0,8)
我真的建议您阅读string
操纵here
答案 1 :(得分:0)
好的,我现在知道了!
我添加了 - 和条件来检查sAMAccountName的长度,并说 -lt 8 ,现在它正在运行。 sAMAccountName现在是8个字符。
这是之前的代码:
$txtName_TextChanged={
Write-Verbose "Creating required account fields"
if ($XML.Options.Settings.DisplayName.Generate -eq $True) {$txtDN.Text = Set-DisplayName}
if ($XML.Options.Settings.sAMAccountName.Generate -eq $True) {$txtsAM.Text = (Set-sAMAccountName)}
if ($XML.Options.Settings.UPN.Generate -eq $True) {$txtUPN.Text = Set-UPN}
}
改变之后:
$txtName_TextChanged={
Write-Verbose "Creating required account fields"
if ($XML.Options.Settings.DisplayName.Generate -eq $True) {$txtDN.Text = Set-DisplayName}
if ($XML.Options.Settings.sAMAccountName.Generate -eq $True -and $txtsAM.Text.Length -lt 8) {$txtsAM.Text = (Set-sAMAccountName)}
if ($XML.Options.Settings.UPN.Generate -eq $True) {$txtUPN.Text = Set-UPN}
}