问题标签 [powershell-ise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
644 浏览

powershell - 如何在 Powershell ISE 4.0 中启用全屏模式

我在网上搜索过,但没有找到好的解决方案。

在这里,全屏意味着隐藏标题栏。如果在 Windows 中使用 cygwin,这是按 ALT+F11 时的模式。

0 投票
2 回答
1261 浏览

powershell - 调用 tab-completion/Intellisense 时 PowerShell 中的 StackOverflowException

我正在 PowerShell 中编写一个 PowerShell 模块,它必须重定向程序集绑定。bindingRedirect我使用in没有问题,powershell_ise.exe.config但我认为这对于我想要分发的模块来说是不可接受的,所以我寻找其他方式并遇到了AppDomain.CurrentDomain.AssemblyResolve

我目前在我的.psm1文件顶部使用它:

我可以通过在 ISE 中使用 tab-completion/Intellisense 来相当可靠地触发问题。我也在shell中看到了它。当我说相当可靠时,触发它的并不总是同一个 cmdlet。例如,在准备这个时,我使用 Get-ADUser [tab] 触发了它,最近,我键入 get-por [tab],Intellisense 显示 Get-GPOReport,然后它挂起。

如果我注释掉以 [AppDomain]:: 开头的行并锤击制表符完成,我看不出有什么问题。

在我继续之前,我想指出我以前从未在 PowerShell 中调试过任何东西,所以在黑暗中摸索了很多。为了调试,我添加了一个带有名称和值的REG_SZto ,这让我可以选择启动 VS 2012。然后向我展示:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebugAuto1

System.StackOverflowException 未处理

当我查看调用堆栈时,我看到:

我只在两行之间重复了一个部分:

但这重复了很多。

我已经将它通过洗衣机几次,但我并不总是在调用堆栈中看到相同的结果。例如,有时重复部分如下所示:

而重复开始之前的初始部分通常是不同的。

从一点阅读来看,似乎 LightweightFunction 可能是我的函数 Resolve-AssemblyRedirect。

难道我做错了什么?

0 投票
0 回答
2572 浏览

powershell - Host.ui.prompt doesn't pop up a dialog/form when run from the ISE

I have a simple PowerShell script that uses both $host.ui.Prompt and $host.ui.PromptForChoice. When I run it from the ISE, PromptForChoice pops up a dialog but Prompt prompts at the console.

Read-Host also prompts at the console and does not show a dialog.

I.e. the script below shows a dialog for the initial choice, then prompts at the console pane for both A and B. Is this normal? My reading of the documentation suggests all three should throw a dialog. Have I missed something?

I'm running PowerShell 3.0 in case that's relevant.

0 投票
1 回答
7106 浏览

powershell - Powershell Remove-Item 不会删除所有项目

我有一个 Powershell 脚本,它应该删除 X 天前的项目。它不能完全工作。它会删除一些文件,但不是所有文件。当我在没有 的情况下运行脚本时| Remove-Item -Force,会显示所有符合要求的文件。所以,我知道该where声明有效。

为什么不Remove-Item -Force删除所有符合要求的项目是where语句,如何解决?

0 投票
3 回答
4258 浏览

xml - 使用 Powershell 从 XML 文件中读取

我发现很难找到从 XML 文件中检索内容的方法。下面是我的 xml 文件的样子。我正在尝试检索完整的“nlog”节点。请帮忙。

这是我到目前为止所尝试的:

我使用了此博客http://blog.danskingdom.com/powershell-functions-to-get-an-xml-node-and-get-and-set-an-xml-中提供的“Get-XmlNode”功能元素值甚至当元素不存在时/

我也尝试过 "Select-Xml" 、 .SelectSingleNode 命令,但它们似乎都不起作用。如果我遗漏了什么,请告诉我。

0 投票
3 回答
3376 浏览

arrays - 如何将 Outlook 电子邮件正文存储在数组中 - Powershell?

下面的脚本会读取我的 Outlook 电子邮件,但如何访问输出。我也是 Powershell 新手,我还在习惯某些事情。我只想获取 10 封未读 Outlook 电子邮件的正文并将它们存储在一个名为 $Body 的数组中。

0 投票
2 回答
5186 浏览

powershell - Powershell ISE缓存变量值?

我在 Windows Server 2008r2 上运行 64 位 Powershell ISE。

在调试时,我设置了一个变量,例如:

然后我进行以下更改

我再次单步执行脚本,即使调试器跨过修改后的行,当我将鼠标悬停在 $dbName 变量上时,它仍然显示值“db1”。我似乎可以解决此问题的唯一方法是重新启动该 ISE - 这很痛苦!

谁能告诉我哪里出错了?

* 更新 *

我在模块中有以下功能:

我有一个导入 moduleL 的 powershell 脚本

在 powershell ISE 中,通过在执行窗口中输入“SampleFunction”,在执行函数之前,我在 $dbName = "db1" 上放置了一个断点。一切都很好,值“db1”被写入输出窗口。

然后我更改函数,使 $dbName = "db2"。我通过再次执行 Import-Module -Name ".\BadPsm.psm1" 重新导入模块。

当我再次执行该函数时,我遇到了断点,走过去,可以看到 $dbName 仍然等于“db1”,“db1”也被写入了输出窗口。

为了帮助说明,我在这里向 youtube 发布了一个简短的截屏视频:youtube 链接

0 投票
1 回答
899 浏览

powershell - 59 个字符的 Powershell 自动换行

使用此命令结果分为两行,首先修剪 59 个字符,第二个 - 所有其他字符

它看起来像一些奇怪的自动换行,并且只出现在 Windows PowerShell ISE 中(Powershell.exe 工作正常)

增加缓冲区大小对我不起作用

这行得通

但它仅在排除“RedirectStandardError”时才有效,如果它存在 - 包装仍然在原地如果我使用相同的问题

0 投票
2 回答
58906 浏览

powershell - 如何将管道转换为 CSV 格式并指定 UTF-8 编码

在 Windows PowerShell 脚本中,我想执行将管道转换为 CSV 格式的代码,并且编码应该是 UTF-8。我怎样才能做到这一点?

0 投票
1 回答
16896 浏览

powershell - PowerShell - 为整个脚本设置 $ErrorActionPreference

今天我第一次尝试使用 PowerShell (v3.0),并对它的一些错误处理概念的奇怪实现方式感到非常沮丧。

我编写了以下代码(使用远程注册表 PowerShell 模块)

(这只是一个片段)

显然 PowerShell 的默认行为是不捕获非终止错误。所以我在脚本的顶部添加了以下行,正如不同人推荐的那样:

在 PowerShell ISE 中执行此操作确实捕获了所有错误。但是,从终端执行以下命令仍然无法捕获我的错误。

来自 ISE:

从命令行:

我不知道为什么首选项变量的行为会根据调用它们的位置而有所不同,尤其是因为 ISE 似乎执行完全相同的命令?

根据其他反馈,我更改了以下行:

至:

使用这种方法,我能够从命令行和 ISE 捕获错误,但我不想在我调用的每个 Cmdlet 上指定错误行为,特别是因为捕获错误对于正常运行至关重要编码。(另外,这种方法确实有效的事实只会让我更加困惑)

为整个脚本和/或模块的范围定义错误处理行为的正确方法是什么?

另外,这是我的 $PSVersionTable: