标签: write-host

写主机并登录一行?

我是PowerShell的新手,因此可以自我学习。我的问题是,您是否可以在同一行上同时执行“写入主机”和“日志写入”操作?

我所拥有的是:

Write-Host "Node Id is $nodeProps["NodeID"]" 
LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以做到:

Write-Host, LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

感谢您提供的所有帮助!

powershell write-host

2
推荐指数
1
解决办法
1595
查看次数

在 Write-Host 中间运行命令

我有一个写主机行,我想在其中执行命令,因此输出将插入到写主机字符串的中间。

基本上我有一个 txt 文件,其中保存一组脚本的配置数据,其中一个配置是日期和时间的格式。例如,年份格式的配置为“YYYY”,并将其写入$Year。

所以我想做的是这样的:

Write-Host "The year is " Get-Date -Format $Year.ToLower()
Run Code Online (Sandbox Code Playgroud)

运行时我期望在屏幕上看到的是

The year is 2019
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以用这个逻辑声明另一个变量,然后......

Write-Host "The year is $NewVariable"
Run Code Online (Sandbox Code Playgroud)

...但我希望不要创建另一个变量。这是我的票据的一个简单的例子,所以如果我这么做的话,我会创建很多变量。请注意,我使用 .ToLower() 来补偿用户在配置文本文件中的输入。

powershell write-host

2
推荐指数
1
解决办法
2411
查看次数

Write-Host无法解析变量的属性

Write-Host似乎没有解析变量的属性,这很奇怪。

PS C:\Users\x> $v=@{item1="kkk";item2="aaa"}
PS C:\Users\x> $v.Keys|%{$v.Item($_)}
kkk
aaa
PS C:\Users\x> Write-Host "$v.Count elements"
System.Collections.Hashtable.Count elements
PS C:\Users\x> $v.Count
2
PS C:\Users\x> $v
Name                           Value
----                           -----
item1                          kkk
item2                          aaa
Run Code Online (Sandbox Code Playgroud)

您会看到,它$v是一个哈希表,

$v.Count
Run Code Online (Sandbox Code Playgroud)

打印2。但是为什么

Write-Host "$v.Count"
Run Code Online (Sandbox Code Playgroud)

打印出来System.Collections.Hashtable.Count?这不是我所期望的。

variables powershell properties write-host

1
推荐指数
1
解决办法
1296
查看次数

将 Write-Host 的输出传送到其他命令

我有这个脚本,它根据某些自助餐厅查找文件并使用 Write-Host 写入它们的路径。现在,我想通过管道传输所有这些文件路径,并对这些文件进行处理。

基本上第一个脚本是这样的:

FindFiles.ps1:
Write-Host "C:\SomeDir\file1.txt"
Write-Host "D:\OtherDir\file2.txt"
Run Code Online (Sandbox Code Playgroud)

现在我想做这样的事情:

FindFiles.ps1 | foreach { Copy-Item $_ c:\backup\ }
Run Code Online (Sandbox Code Playgroud)

但显然这是行不通的。(实际上我想做一些比复制文件夹更复杂的事情,但这是另一个问题:-))

powershell pipe write-host

1
推荐指数
1
解决办法
32
查看次数

如何写出长度取决于用户条目长度的字符串?

我正在编写一个具有大量输出的脚本,并且可以使用多个计算机名称.输出通知计算机名称,然后是有关该特定计算机的大量信息.我希望在#上面和下面有一系列s,它在每个信息部分之前宣布计算机名称,但是想知道我是否可以将#s的数量与提供的计算机名称的长度相同(s ).例如:

########
COMPNAME
########

要么

##############
LONGERCOMPNAME
##############

我宁愿不必为每种可能的情况都有一个if else,例如

if ($compname.length -eq "8") {
  Write-Host "########"
  Write-Host "$compname"
  Write-Host "########"
} elseif ($compname -eq "9") {
  Write-Host "#########"
  Write-Host "$compname"
  Write-Host "#########"
Run Code Online (Sandbox Code Playgroud)

等等.如果必须,我会,它只是那些左右的十个.或者我可以使用一定数量的#s,它们总是至少覆盖计算机名称的最大长度.

powershell if-statement count write-host

0
推荐指数
1
解决办法
51
查看次数