我教自己的Powershell所以我不知道它的一切.
我需要使用我输入的确切行数(数据库是预定义的)搜索数据库,它包含> 11800个条目.
你能帮我找一下这个慢的原因吗?
码:
$Dict = Get-Content "C:\Users\----\Desktop\Powershell Program\US.txt"
if($Right -ne "") {
$Comb = $Letter + $Right
$total = [int]0
$F = ""
do {
$F = $Dict | Select-Object -Index $total
if($F.Length -eq $Num) {
if($F.Chars("0") + $F.Chars("1") -eq $Comb) {
Add-Content "C:\Users\----\Desktop\Powershell Program\Results.txt" "$F"
}
}
$total++
Write-Host $total
} until([int]$total -gt [int]118619)
$total = [int]0
$F = ""
}
Run Code Online (Sandbox Code Playgroud)
如何逐行搜索/匹配处理加快这一行?我是通过多线程做的吗?如果是这样的话?
你好,我很难找到如何让这个脚本工作,我是非常新的脚本,但我很了解它,但仍然找出一些事情.
try {
Test-Connection -Computername $_ -count 1 -ErrorAction Stop
} catch {
$_.Exception.ErrorCode -eq 0x800706ba
} `
{
$err = 'Unavailable (Host Offline or Firewall)'
}
try {
Test-UserCredentials -Username testuser -Password (Read-Host -AsSecureString)
} catch {
$_.CategoryInfo.Reason -eq 'UnauthorizedAccessException'
} `
{
$err = 'Access denied (Check User Permissions)'
}
Write-Warning "$computer- $err" | Out-File -FilePath c:\temp\Folder\Errors.txt -Append
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是这个脚本来测试系统是否响应.如果为True则下一步将是测试凭据,最后一步是执行get-wmiobject查询.但是如果系统没有响应ping,那么我想捕获无法响应ping的主机名,捕获它并将其导出到txt并在凭证失败时执行相同操作.
在 powershell ISE 中工作正常,但在控制台中我得到:
术语“MainAction”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
怎么修?
function MainAction () {
$test = "123"
Write-Host $test
}
MainAction
$action = {
try {
Write-Host in action
MainAction
} catch {
Write-Host $Error
$timer.Stop()
Unregister-Event thetimer
}
}
$timer = New-Object Timers.Timer
Register-ObjectEvent -InputObject $timer -EventName elapsed `
-SourceIdentifier thetimer -Action $action -OutVariable out
$timer.Interval = 5000
$timer.AutoReset = $true
$timer.Start()
Run Code Online (Sandbox Code Playgroud)
编辑:
我发现我可以使用配置文件来存储函数定义。要创建配置文件,请使用:
New-Item -path $profile -itemType file -force
Run Code Online (Sandbox Code Playgroud)
但我仍然感兴趣为什么 powershell ISE 不需要配置文件来存储和使用Register-ObjectEvent.
我一直在尝试使用PowerShell从Microsoft Azure获取VM OS名称.
我想我非常接近解决方案,但我不知道我哪里出错了.
这是我用来获取VM详细信息的命令:
Get-AzureRmVM -ResourceGroupName TEST -Name VF-Test1 | Select OsType
Run Code Online (Sandbox Code Playgroud)
我得到的答案只是空白.
运行以下命令时:
Get-AzureRmVM -ResourceGroupName TEST -Name VF-Test1
Run Code Online (Sandbox Code Playgroud)
我获得了属于该VM的所有细节.
请原谅我的无知 - 我正在尝试编写一个powershell cmdlet,它接受用户输入并构建查询uri到API(一个强制性,3个选项) - 我有一般的想法,我需要使用哈希表的字典查询字符串和参数.
我正在努力建立 $baseurl + $querystring + '=' + $parameter + '&' + $querystring + '=' $value (if not null)
例如 https://example.com/api?param1=value¶m2=value
到目前为止 - 这是非常粗糙的,完全不起作用:
Function Get-commonURI{ #takes 4 params from user
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$value1
[Parameter(Mandatory=$false,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$value2,
[String[]]$value3,
[String[]]$value4
) #end param
}
#put the input into a paramter hash table with the query strings
$Parameters = @{
query = 'querysting1', 'querystring2', 'querystring3', 'querystring4'
values = $value1,$value2.$value2, $value4
}
uri = …Run Code Online (Sandbox Code Playgroud) 我是Powershell的新手,但我用Java和其他语言编程.
我试图将一个字符串传递给一个函数,然后让该函数返回该字符串.下面是我尝试运行的简单代码:
#funcpass.ps1
function test {
Param([string]$input)
$out = $input
return $out
}
$a = test hello world
Write-Host $a
Run Code Online (Sandbox Code Playgroud)
我希望这会传递字符串,hello world然后将字符串返回$a到要打印的变量中.相反,我的控制台返回:
PS P:\test> .\funcpass.ps1
PS P:\test>
Run Code Online (Sandbox Code Playgroud)
我遇到了某种范围错误吗?任何帮助将不胜感激.我不确定版本号是否有帮助,但这里是:
PS P:\test> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 14393 1198
Run Code Online (Sandbox Code Playgroud) 所以,我想clc在一些文件C:\Program Files (x86)。每当我尝试使用clc它们时,都会收到以下消息:
此外,每当我执行本指南中的建议时,就会发生这种情况:
- 按住 Shift 并右键单击您的远程文件夹。
- 单击“在此处打开命令窗口”。
- 进入powershell。
- 输入 clc C:\Steam\userdata\SteamID\AppID\remote\*(clc + 远程文件夹的绝对路径 + * 以影响所有文件)。
这是蒸汽错误还是我做错了什么?
编辑:用引号括起路径后,我收到此错误:
PS C:\Users\Jake> clc "C:\Program Files (x86)\Steam\userdata\96072243\440\remote\*"
clc : Access to the path 'C:\Program Files (x86)\Steam\userdata\96072243\440\remote\cfg' is denied.
At line:1 char:1
+ clc "C:\Program Files (x86)\Steam\userdata\96072243\440\remote\*"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Program File...\440\remote\cfg:String) [Clear-Content], UnauthorizedAccessException
+ FullyQualifiedErrorId : ClearContentUnauthorizedAccessError,Microsoft.PowerShell.Commands.ClearContentCommand
clc : Access to the path 'C:\Program Files (x86)\Steam\userdata\96072243\440\remote\materials' is denied.
At line:1 char:1 …Run Code Online (Sandbox Code Playgroud) powershell ×7
azure ×1
credentials ×1
function ×1
if-statement ×1
performance ×1
scope ×1
try-catch ×1