小编ran*_*0m1的帖子

Powershell散列表不按预期写入文件 - 仅接收"System.Collections"行

有人可以解释为什么我的第一个例子不起作用,为什么添加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)

powershell hashtable

12
推荐指数
4
解决办法
3万
查看次数

如何在PowerShell ISE中更改Read-Host提示符的WindowTitle?

我知道如何使用类似的方式更改主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提示- 但我真的希望能够自定义标题 - 任何想法?

powershell powershell-ise

4
推荐指数
1
解决办法
2175
查看次数

标签 统计

powershell ×2

hashtable ×1

powershell-ise ×1