我使用一个脚本,根据系统 %username% 为 AS400 会话生成会话名称,问题是如果用户名超过 7 个字符,连接将失败。会话名称会附加一个字符,连接支持的总长度为 8 个字符。
有任何想法吗?
答案1
如果我理解正确的话,最好的方法是选择用户名的子字符串。可以这样做:
%username:~0,7%
这将选择用户名的前七个字符。如果您需要以不同的方式截断,第一个数字(0)是子字符串的起始位置,第二个数字(7)是要选择的字符数。
正如 EBGreen 指出的那样,除了批处理之外,还有其他脚本语言。如果您使用 Powershell,语法将是:
$env:UserName.Substring(0,7)
如果您使用 VBScript,语法如下:
WScript.Echo Left(CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%"), 7)
答案2
干净的方法是创建一个新的环境变量,该变量在登录期间从目录服务器读取并存储在用户的环境中。
这将允许您在中心位置而不是在所有脚本中更改用于生成 7 个字符名称的函数,并且还允许您在创建帐户期间验证唯一性。