【问题标题】:Executing command from PowerShell从 PowerShell 执行命令
【发布时间】:2014-07-25 20:21:02
【问题描述】:

我正在尝试从 PowerShell 脚本配置 WinRM。我正在使用以下代码

$WinrmCreate= "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$sHostName"";CertificateThumbprint=""$CertificateThumbPrint""}"
Invoke-Expression $WinrmCreate

主机名和证书指纹是上面的变量,它们经过验证会出来。详细输出显示

VERBOSE: winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="RSNODE1";CertificateThumbprint="6C79C8E6E88779037593E6234DCE6E1A55662F87"}

但是,“Invoke-Expression”的执行会出现以下错误

Invalid use of command line. Type "winrm -?

有趣的是,如果我将我的行的输出复制/粘贴到命令提示符,它将创建侦听器而不会出错。

研究命令的执行我发现没有任何东西可以解释这种行为。 我唯一的理论是“winrm”命令本身就是一个脚本,并且有些东西行为不端。

【问题讨论】:

  • 你的理论是正确的。这是一个启动约 3900 行 VB 脚本的 cmd 脚本:@cscript //nologo "%~dpn0.vbs" %*

标签: powershell


【解决方案1】:

哈希表,例如@{Hostname=...} 由 PowerShell 解释。如果您使用的是 V3 或更高版本,请尝试使用 --% 简单参数解析运算符:

$env:Hostname = $sHostName
$env:CertThumbPrint = $CertificateThumbPrint
$WinrmCreate= "winrm create --% winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=`"%HostName%`";CertificateThumbprint=`"%CertThumbPrint%`"}"

【讨论】:

  • 你给了我一个“啊哈!”那一刻,我走上了同一条轨道。最终使用:$WinrmCreate= "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$sHostName"";CertificateThumbprint=""$CertificateThumbPrint""}"$WinrmArgs = "create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$sHostName"";CertificateThumbprint=""$CertificateThumbPrint""}" Start-Process "winrm" -ArgumentList $WinrmArgs`
【解决方案2】:

这是我为我做的,证书有 FQDN:

$fqdn ="CertificateSubjectName"

$certificate="CN="+$fqdn

$CertificateThumbPrint=(Get-ChildItem cert:\LocalMachine\My | Where-Object { $_.Subject -eq $certificate }).thumbprint

$WinrmCreate= 'winrm create winrm/config/Listener?Address=*+Transport=HTTPS `@`{Hostname=`"`'+$fqdn+'`"`;CertificateThumbprint=`"`'+$CertificateThumbPrint+'`"`}' 

invoke-expression $WinrmCreate

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2021-05-10
    • 2014-12-09
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多