【问题标题】:Running a PowerShell Script .PS1运行 PowerShell 脚本 .PS1
【发布时间】:2016-11-09 16:53:20
【问题描述】:

我正在尝试使用kb2915218 中的 PowerShell 脚本为我的应用程序生成 MachineKey。

我已将该函数复制到记事本中并保存为 .PS1 文件。现在,如果我通过资源管理器查看此文件,它会被识别为 PowerShell 文件。

然后我运行 PowerShell 和 CD 到我的 .PS1 文件的目录。

然后我运行了以下命令:

Set-ExecutionPolicy Unrestricted

接着是:

.\Powershell-Generate-MachineKey.ps1

(我的脚本的名称)。最后我尝试运行命令

Generate-MachineKey

但是我得到了消息:

Generate-MachineKey : 术语“Generate-MachineKey”未被识别为
cmdlet、函数、脚本文件或可运行程序的名称。检查拼写
的名称,或者如果包含路径,请验证路径是否正确并尝试
再次。
在行:1 字符:1
+ 生成机器密钥
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (Generate-MachineKey:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

谁能告诉我这里哪里出错了?

【问题讨论】:

  • . .\Powershell-Generate-MachineKey.ps1(注意前导点)。
  • 我是个多么笨拙的人,我已经看了大约 1 小时了。伟大的!请将此添加为解决方案,我会接受:)

标签: powershell


【解决方案1】:

脚本只是定义了一个函数,所以如果你这样执行:

.\Powershell-Generate-MachineKey.ps1

它不会做任何事情,因为该函数不会在任何地方调用,也不会在当前上下文中可用。对于后者你需要dot-source脚本

. .\Powershell-Generate-MachineKey.ps1

点运算符基本上在当前上下文而不是子上下文中执行脚本。这样,脚本中的定义就可以在当前上下文中使用,您可以像这样调用函数:

Generate-MachineKey

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2018-03-03
    • 1970-01-01
    • 2021-06-30
    • 2020-02-03
    • 2013-08-29
    相关资源
    最近更新 更多