为什么我收藏的字符串会截断单词?
本文关键字:单词 字符串 收藏 为什么 | 更新日期: 2023-09-27 18:19:03
我正在为Office 365编写一个PowerShell应用程序,我遇到了一个问题。
var result = pipeline.Invoke();
// close the runspace
runspace.Close();
// convert the script result into a single string
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("<----------------Results---------------->");
foreach (var item in result)
{
stringBuilder.AppendLine(item.ToString());
}
现在,一切都很顺利,直到我得到我的结果。问题是,如果我得到这样的响应:
UserPrincipalName DisplayName isLicensed
----------------- ----------- ----------
johnsonadmin@johnsoncom... Jack M***** False
如果我在Powershell中运行相同的命令,我将得到相同的结果,但格式更有条理。而不是说"johnsonadmin@johnsoncom...",它实际上会给我整个电子邮件地址。
我认为这可能是一个问题如何集合自动格式化我的字符串,但我不确定。当我试图解析电子邮件地址的文本时,这就成了一个大问题;)
任何帮助将不胜感激!!
谢谢!
如果您试图将管道的结果解析为字符串,则完全忽略了powershell 存在的理由:您不必解析字符串。那是1970年1月1日。如今,当你坐在一台现代化的Windows电脑前时,你会发现Awk、sed和grep是在佛罗里达州的一家养老院。如果你觉得自己在拿Cygwin,那你就做错了。
我以你的脚本为起点来做这件事,但是你会明白的(我希望):
//...
// result is a Collection<PSObject>
foreach (PSObject item in result)
{
// properties are not case-sensitive
string userPrincipalName = item.Properties["userprincipalname"].Value as string;
string displayName = item.Properties["displayname"].Value as string;
bool isLicensed = item.Properties["islicensed"].Value as bool;
// ...
}
Geddit吗?顺便说一句,您在输出中看到所有内容都被截断的原因是,您捕获了适合显示的格式化输出,该输出针对狭窄的控制台窗口进行了优化。
使用实际属性代替item.ToString()
我非常感谢你在整个属性部分的帮助-我不知道我能做到这一点。
我最近的问题,然而,在对象引用问题。我最终通过使用这个线程解决了这个问题。
结合使用不同类型的Powershell,这样我可以调用两次并通过ISS连接到MSOnline服务,我可以在不解析文本的情况下获得我的用户列表:)