嵌入 Powershell 脚本问题

     2023-03-13     287

关键词:

【中文标题】嵌入 Powershell 脚本问题【英文标题】:Embedding in the Powershell script issue 【发布时间】:2015-07-07 09:26:11 【问题描述】:

根据其他用户的建议创建此问题,它是this 的后续行动。

场景是我目前正在尝试创建一个 Powershell 脚本,第一次使用的用户可以运行该脚本,它将安装一堆程序并完成几个配置更改。其中一项配置更改是创建一个包含两个 shell 命令的文件(在下面发布),然后每次加载 GitBash 时都会执行该文件。

我尝试输入 .sh 文件的命令是..(删除了 " 和 ')

alias proxyon=source $HOMEPATH/.proxy/proxy-switch.sh on

alias proxyoff=source $HOMEPATH/.proxy/proxy-switch.sh off

我正在尝试使用以下命令来执行此操作

add-content "$env:homepath\.proxy\TempProxy.bat" "alias proxyon='source "$HOMEPATH/.proxy/proxy-switch.sh on"'" 

但是,ps1脚本的执行抛出了一个错误,上面一行是

Add-Content : A positional parameter cannot be found that accepts argument '/.proxy/proxy-switch.sh'.

现在,另一位用户告诉我,如果我要使用 double " 我需要转义内引号。据我所知,Powershell 中的转义字符是 ` ,所以我尝试了以下方法。

add-content "$env:homepath\.proxy\TempProxy.bat" "alias proxyon='source `"$HOMEPATH/.proxy/proxy-switch.sh on"'" 

这给出了以下内容

字符串开始:在 C:\Chef\windowsdevbox-master\test.ps1:2 字符:113 + 添加内容 "$env:homepath.proxy\TempProxy.bat" "alias proxyon='source `"$HOMEPATH/.proxy/proxy-switch.sh on"

我也试过了

add-content "$env:homepath\.proxy\TempProxy.bat" "alias proxyon='source `"$HOMEPATH/.proxy/proxy-switch.sh on`"'" 

这不会出错,但是它不会添加 $HOMEPATH 的内容,而只会添加以下内容

alias proxyon='source "/.proxy/proxy-switch.sh on"'

对此的任何建议将不胜感激。

【问题讨论】:

您期待文件中的文字$HOMEPATH 还是环境变量扩展为什么?我的$HOMEPATH` which I don't think gets you the output you want. You are also using $env:homepath`,这可能就是你要找的。​​span> 我希望它添加 $HOMEPATH 的内容,在我的例子中是下面的 $ echo $HOMEPATH \Users\ 是一个替代品。此外, $env:homepath' 是一个 Powershell 命令。 $HOMEPATH 是一个 shell 命令,这就是为什么我需要它是这样的,因为它将在 GitBash 中运行。 你只需要用反引号来逃避那个吗? `$家庭路径。所以powershell不会尝试对它做任何事情。我不知道 Gitbash,但似乎你只需要逃避它。 老实说,关于“逃避它”的整体理解对我来说是新的。在上一个问题中有人告诉我要尝试的东西,我只是想通过这样做来学习,也就是尝试一切,然后问为什么它会起作用。 没问题。如果我们走在正确的轨道上,我会对此做出回答。 【参考方案1】:

我认为问题在于您希望在输出文件中使用文字 $homepath 以便让 GitBash 处理它。有很多方法可以尝试逃避和处理这个问题,但让我们与您合作,最后一个几乎准备好了。

add-content "$env:homepath\.proxy\TempProxy.bat" "alias proxyon='source `"`$HOMEPATH/.proxy/proxy-switch.sh on`"'" 

这里唯一不同的是$HOMEPATH前面的反引号。由于 PowerShell 使用 $ 来声明和引用变量,因此您需要对其进行转义,就像您对引号所做的那样,以防止 PowerShell 干扰它。

由于您没有名为$HOMEPATH 的变量,它是在当时创建的,其值为null。这就是为什么您上一个示例的输出看起来如此的原因。

使用格式运算符

另一个可能更容易理解的选项是使用格式运算符。如果您想将其临时存储在变量中,则可以使用它。

$content = "alias proxyon='0'" -f 'source "$HOMEPATH/.proxy/proxy-switch.sh on"'
add-content "$env:homepath\.proxy\TempProxy.bat" $content

或内联它会是

add-content "$env:homepath\.proxy\TempProxy.bat" ("alias proxyon='0'" -f 'source "$HOMEPATH/.proxy/proxy-switch.sh on"')

【讨论】:

谢谢!不得不稍作改动,但它奏效了。我使用了 "add-content "$env:homepath\.proxy\TempProxy.bat" "alias proxyon='source "$HOMEPATH/.proxy/proxy-switch.sh`"on'"" 代替。在第一组 '" 之后的 on 所以它给出了输出 "alias proxyon='source "$HOMEPATH/.proxy/proxy-switch.sh"on'" 我需要这样做,因为当它被输入到 GitBash 时将“On”解释为目录的一部分,而不是它所需的输入 @AdamCormack 很高兴为您提供帮助。您还可以使用格式运算符来消除对所有反引号的需要。更新了我的答案。

powershell此脚本允许您将javacryptographyextension(jce)无限强度管辖区域策略文件“安装”到嵌入式jre中(代码片段)

查看详情

Ansible 中的 Powershell 脚本

】Ansible中的Powershell脚本【英文标题】:PowershellScriptsinAnsible【发布时间】:2016-02-0909:58:20【问题描述】:我正在尝试运行一个简单的剧本来运行Powershell脚本。但它一直在失败。如果我直接在服务器上运行Powershell脚本,它就可以... 查看详情

吐出我们的随机命令问题的脚本 [Powershell]

】吐出我们的随机命令问题的脚本[Powershell]【英文标题】:Scriptthatspitsourrandomcommandproblem[Powershell]【发布时间】:2019-07-2803:27:47【问题描述】:$k=get-command-all|measure|select-objectcount$result=$k-replace"[@Count=]",""$rand=get-random-maximum$re 查看详情

如何从其他powershell脚本调用powershell脚本并且脚本是在powershell对象而不是文件中分配的

】如何从其他powershell脚本调用powershell脚本并且脚本是在powershell对象而不是文件中分配的【英文标题】:Howtocallpowershellscriptfromotherpowershellscriptandscriptisassignedinthepowershellobjectinsteadofthefile【发布时间】:2022-01-2404:32:50【问题描述... 查看详情

每月清理日志的 Powershell 脚本

】每月清理日志的Powershell脚本【英文标题】:PowershellScripttocleanuplogsonaMonthlyBasis【发布时间】:2021-01-0622:51:21【问题描述】:Powershell新手又来了一个问题。我们目前有一个存储文本文件的日志文件夹。我的主管希望我创建一个... 查看详情

在另一个 Powershell 脚本中运行一个 Powershell 脚本

】在另一个Powershell脚本中运行一个Powershell脚本【英文标题】:RunningaPowershellscriptinsideanotherPowershellscript【发布时间】:2022-01-2307:39:35【问题描述】:我和我的同事正在开发一组脚本,以与WindowsImager和ConfigurationDesigner(WICD)结合使... 查看详情

PowerShell 添加任务以使用参数运行 PowerShell 脚本

】PowerShell添加任务以使用参数运行PowerShell脚本【英文标题】:PowerShelladdTasktorunPowerShellscriptwithparameters【发布时间】:2013-05-1909:41:42【问题描述】:我正在尝试从PowerShell脚本将任务添加到任务计划程序,该脚本将运行带有参数... 查看详情

设置 Exploit Education Phoenix 中的 powershell 脚本问题

】设置ExploitEducationPhoenix中的powershell脚本问题【英文标题】:ProblemwithpowershellscriptinsetupExploitEducationPhoenix【发布时间】:2021-09-2602:49:29【问题描述】:嘿,我想开始在这个网站上做ctf:https://exploit.education/phoenix/但是我遇到了一... 查看详情

PowerShell 数组问题_

】PowerShell数组问题_【英文标题】:PowerShellarrayissue_【发布时间】:2022-01-1321:17:21【问题描述】:我一直在写一个powershell脚本来解决一个问题,脚本的实用性可能会让一些人感到困惑,但我有一个用途。脚本的目的是在临时文件... 查看详情

如何从 C# 程序运行 PowerShell 脚本?

】如何从C#程序运行PowerShell脚本?【英文标题】:HowtorunaPowerShellscriptfromaC#program?【发布时间】:2018-10-1014:18:50【问题描述】:我有一个PowerShell脚本,它接受用户输入作为用户凭据。它会提示一个窗口,要求输入用户名和密码。... 查看详情

添加第一个域用户的 PowerShell 脚本 [权限问题]

】添加第一个域用户的PowerShell脚本[权限问题]【英文标题】:PowerShellscripttoaddfirstdomainuser[permissionsissue]【发布时间】:2017-11-1409:47:15【问题描述】:我在Azure中有一个SQLServer2014VM,它是从Azure商店创建的。一旦新VM可用,我想添加... 查看详情

运行 PowerShell 脚本后如何保持 shell 窗口打开?

】运行PowerShell脚本后如何保持shell窗口打开?【英文标题】:HowtokeeptheshellwindowopenafterrunningaPowerShellscript?【发布时间】:2013-05-2007:29:10【问题描述】:我有一个非常短的PowerShell脚本,它连接到服务器并导入AD模块。我想通过双击... 查看详情

从 C# 异步运行多个 PowerShell 脚本

】从C#异步运行多个PowerShell脚本【英文标题】:AsynchronouslyrunningmultiplePowerShellscriptsfromC#【发布时间】:2021-08-1617:45:24【问题描述】:简要说明我正在尝试做的事情:我正在开发一个.NetWinForm应用程序,我试图在远程服务器上运行... 查看详情

Powershell 脚本替换 sc 配置

】Powershell脚本替换sc配置【英文标题】:Powershellscriptreplacescconfig【发布时间】:2019-11-2912:27:33【问题描述】:美好的一天,我寻找与相同的命令scconfigBITStype=own在Powershell中。我认为与set-service-nameBITS-computernameserver1234-idon´tknow我... 查看详情

运行 Azure Powershell 内联脚本

】运行AzurePowershell内联脚本【英文标题】:RunningAzurePowershellInlineScript【发布时间】:2020-01-2519:06:52【问题描述】:我有一个用于备份SQL数据库的powershell脚本。我在本地运行脚本,我在TFS发布阶段使用Powershell脚本(不是azurepowersh... 查看详情

使用 Process.Start 启动 PowerShell 脚本会关闭 PowerShell 且没有错误

】使用Process.Start启动PowerShell脚本会关闭PowerShell且没有错误【英文标题】:StartingPowerShellScriptwithProcess.StartclosesPowerShellwithnoerror【发布时间】:2021-05-2415:34:42【问题描述】:我正在用C#编写一个小应用程序,它调用各种PowerShell脚... 查看详情

Powershell 脚本 ObjectNotFoundException CommandNotFoundException 路径

】Powershell脚本ObjectNotFoundExceptionCommandNotFoundException路径【英文标题】:PowershellScriptObjectNotFoundExceptionCommandNotFoundExceptionPath【发布时间】:2017-02-2022:49:12【问题描述】:我用SNK文件签署我的Dll。通过VisualStudio构建可以毫无问题地... 查看详情

为自动执行设置 PowerShell 脚本

】为自动执行设置PowerShell脚本【英文标题】:SetupPowerShellScriptforAutomaticExecution【发布时间】:2010-09-0623:26:37【问题描述】:我想将几行PowerShell代码用作自动化脚本。我希望它能够工作的方式是能够使用以下选项之一来调用它:... 查看详情