小编Roo*_*oop的帖子

PowerShell中的ForEach和ForEach-Object之间的区别

有什么区别ForEachForEach-Object

我有一个像这样的小代码,工作正常

$txt = Get-Content 'C:\temp\000.txt'
$result = foreach ($line in $txt) {$line.replace(".ini","")}
$result | out-file 'c:\temp\001.txt'
Run Code Online (Sandbox Code Playgroud)

但如果我使用'ForEach-Object',我就会出错......

$txt = Get-Content 'C:\temp\000.txt'
$result = foreach-object ($line in $txt) {$line.replace(".ini","")}
$result | out-file 'c:\temp\001.txt'
Run Code Online (Sandbox Code Playgroud)

为什么?以及如何使用输出循环结果ForEach-Object

powershell

26
推荐指数
4
解决办法
4万
查看次数

在Powershell中设置默认日期格式,如yyyy-mm-dd?

一个简单而简短的问题:

如何在powershell中设置默认日期格式,如yyyy-mm-dd?所以任何日期输出都会像这种格式?

或如何在一个脚本中全局设置日期格式?

有没有办法只在没有时间的情况下输出日期?当我输出LastWriteTime时,默认为

13-03-2014 14:51

我只需要13-03-201414:51.

powershell powershell-2.0 powershell-3.0 powershell-4.0

8
推荐指数
3
解决办法
4万
查看次数

Powershell get-childitem输出格式

如何更改powershell输出的格式?
我正在运行这个:

cgi -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending >> C:\AAA\result.txt
Run Code Online (Sandbox Code Playgroud)

我得到的结果是这种格式:

Directory: K:\AppData\


Mode                LastWriteTime     Length Name                                                                                                                                                                                                  
----                -------------     ------ ----                                                                                                                                                                                                  
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart
Run Code Online (Sandbox Code Playgroud)

如何将输出格式更改为:

LastWriteTime           Name                                  Directory
-------------           ----                                  -----
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
Run Code Online (Sandbox Code Playgroud)

windows powershell powershell-2.0 powershell-3.0

7
推荐指数
2
解决办法
2万
查看次数

找出世界卫生组织对Powershell的文件进行了最后一次更改?

我为所有用户保存文件的共享网络位置.所有用户都可以完全访问此位置.

是否可以通过Powershell或任何其他方式找出WHO对文件或文件夹的最后更改?

从Powershell获取所有这些日期和所有者信息是没有问题的,但看起来没有办法找出世卫组织做出的最后修改.

有什么想法吗?

windows powershell acl

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

VBScript文件或文件夹选择

我有一个很少的vbs代码的小hta文件.它选择文件夹或文件,然后复制到固定位置.

<html>
<head>
<Title>File Copy </Title>
<style>
img.exco
{
position:absolute;
bottom:10px;
right:10px
}
</style>
<!--Put this sub here to avoid resize flickering.-->
<script language = "VBScript">
 sub DoResize
    'resize   
    window.resizeTo 690,350
    screenWidth = Document.ParentWindow.Screen.AvailWidth
    screenHeight = Document.ParentWindow.Screen.AvailHeight
    posLeft = (screenWidth - 700) / 2
    posTop = (screenHeight - 430) / 2     
    'move to centerscreen
    window.moveTo posLeft, posTop

  end sub

DoResize()
</script>

<HTA:APPLICATION ID=""
   applicationName=""
   version="1.1"
    BORDER="thin"
    BORDERSTYLE="static"
    CAPTION="Yes"
    CONTEXTMENU="no"
    ICON="C:\icon\32x32.ico"
    INNERBORDER="no"
    MAXIMIZEBUTTON="no"
    MINIMIZEBUTTON="no"
    NAVIGATABLE="no"
    SCROLL="no"
    SCROLLFLAT="no"
    SELECTION="no"
    SHOWINTASKBAR="yes"
    SINGLEINSTANCE="yes"
    SYSMENU="yes" …
Run Code Online (Sandbox Code Playgroud)

vbscript hta

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

Powershell ISE Ver 4 脚本窗格左侧?

有没有办法可以将 Powershell ISE V4 中的脚本窗格更改为左侧?

脚本窗格的默认布局是顶部或右侧。

powershell

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

Robocopy成为无限循环

我在C:\ batch中有一个robocopy批处理文件.这是批处理文件:

set LOG="C:\Log\robolog.txt"
set START1="C:\WORK"
set END1="\\fs-02\Work"

Robocopy %START1% %END1% /MIR /PURGE /SEC /SECFIX /R:1 /W:5 /V /ETA /LOG:%LOG%
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我从包含此批处理文件的位置(c:\ batch)打开cmd并从那里运行它,它只是一遍又一遍地运行它并且永远不会结束....我甚至无法终止cmd .... Ctrl+C只会加快循环.....

但如果cmd start location位于其他位置,则批处理文件将运行并完成.

知道为什么我不能直接从包含它的位置运行这个robocopy批处理文件吗?

windows batch-file batch-processing

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

Powershell 如何用逗号将多行合并为一行

我有一个很长的列表,每行 3 个字符,如下所示

K2D
K5K
D9D
ILO
K5U
T8K
Run Code Online (Sandbox Code Playgroud)

如何使用 powershell 将此列表组合成一行,用逗号分隔,如下所示

K2D, K5K, D9D, ILO, K5U, T8K

我可以在每行末尾添加逗号,如下所示,但不知道如何将它们组合成一行。

$list = get-content "list.txt"

$result = "result.txt"

$comma = foreach ($line in $list){
         $begein = ""
         $end = ","
         $begin + $line + $end
}

SET-CONTENT $result -value $comma
Run Code Online (Sandbox Code Playgroud)

powershell

4
推荐指数
2
解决办法
5845
查看次数

批处理或PowerShell:如何从字符串中获取最后一个单词?

这是我的场景:

我有一个包含很多行的文本文件.每一行都是文件夹的路径.

示例:000.txt

 C:\Program Files (x86)\Microsoft Office\Office15
 C:\Program Files (x86)\Common Files\Adobe\Acrobat
 C:\Program Files (x86)\Common Files\Blizzard Entertainment
Run Code Online (Sandbox Code Playgroud)

我需要找到一种方法来获取每行的最后一个子文件夹的名称,并使用它来创建文件夹链接:

d:\>mklink /j office15 "C:\Program Files (x86)\Microsoft Office\Office15"
d:\>mklink /j acrobat "C:\Program Files (x86)\Common Files\Adobe\Acrobat"
d:\>mklink /j "Blizzard Entertainment" "C:\Program Files (x86)\Common Files\Blizzard Entertainment"
Run Code Online (Sandbox Code Playgroud)

我试过这个:

$a="C:\Program Files (x86)\Microsoft Office\Office15"
$a.Split()[-1]
Run Code Online (Sandbox Code Playgroud)

结果如下:

Office\Office15
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

$a.Split("`t",[System.StringSplitOptions]::RemoveEmptyEntries)[-1]
Run Code Online (Sandbox Code Playgroud)

结果是:

5
Run Code Online (Sandbox Code Playgroud)

如何\使用Batch或PowerShell 获取最后一行或每个单词的最后一个单词?

string powershell batch-file powershell-2.0 batch-processing

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

将消息框发送到远程PC列表

我试图在powershell中创建一个脚本,将消息框发送到远程PC列表.但是我在本地电脑上收到了所有消息.

谁能告诉我哪里出错了?

$PCLIST = Get-Content 'C:\TEST\PCLIST.TXT'

ForEach ($computer in $PCLIST) {

Enter-PSSession -ComputerName $computer

$GetUserName = [Environment]::UserName

#$CmdMessage has to be one line
$CmdMessage = {C:\windows\system32\msg.exe $GetUserName 'Hello' $GetUserName 'This is a test!'}

Invoke-Command -Scriptblock $CmdMessage
}
Run Code Online (Sandbox Code Playgroud)

powershell

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