有什么区别ForEach和ForEach-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中设置默认日期格式,如yyyy-mm-dd?所以任何日期输出都会像这种格式?
或如何在一个脚本中全局设置日期格式?
有没有办法只在没有时间的情况下输出日期?当我输出LastWriteTime时,默认为
13-03-2014 14:51
我只需要13-03-2014但14:51.
如何更改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) 我为所有用户保存文件的共享网络位置.所有用户都可以完全访问此位置.
是否可以通过Powershell或任何其他方式找出WHO对文件或文件夹的最后更改?
从Powershell获取所有这些日期和所有者信息是没有问题的,但看起来没有办法找出世卫组织做出的最后修改.
有什么想法吗?
我有一个很少的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) 有没有办法可以将 Powershell ISE V4 中的脚本窗格更改为左侧?
脚本窗格的默认布局是顶部或右侧。
我在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批处理文件吗?
我有一个很长的列表,每行 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) 这是我的场景:
我有一个包含很多行的文本文件.每一行都是文件夹的路径.
示例: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
我试图在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)