我主要使用Notepad ++进行编码.
如何将大写字母转换为小写字母,反之亦然?
我改变了powershell的颜色,现在我无法改变输入文本的颜色,总是黄色.
我改变了背景的颜色和文字的颜色
背景颜色正确更改,但在显示文本中颜色仍为黄色.
我可以做些什么来重置颜色吗?
我有一个template.txt
包含以下内容的文件:
Hello ${something}
Run Code Online (Sandbox Code Playgroud)
我想创建一个PowerShell脚本来读取文件并扩展模板中的变量,即
$something = "World"
$template = Get-Content template.txt
# replace $something in template file with current value
# of variable in script -> get Hello World
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
我使用下面的方法递归列出包含该文件夹的文件夹中的所有文件 $pattern
Get-ChildItem $targetDir -recurse | Select-String -pattern "$pattern" | group path | select name
Run Code Online (Sandbox Code Playgroud)
但它似乎都列出$pattern
了名称和内容中的文件,例如当我运行上面的内容时$pattern="SAMPLE"
:
C:\tmp\config.include
C:\tmp\README.md
C:\tmp\specs\SAMPLE.data.nuspec
C:\tmp\specs\SAMPLE.Connection.nuspec
Run Code Online (Sandbox Code Playgroud)
现在:
C:\tmp\config.include
C:\tmp\README.md
Run Code Online (Sandbox Code Playgroud)
确实包含SAMPLE关键字/文本,但我不关心,我只需要命令列出文件名而不是文件,其内容与模式匹配.我错过了什么?
基于以下答案,我也尝试过:
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | group path | select name
Run Code Online (Sandbox Code Playgroud)
和:
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | select name
Run Code Online (Sandbox Code Playgroud)
但它不会返回任何结果.
我有一个数组中的文件列表.我想枚举这些文件,并从中删除特定文件.显然我无法从数组中删除项目,所以我想使用一个ArrayList
.但以下对我不起作用:
$temp = Get-ResourceFiles
$resourceFiles = New-Object System.Collections.ArrayList($temp)
Run Code Online (Sandbox Code Playgroud)
$temp
数组在哪里.
我怎样才能做到这一点?
我想知道是否可以验证特定的AD帐户是否被锁定.
该命令Get-ADUser
不返回此参数:
-------------------------- EXAMPLE 3 -------------------------- Command Prompt: C:\PS> Get-ADUser GlenJohn -Properties * - Surname : John - Name : Glen John - UserPrincipalName : jglen - GivenName : Glen - Enabled : False - SamAccountName : GlenJohn - ObjectClass : - user SID :S-1-5-21-2889043008-4136710315-2444824263-3544 - ObjectGUID :e1418d64-096c-4cb0-b903-ebb66562d99d - DistinguishedName : CN=Glen John,OU=NorthAmerica,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM Description : ----------- Get all properties of the user with samAccountName 'GlenJohn'. --------------------------END EXAMPLE --------------------------
有没有其他方法来获取此信息?
我的Powershell(2.0)脚本包含以下代码段:
$fileName = "c:\reports\1.xlsx"
$xl = new-object -comobject excel.application
$xlFormat = [Microsoft.Office.Interop.excel.XlFileFormat]::xlWorkbookDefault
$xl.displayalerts = $false
$workbook = $xl.workbooks.open($fileName)
#Code to manipulate a worksheet
$workbook.SaveAs($fileName, $xlformat)
$xl.quit()
$error | out-file c:\reports\error.txt
Run Code Online (Sandbox Code Playgroud)
我可以在Powershell命令提示符下运行此脚本,没有任何问题.电子表格会更新,error.txt为空.但是,当我在任务计划程序中将其作为任务运行时,我会在第一行出错.
使用"1"参数调用"打开"的异常:"Microsoft Office Excel无法访问文件'C:\ reports\1.xlsx'.有几个可能的原因:文件名或路径不存在.文件正在尝试保存的工作簿与当前打开的工作簿具有相同的名称.
我使用与Powershell命令提示符中运行脚本相同的凭据运行任务.当我手动运行脚本时,它可以打开,更新和保存电子表格而不会出现任何问题.当我在任务计划程序中运行它时,它无法访问电子表格.
有问题的文件对所有用户都是可读/可写的.我已经验证我可以使用相同的凭据在Excel中打开该文件.如果我创建一个新的电子表格并将其名称作为$ filename,我会得到相同的结果.我已经确认任务管理器中没有Excel.exe实例.
奇怪的是,如果我使用get-content,我没有任何问题.另外,如果我制作新的电子表格,我没有任何问题.
$fileName = "c:\reports\1.xlsx"
$xl = get-content $spreadsheet
$xl = new-object -comobject excel.application
$xlFormat = [Microsoft.Office.Interop.excel.XlFileFormat]::xlWorkbookDefault
$xl.displayalerts = $false
# Commented out $workbook = $xl.workbooks.open($fileName)
$workbook = $xl.workbooks.add()
#Code to manipulate a worksheet
$workbook.SaveAs($fileName, $xlformat)
$xl.quit()
$error | out-file c:\reports\error.txt
Run Code Online (Sandbox Code Playgroud)
这很好.因此Get-ChildItem可以毫无问题地打开文件.如果我手动运行它,ComObject可以打开该文件,但如果它作为任务运行则不能.
我不知所措.有任何想法吗?
请考虑以下here-string,我试图使用模板进行Nagios定义.
$blankDefinition = @"
define host{
use windows-server ; Inherit default values from a template
host_name {0} ; The name we're giving to this host
alias {0} ; A longer name associated with the host
address {1} ; IP address of the host
}
"@
Run Code Online (Sandbox Code Playgroud)
我有一个脚本可以确定哪些服务器不在nagois中.因为它循环我试图让它为我吐出一个定义,以便我可以复制并粘贴到我的Nagios配置中.
$comparison | %{
$blankDefinition -f $($_.serverName),$($_.ipAddress)
}
Run Code Online (Sandbox Code Playgroud)
哪个让我知道以下错误:
Error formatting a string: Input string was not in a correct format..
Run Code Online (Sandbox Code Playgroud)
像这样的东西工作得很好
@"
Testing
One
{0}
Three
"@ -f "Twelve"
Run Code Online (Sandbox Code Playgroud)
所以我发现它是因为其他花括号.有没有一种方法可以使用-f格式化我的字符串,同时保留括号?或者我只能使用变量替换?
我正在使用PSVersion 2.0
,我想知道是否有相当于traceroute
它?
我知道PowerShell v4
有没有Test-NetConnection cmdlet做tracert但v2 ?! 可以这样做:
Test-NetConnection "IPaddress/HOSTaname" -TraceRoute
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试创建一个脚本,我将在文件服务器中搜索非继承权限.因此,我遇到了文件名的260个字符限制.我看到的一个建议,我认为会有所帮助,有几次是创建一些非持久性PS驱动器,并且可以查询这些驱动程序.
问题是,当我使用Get-ChildItem
新PS驱动器时,它返回具有完整网络路径的对象而不使用我指定的名称.
# Cycle the folders
Get-ChildItem $rootPath -Directory | select -first 1 | ForEach-Object{
$target = $_
# Create a PS Drive for each sub directory and get all the folders
[void](New-PSDrive -Name $target.Name -PSProvider FileSystem $target.FullName)
# Get the file objects.
Get-ChildItem "$($target.Name):\" -Recurse
}
Run Code Online (Sandbox Code Playgroud)
我相信如果我用驱动器号创建了一些合适的持久性网络驱动器,我就不会遇到这个问题.
希望我只是没有错过它,但Technet for New-PSDrive并不是100%清楚这个场景.
我正在寻找一种方法来制作ps-drive并引用文件夹,同时返回相对于新驱动器名称的路径.考虑我制作的psdrive(G :)然后我的一个映射网络驱动器(M :)的输出.
PS M:\> Get-ChildItem G:\
Directory: \\server01\COMMON\Folder
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 6/18/2011 8:14 AM Folder 1 …
Run Code Online (Sandbox Code Playgroud) powershell ×9
colors ×1
com ×1
excel ×1
formatting ×1
notepad++ ×1
string ×1
traceroute ×1
variables ×1