Powershell 提供一个-Command“&{…}”到-Command“{…}”的区别——它们似乎做了同样的事情
如果在2分钟内发现,我需要终止一个可能的重生计划 两者的区别是什么Powershell 提供一个-Command“&{…}”到-Command“{…}”的区别——它们似乎做了同样的事情,powershell,Powershell,如果在2分钟内发现,我需要终止一个可能的重生计划 两者的区别是什么 Powershell.exe -Command "& {for ($i=1; $i -le 1200; $i++) { Stop-Process -Name ExecuteableName.exe -Force 2>&1|out-null; Start-Sleep -m 100; }}&q
Powershell.exe -Command "& {for ($i=1; $i -le 1200; $i++)
{ Stop-Process -Name ExecuteableName.exe -Force 2>&1|out-null;
Start-Sleep -m 100; }}"
及
省略-executionpolicy remotesigned以简化两个调用?我不在PS外壳内,而是使用普通的CMD.exe或TCC/LE JPE软件外壳
如果我用一些输出替换停止进程或删除outputstream重定向,两者看起来是相同的-但是powershell.exe/help建议使用&variant
我通读了一遍又一遍
但是没有得到,有什么区别
这两者有什么区别
在这种情况下,它们在功能上是相同的。有几点你需要理解才能知道确切的区别
第一个是。它可以是:-、字符串或脚本块
忽略-因为它只是另外两个中的一个,但来自标准输入而不是参数。字符串最容易理解,因为它只是PowerShell代码。两个示例都使用字符串参数。但是,ScriptBlock仅作为类型存在于PowerShell中:
当Command参数能够将传递给Command的值识别为ScriptBlock类型时,它仅接受脚本块执行。这仅在从另一台PowerShell主机运行PowerShell.exe时才可能
您没有提到用于调用Powershell.exe的shell,但它可能不是Powershell,因此无法使用ScriptBlock。例如:
PS>Powershell.exe-命令{Write Host'Hello world!'
你好,世界!
要理解的第二点是什么是ScriptBlock。有相关文档,但我个人认为它对理解细微差别没有多大帮助。
如果将ScriptBlock分配给变量,可能更容易理解
PS>$block={写主机“你好,世界!”}
PS>&$block
你好,世界!
虽然脚本块很有用,但在本例和第一个示例中,使用更简单的脚本块没有任何好处
PS>写主机“你好,世界!”
你好,世界!
但是powershell.exe/help建议使用&variant
我不知道你在读什么,但很可能只是描述了如何避免这种情况:
您可以在字符串中编写脚本块,但它不会被执行,而是会像您在典型的PowerShell提示符下键入脚本块一样,将脚本块的内容打印回给您
类似于
PS>$block={写主机“你好,世界!”}
PS>$block
写下主持人“你好,世界!”
Powershell.exe -Command "for ($i=1; $i -le 1200; $i++)
{ Stop-Process -Name ExecuteableName.exe -Force 2>&1|out-null;
Start-Sleep -m 100; }"