如何从另一个 powershell 脚本逐字编写/创建 powershell 脚本?

2023-12-29

以下代码(位于底部)在文件中生成以下输出之一

4/12/2019 = (get-date).AddDays(2).ToShortDateString();
4/13/2019 = (get-date).AddDays(2 + 1).ToShortDateString();

或者如果我还没有初始化变量

 = (get-date).AddDays(2).ToShortDateString();
 = (get-date).AddDays(2 + 1).ToShortDateString();

这是代码块,我希望父 ps1 文件逐字写入子 ps1 文件。

$multiLineScript2 = @"

    $startDate2 = (get-date).AddDays($resultOfSubtraction).ToShortDateString();
    $endDate2 = (get-date).AddDays($resultOfSubtraction + 1).ToShortDateString();
"@

$multiLineScript2 | Out-File "c:\file2.ps1";

tl;dr:

创建一个verbatim多行字符串(即,一个字符串文字内容), use a 单引号这里的字符串:

$multiLineScript2 = @'

    $startDate2 = (get-date).AddDays($resultOfSubtraction).ToShortDateString();
    $endDate2 = (get-date).AddDays($resultOfSubtraction + 1).ToShortDateString();
'@

注意使用@' and '@作为分隔符。

Use a 双引号仅当此处字符串字符串扩展需要(插值); to 选择性抑制扩张,escape $字符。被包括verbatim as `$,如图所示你自己的答案 https://stackoverflow.com/a/55612497/45375.


PowerShell 中的字符串文字

Get-Help about_quoting rules https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules讨论了PowerShell 支持的字符串文字类型:

  • 为了得到一个字符串与literal content(没有插值,C# 称之为verbatim字符串),使用单引号: '...'

    • 镶嵌'字符。里面一个'...'细绳,double them ('');所有其他字符。可以按原样使用。
  • 为了得到一个可扩展的 string(字符串插值),即变量引用的字符串(例如,$var or ${var})和表达式(例如,$($var.Name)) 可以嵌入并替换为它们的值,使用双引号: "..."

    • 有选择地suppress扩张, 反引号转义$字符。;例如,为了防止$var避免在 a 内插值(扩展到其值)"..."字符串,使用`$var;要嵌入文字反引号,请使用``
    • 有关字符串扩展规则的概述,请参见这个答案 https://stackoverflow.com/a/40445998/45375.

两种基本类型也可用作这里的字符串- 在表格中@'<newline>...<newline>'@ and @"<newline>...<newline>"@分别 (<newline>代表实际的换行符(换行符)) - 其中做出定义多线弦更容易.

  • Important:
    • 后面必须没有任何内容(除了空格)opening分隔符 -@' or @"- 在同一行 - 字符串的内容必须定义在下列的 lines.
    • The closing分隔符 -'@ or "@(匹配开始分隔符)- 必须是在一行的开头.
    • Here-字符串定义in files总是使用其封闭文件的换行格式(CRLF 与 LF),而交互地定义的总是仅使用 LF。

例子:

# Single-quoted: literal:
PS> 'I am $HOME'
I am $HOME

# Double-quoted: expandable
PS> "I am $HOME"
I am C:\Users\jdoe

# Here-strings:

# Literal
PS> @'
I am
  $HOME
'@
I am
  $HOME

# Expandable
PS> @"
I am
  $HOME
"@
I am
  C:\Users\jdoe
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从另一个 powershell 脚本逐字编写/创建 powershell 脚本? 的相关文章

随机推荐

  • 从挂起的 Intent 启动的 Intent getExtra

    我试图在用户从列表中选择带有时间的内容后发出一些警报 并在给定时间为其创建通知 我的问题是广播接收器无法接收我的 Intent 上的 putExtra 的 showname 它总是得到空值 这是我大多数意图的做法 但我认为这次可能是因为pe
  • TypeScript var 与 import

    在 TypeScript 中 有什么区别 import http require http and var http require http 我看到这两种方式都在代码源中使用 它们可以互换吗 Your import语句是 TypeScri
  • Sandy-Bridge CPU规格

    我能够将有关 Sandy Bridge E 架构的一些信息整合在一起 但我并不完全确定所有参数 例如L2 缓存的大小 任何人都可以确认它们都是正确的吗 我的主要来源是64 ia 32 架构 优化 手册 pdf http www intel
  • 按需加载/卸载 ELF 部分?

    对于一个相当晦涩的用例 我想要一个 大型 静态链接的 Linux 可执行文件 由一小段控制代码和大段静态 只读 数据组成 为了节省内存 是否可以让加载器仅加载控制代码的部分 然后根据需要手动加载 RO 数据的部分 并在处理完成后再次卸载它们
  • 在四开本中使用 kable 在表格中使用 Markdown 格式

    使用 quarto 的 HMTL 输出功能 我尝试从 data frame 生成一个 kable 其中包含一些应显示在最终文档中的 Markdown 样式格式 在实际用例中 我有许多文档已经以这种方式格式化 我想重新使用这些命令来正确呈现输
  • 删除gridview选择器列

    我确信这个问题的答案是非常明显的 但是对于我来说 我无法弄清楚如何从默认的 winforms gridview 中删除 选择器 列 红色箭头所指的列 我尝试过以编程方式删除该列gridview Columns 0 Remove但这只是删除了
  • iOS 模拟器恢复位置设置

    我正在调试 gt 位置 gt 自定义位置下使用自定义位置 虽然此设置对我来说效果很好 但模拟器经常将我的设置从 自定义位置 更改为 无 此恢复似乎没有模式 因为我可能会运行同一个项目 5 或 10 次而不会恢复设置 有时 我每运行 1 或
  • 检测客户端设备是否支持 :hover 和 :focus 状态

    听起来像是一个简单的问题 但事实证明解决起来相当具有挑战性 对于某些网站 我的内容仅在用户悬停 聚焦链接时才会显示 然而 该链接本身有一个目标 如果触摸屏用户点击其中一个链接 浏览器会立即转到href地点 这意味着悬停内容永远不可见 这就是
  • 需要使用java将EMF转换为jpeg,png文件格式

    我需要使用完整的java代码将emf wmf文件格式转换为png或jpeg 因为某些浏览器不支持这些格式 任何人都可以指导我 提前致谢 最快的方法可能是使用图像魔法 http www imagemagick org 确实如此support
  • MapFragment和Camera似乎在同一个Activity中互相干扰

    我正在尝试将 Google Maps Android API v2 中的 MapFragment 与相机预览结合使用 我需要能够在相机预览和 MapFragment 之间切换 但我无法使其工作 对于相机预览 我从以下位置复制了 Camera
  • 如何将 Bash 数组的元素连接到分隔字符串中?

    如果我在 Bash 中有一个这样的数组 FOO a b c 如何用逗号连接元素 例如 生产a b c 支持多字符分隔符的 100 纯 Bash 函数是 function join by local d 1 f 2 if shift 2 th
  • 使用 shell 脚本自动传输 scp 文件

    我的 UNIX 系统上的一个目录中有 n 个文件 有没有办法编写一个 shell 脚本 通过 scp 将所有这些文件传输到指定的远程系统 我将在脚本中指定密码 这样我就不必为每个文件输入密码 使用 SSH 密钥 而不是在 shell 脚本中
  • 如何使用破折号创建 shell 变量?

    在 Linux 环境中 我想创建一个带有破折号的变量名 这是可能的 因为我可以在詹金斯中设置一个类似的名称 为此env给出输出 以及其他行 variable with dashes test 但如何直接在 shell 上做到这一点呢 正在做
  • Zend:表单验证:在干草堆错误中找不到值

    我有一个有 2 个选择的表格 根据第一个选择的值 它使用 AJAX 更新第二个选择的值 这样做会使表格无效 所以 我做了下一个改变 form this gt getAddTaskForm the form if form gt isVali
  • 如何按键对字典进行排序?

    如何按字典键对字典进行排序 输入示例 2 3 1 89 4 5 3 0 期望的输出 1 89 2 3 3 0 4 5 Note 对于 Python 3 7 请参阅这个答案 https stackoverflow com a 47017849
  • 为什么字体不可变?

    字体不可变让程序员和 GC 都感到苦恼 因为每次都需要创建一个新实例 那么为什么 Font 是不可变的引用类型呢 它简化了渲染系统的使用 如果框架允许 Font 可变 则需要检测更改 并定期修改其渲染方式 由于 Font 创建了本机资源 因
  • linq to sql中开始结束时间列表的平均时间

    我有一个清单 startTime datetime endTime datetime 并需要计算出列表中所有内容的平均时间 所以我想我需要类似的东西 long averageTime Convert ToInt64 listOfStartE
  • 如何按 Firebase 基于查询的规则中包含字符串的 orderByChild 进行过滤

    我想获取登录用户的所有朋友 这是我的数据结构 users UID1 name Pepito friends UID2 true UID4 true 我正在使用此代码获取用户 Firebase database reference child
  • Java 和 Kerberos 身份验证 krb5.conf 与 System.setProperty

    请帮我解决一个 kerberos Java 问题 我有一个简单的 Java 程序 可以使用 Kerberos 对 Windows Active Directory 进行身份验证 下面的java代码工作正常 没有任何问题并打印true pub
  • 如何从另一个 powershell 脚本逐字编写/创建 powershell 脚本?

    以下代码 位于底部 在文件中生成以下输出之一 4 12 2019 get date AddDays 2 ToShortDateString 4 13 2019 get date AddDays 2 1 ToShortDateString 或