有人可以解释为什么我的第一个例子不起作用,为什么添加ForEach-Object解决了这个问题?提前致谢!
我将命令的返回值解析为哈希表(发布结束时的示例),并希望将信息记录到文件中作为我处理的一部分.我知道这$ht.GetEnumerator() | Sort-Object Name会将完整的哈希返回到屏幕,排序.但是,一旦我尝试将文件发送到文件,它就会中断.
$ht | Add-Content log.txt
Run Code Online (Sandbox Code Playgroud)
只记录一行System.Collections.Hashtable.所以,我也试过了
$ht.GetEnumerator() | Sort-Object Name | Add-Content log.txt
Run Code Online (Sandbox Code Playgroud)
并最终成排
System.Collections.DictionaryEntry
System.Collections.DictionaryEntry
System.Collections.DictionaryEntry
Run Code Online (Sandbox Code Playgroud)
所以我试着循环并单独处理每一个
foreach ($key in $ht.keys) {
Add-Content log.txt "$key : $ht.$key" }
Run Code Online (Sandbox Code Playgroud)
并最终得到
Server address : System.Collections.Hashtable.Server address
Client address : System.Collections.Hashtable.Client address
User name : System.Collections.Hashtable.User name
Run Code Online (Sandbox Code Playgroud)
解决:
$ht.GetEnumerator() | Sort-Object Name |
ForEach-Object {"{0} : {1}" -f $_.Name,$_.Value} |
Add-Content log.txt
Run Code Online (Sandbox Code Playgroud)
作为参考,哈希表样本:
$ht = @{
"Server address" = "server.net";
"Client …Run Code Online (Sandbox Code Playgroud) 我知道如何使用类似的方式更改主ISE窗口的标题
$Host.UI.RawUI.WindowTitle = "My Awesome New Window Title"
Run Code Online (Sandbox Code Playgroud)
但我想知道如何访问弹出读取主机请求的窗口标题,如:
$strP4Pass = Read-Host "Please enter Perforce Password" -assecurestring
Run Code Online (Sandbox Code Playgroud)
它以Windows PowerShell ISE - Input标题的形式出现 - 是的,我知道我在窗口中有Please enter Perforce Password提示- 但我真的希望能够自定义标题 - 任何想法?