如何确切知道PowerShell(PS)命令真的做了什么

问题描述:

例如,对于像Set-AzureVMCustomScriptExtensiondocument)这样的默认/内置命令,如何在命令不起作用时找到真正发生的事情?

在我的情况下,执行此命令后没有发布任何错误,但它不起作用:我想在命令
Set-AzureVMCustomScriptExtension -Run $ScriptA(其他参数都正确设置)中运行脚本,如ScriptA
ScriptA根本没有运行。如何确切知道PowerShell(PS)命令真的做了什么

+0

请编辑您的问题以包含您正在使用的实际代码以及它正在接收的任何输入。请求我们解释当我们无法看到您的代码时,您的代码无法正常工作的原因是NOP。 –

  1. 这是一个用于Azure模块的cmdlet,不是内置的“默认”cmdlet。
  2. 阅读错误消息。当一个cmdlet失败时,它会返回一个解释发生了什么问题的对象ErrorRecord,例如。 “拒绝访问”。如果您想知道当时用于参数的值,则必须在脚本中使用前缀输出它们。 Write-VerboseWrite-Debug或使用PowerShell ISE运行带有一些断点的脚本,以便在抛出错误时观察变量。
+0

感谢您的更正。在我的情况下,执行后没有发布错误。但'ScriptA'根本不运行。请参阅我的编辑帖子以获取更多参考。 – Leon

+0

您需要使用完整的命令和样本值更新问题。我不知道'$ scriptA'包含了什么。使用'-verbose'和'-debug'来查看它是否输出任何内容 –

尝试执行该cmdlet,如下面VerboseDebug开关,查看幕后发生的事情与小命令:

Set-AzureVMCustomScriptExtension -Run $ScriptA -Verbose -Debug 

如果它运行正常,那么你将不得不从Azure的排查脚本VM。然后,该错误与此cmdlet无关。检查脚本是否被设置为虚拟机的自定义脚本扩展。检查脚本是否存在逻辑中的任何错误。