【问题标题】:Call Powershell Script from Unix Shell Script从 Unix Shell 脚本调用 Powershell 脚本
【发布时间】:2016-06-22 06:46:29
【问题描述】:

我的 Windows 服务器上有一个 powershell 脚本,它执行一些活动目录操作。我希望使用 shell 脚本从另一台 Linux 机器调用该脚本。

我已经在我的 Windows 服务器上安装了 powershell 服务器,并且可以使用 基于密钥的 ssh 身份验证与我的 linux 机器通信

由于 Windows 本身不支持 SSH 连接,因此我在我的 Windows 服务器上安装了一个名为 Powershell 服务器 (http://www.powershellserver.com/) 的软件。

问题是我的脚本只是在执行 ssh 到 Windows 服务器的命令后停止。

下面是我的shell脚本:

#!/bin/bash
echo "script run"
GROUP=$1
ACCOUNT=$2
ssh Administrator@<Windowshostname>
sleep 10
echo "<pathtoscript>\scriptname.ps1 -group $GROUP -account $ACCOUNT"
sleep 5
echo "exit"
exit

我也尝试过不使用 echo 命令,但它仍然挂起。知道我在这里做错了什么吗?请问我怎样才能让它工作?

【问题讨论】:

  • 我想你只需要ssh Administrator@Winhost "sleep 10; /path/to/script -group $GROUP -account $ACCOUNT"

标签: linux shell powershell


【解决方案1】:

使用“expect”脚本尝试了该操作,现在一切正常。

【讨论】:

    【解决方案2】:

    除非您安装 SSH 守护程序,否则您无法通过 ssh 进入 Windows 机器。 你有两个选择:

    1- 您需要通过Remote PowerShell (WINRM) 连接。

    2- 安装 SSH 守护程序并通过 SSH 连接(检查 here

    3- 您也可以使用PowerShell Web Access(Windows 服务器。)

    更新:如果您使用的是 PowerShellServer.com,那么您可以做一些事情来尝试了解更多信息。

    • 在 Windows Server 中本地测试 scriptname.ps1

    • 在第一行编辑您的 scriptname.ps1 以在某处创建文件,并在执行后检查该文件是否存在。这样你就可以知道脚本是否正在执行。

    • 执行 Get-ExecutionPolicy 并检查您是否可以运行脚本。通过临时 Set-ExecutionPolicy unrestricted

    • 移除约束

    【讨论】:

    • 我可以使用 ssh 命令连接到 Windows 机器,因为我已经在我的 Windows VM 上安装了 powershell 服务器。 ssh Administrator@ PowerShell 服务器:为 Windows 启用 SSH 的 PowerShell 访问 (powershellserver.com) PS C:\ProgramData>
    • 但默认情况下 Windows 不允许 SSH。你在原版 Windows 上安装了什么?
    • 您应该编辑您的问题并添加相关信息。
    • 刚刚做了。我不能使用 power shell web 访问,因为它只能通过 Unix shell 脚本。我必须在另一个实现中使用该脚本。
    • 是的。我可以在本地执行我的脚本。我正在执行一些 Active Directory 操作,并且在本地执行脚本时效果很好。
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2015-07-07
    • 2014-06-05
    • 2018-03-25
    相关资源
    最近更新 更多