从命令提示符中运行PowerShell命令(无需ps1脚本)

47

我正在寻找一种从命令提示符中运行几个PowerShell命令的方法。我不想为此创建脚本,因为我只需要运行几个命令,并且我不太了解如何使用PowerShell进行脚本编写。

以下是我试图使用的命令:

Get-AppLockerFileInformation -Directory <folderpath> -Recurse -FileType <type>

我不想为此创建一个脚本,因为如果我可以只运行一个或两个命令的批处理文件,那将会更容易些。

编辑: 以下是我迄今尝试过的方法:

1)

powershell -Command "Get-AppLockerFileInformation....."
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program....

2)

powershell -Command {Get-AppLockerFileInformation.....}

这种方法没有错误,但我没有得到任何返回值。如果我使用 Set-AppLockerPolicy...,什么都不会发生。

3)

powershell -Command "{Get-AppLockerFileInformation.....}"
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program....

4)

powershell -Command "& {Get-AppLockerFileInformation.....}"
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program....

5)

powershell "& {Get-AppLockerFileInformation.....}"
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program....

6)

powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command {Get-AppLockerFileInformation....}
没有错误但没有任何反应。 7)
powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Get-AppLockerFileInformation...."

没有错误,但是没有任何反应。


1
一方面你说“我不想创建一个脚本”,另一方面你又说“如果我可以从批处理文件中运行一个或两个命令”。那么,到底是哪一个呢? - djangofan
1
我应该澄清,我不想创建一个 PowerShell 脚本。 - Chef Pharaoh
我首先使用 Import-Module AppLocker 命令来加载库。我正在使用 Windows Embedded 7。也许我需要将这两个调用组合起来,先导入库,然后运行命令...?? - Chef Pharaoh
1
stackoverflow.com/a/19111810 可能对您有用。它是关于如何将 .cmd 和 .ps1 合并成一个文件 (.cmd) 的内容。 - robert4
@homay2 谢谢你提供的参考,看起来不错。我一定要多研究一下,因为我对PowerShell还有点新。 - Chef Pharaoh
显示剩余2条评论
4个回答

69

这是唯一解决我的问题的答案,我在这个网页的帮助下解决了它(不错的参考)。

powershell -command "& {&'some-command' someParam}"

此外,这里有一个很棒的方法可以执行多个命令:

powershell -command "& {&'some-command' someParam}"; "& {&'some-command' -SpecificArg someParam}"
例如,这是我运行两个命令的方式:
powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XmlPolicy myXmlFilePath.xml}"

2
这里有另一个有用的技巧,你可以从命令提示符中运行ps1脚本并传递参数,例如:powershell.exe -File "C:\myfile.ps1" arg1 arg2 arg3 或者 powershell.exe -File "C:\myfile.ps1" -Some-Command arg1 -Another-Command arg2 - Chef Pharaoh
5
命令“powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XmlPolicy myXmlFilePath.xml}"”在两个独立的PowerShell会话中运行这两个命令,即如果您需要在两个命令之间共享一些变量,则不适用。解决方案如下:“powershell -command "& {$someVar = 'test'; &'Write-Host' $someVar}"”。 - Maciej Nowicki
1
@Maciej 我认为它不会在不同的PS会话中运行,否则此特定命令的第二部分将失败,因为我需要从命令的第一部分加载该模块。我不同意。但是,如果需要共享变量,正如您所提到的,可能会有一些价值。 - Chef Pharaoh
很好的答案。小小的延伸:我需要从命令提示符中在新窗口启动PowerShell命令,并发现以下命令可行: start powershell -Command "& cd C:\somedir; npm start" - bnp887
对我来说不起作用:2023年使用Windows 11。我收到错误信息“[...] 不被识别为命令、函数、脚本文件等。” - Mickaël C. Guimarães
@MickaëlC.Guimarães 我还没有在Windows 11上尝试过,但是你的命令字符串中是否需要使用Import-Module命令呢? - Chef Pharaoh

13

像这样,在单个命令行上运行它:

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile 
  -WindowStyle Hidden -Command "Get-AppLockerFileInformation -Directory <folderpath> 
  -Recurse -FileType <type>"

我一有机会就会尝试这个。不过似乎里面有很多标志,如果我想使用Set-AppLockerPolicy和New-AppLockerPolicy,是否相同呢? - Chef Pharaoh
这个不起作用,更不用说 <code>-WindowStyle</code> 标志会关闭我的命令提示符了... 另外,我不需要 <code>ExecutionPolicy</code> 标志,因为我直接使用命令行。 - Chef Pharaoh
是的,其中一些选项可能是不必要的。根据您的需求进行微调即可。更多信息请参考:http://zduck.com/2012/powershell-batch-files-exit-codes/ - djangofan

2
也许可以尝试使用命令powershell -Command "Get-AppLockerFileInformation....."。请查看powershell /?了解更多信息。

1
这就是我一直在尝试的,但似乎语法不太对或者其他什么问题。然而,当我直接从PowerShell运行命令时,它可以正常工作... - Chef Pharaoh
好的,你有收到任何错误信息或其他提示吗?请编辑你的问题并提供更多信息。你尝试了什么,哪些部分没有起作用等等。 - NiKiZe
这个语法对我有效。但需要注意的是,它不能使用单引号。 - anthonybell

0

这个在我的 Windows 10 的 cmd.exe 命令提示符中可以运行

powershell -ExecutionPolicy Bypass -Command "Import-Module C:\Users\william\ps1\TravelBook; Get-TravelBook Hawaii"

这个例子展示了

  1. 如何链接多个命令
  2. 如何使用模块路径导入模块
  3. 如何运行在模块中定义的函数
  4. 不需要那些花哨的"&"符号。

1
是的,要运行脚本,您需要更改本地执行策略... - Chef Pharaoh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接