【问题标题】:PowerShell Create script from scriptPowerShell 从脚本创建脚本
【发布时间】:2020-12-26 07:08:36
【问题描述】:

我希望从 Powershell 脚本中创建一个 Powershell 脚本。

我遇到的问题是我需要从远程 Powershell 终端构建并运行脚本到多台机器。脚本必须在本地机器上。不幸的是,我不认为 Invoke-Command 或 Enter-PSSession 可用,因为安装在各种机器上的 Powershell 版本可能与它们不兼容。或者这会让生活更轻松:(

因此,来自 UNIX/Linux 背景的我希望使用纯文本创建一个 PowerShell 脚本,然后在本地执行该脚本。不幸的是,作为 Powershell 世界的新手,我希望 powershell 脚本传递纯文本,而不是将执行的输出传递给在本地机器上创建的 powershell 脚本。

在这里测试水域是我编写的一个小脚本和输出。 VS 期望的输出。

提前致谢!

脚本:

 $var = @"
ping 8.8.8.8 
"$env:computername"
"@

$var > \Users\pc\Desktop\ping.ps1

C:\Users\pc\Desktop\ping.ps1

Remove-Item -Path C:\Users\pc\Desktop\ping.ps1 -Force 

输出

ping 8.8.8.8 
"DESKTOP-****"

期望的输出

ping 8.8.8.8
$env:computername

【问题讨论】:

    标签: powershell windows-server-2008 windows-server-2012


    【解决方案1】:

    您需要使用单引号 (') 来避免变量扩展:

    $var = @'
    ping 8.8.8.8 
    $env:computername
    '@
    
    $var > \Users\pc\Desktop\ping.ps1
    

    【讨论】: