小编lit*_*lit的帖子

创建唯一的文件名Windows批处理

我看过很多关于创建一个独特文件名的帖子,从天真的%TIME%到合理的(但不足)%RANDOM%.使用wmic os get localdatetime更好,但它仍然可以在多个CPU /核心机器上失败.在多核计算机上运行5+ shell时,以下脚本最终会失败.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /L %%i IN (0, 1, 1000) DO (
    FOR /F "usebackq" %%x IN (`wmic os get localdatetime ^| find "."`) do (set MYDATE=%%x)
    ECHO MYDATE is now !MYDATE!
    IF EXIST testuniq_!MYDATE!.txt (
        ECHO FAILED ON !MYDATE!
        GOTO TheEnd
    )
    COPY NUL >testuniq_!MYDATE!.txt
)

:TheEnd
EXIT /B 0
Run Code Online (Sandbox Code Playgroud)

有没有人有可靠的方法在shell脚本中创建一个唯一的文件名?

windows cmd batch-file

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

如何从PL/SQL调用.exe?

我已经给予以下授权以获得许可,并且调用CMD.EXE似乎工作如下面的代码示例所示.

但是,我无法获得任何输出whoami.exe.我可以看到默认目录C:\app\oramgr\product\12.1.0\dbhome_1\database\出现在JJJ.TXT文件中.但是,该JJJ_WHOAMI.TXT文件不包含任何内容.

有什么建议?

dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\WINDOWS\SYSTEM32\CMD.EXE', 'execute');
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Windows\System32\whoami.exe', 'execute');
dbms_java.grant_permission('PWATSON', 'SYS:java.lang.RuntimePermission', '*', 'writeFileDescriptor');
dbms_java.grant_permission('PWATSON', 'SYS:java.lang.RuntimePermission', '*', 'readFileDescriptor');

dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Users\pwatson', 'read, write');
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\Users\pwatson\*', 'read, write');
dbms_java.grant_permission('PWATSON', 'SYS:java.io.FilePermission', 'C:\temp', 'read');

SQL> select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c CD C:\Users\pwatson\src\java ^& ECHO ^%CD^% ^& EXIT 4') as y from dual;
         Y
----------
         4

C:\app\oramgr\product\12.1.0\dbhome_1\DATABASE
SQL> select util.RUN_CMD('C:\WINDOWS\system32\cmd.EXE /c ECHO ^%CD^% >jjj.txt ^& EXIT 7') as y from dual;
         Y
----------
         7 …
Run Code Online (Sandbox Code Playgroud)

windows oracle plsql cmd

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

为什么创建数组时需要使用前导逗号?

我想创建一个包含两个数字的数组的数组.非常直截了当.但是,如果我在第一个数组之前没有提供前导逗号,则它是不正确的.为什么需要这个领先的逗号?

PS C:\src\powershell> Get-Content .\fr-btest.ps1
$files1 = @(
@(4, 1024)
, @((7), (16))
)

$files1
$files1.GetType()
$files1.Length
$files1.Count
'========'

$files2 = @(
, @(4, 1024)
, @((7), (16))
)

$files2
$files2.GetType()
$files2.Length
$files2.Count

PS C:\src\powershell> .\fr-btest.ps1
4
1024
7
16

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
3
3
========
4
1024
7
16
True     True     Object[]                                 System.Array
2
2
Run Code Online (Sandbox Code Playgroud)

arrays powershell

8
推荐指数
2
解决办法
926
查看次数

New-SelfSignedCertificate将无法在Windows 7上运行

在Windows 7 Professional系统上,似乎无法运行New-SelfSignedCertificate.我可以在Windows 10系统上.

是的,shell是以"以管理员身份运行"启动的.

PS C:\> new-selfsignedcertificate
new-selfsignedcertificate : The term 'new-selfsignedcertificate' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that
the path is correct and try again.
At line:1 char:1
+ new-selfsignedcertificate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (new-selfsignedcertificate:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0 …
Run Code Online (Sandbox Code Playgroud)

powershell

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

Powershell中的反斜杠

为什么-split参数的字符串需要两个反斜杠,而-join参数的字符串只需要一个反斜杠?反引号是Powershell中的转义字符.角色前面的反斜杠对你有什么作用?

$path = 'C:\folder\test\unit1\testing\results\report.txt'

$path -split '\\' -notlike '*test*' -join '\'
Run Code Online (Sandbox Code Playgroud)

http://powershell.com/cs/blogs/tips/archive/2014/06/17/fun-with-path-names.aspx

windows powershell quoting

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

如何卸载旧版本的模块

系统似乎安装了两 (2) 个版本的 PowerShellGet 模块。

Script     2.2        PowerShellGet
Script     1.0.0.1    PowerShellGet
Run Code Online (Sandbox Code Playgroud)

如何卸载旧版本?该Uninstall-Module命令似乎正在2.2目录中查找。这是为什么?

>Uninstall-Module -Name 'PowerShellGet' -RequiredVersion '1.0.0.1'
PackageManagement\Uninstall-Package : No match was found for the specified search criteria and module names 'PowerShellGet'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2\PSModule.psm1:12655 char:21
+ ...        $null = PackageManagement\Uninstall-Package @PSBoundParameters
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Package], Exception
    + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage
Run Code Online (Sandbox Code Playgroud)

当我尝试指定旧版本时,它会报告新版本。

>Get-Module -FullyQualifiedName @{ModuleName="PowerShellGet";ModuleVersion="1.0.0.1"}

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     2.2        PowerShellGet                       {Find-Command, Find-DscResource, Find-Module, Find-RoleCapability...}

>($PSVersionTable.PSVersion).ToString()
5.1.14409.1018 …
Run Code Online (Sandbox Code Playgroud)

powershell

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

使用数组作为哈希表中的键

数组可以用作哈希表中的键吗?如何使用数组键引用哈希表项?

PS C:\> $h = @{}
PS C:\> $h[@(1,2)] = 'a'
PS C:\> $h

Name                           Value
----                           -----
{1, 2}                         a         # looks like the key is a hash

PS C:\> $h[@(1,2)]                       # no hash entry
PS C:\> $h.Keys                          # 
1
2
PS C:\> $h[@(1,2)] -eq 'a'
PS C:\> $h[@(1,2)] -eq 'b'
PS C:\> foreach ($key in $h.Keys) { $key.GetType() }   # this is promising

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS C:\> $PSVersionTable.PSVersion.ToString() …
Run Code Online (Sandbox Code Playgroud)

powershell

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

使用cmd获取当前用户路径变量而不使用系统路径

当我使用标准用户(也是管理员)登录时,该命令echo %PATH%返回系统路径+用户路径。如何只获取用户的路径?

例如,当我当前用户的路径是C:\ruby;C:\java\bin并且系统的路径是%SystemRoot%\system32;%SystemRoot%上面的命令返回时%SystemRoot%\system32;%SystemRoot%;C:\ruby;C:\java\bin,但我只想能够C:\ruby;C:\java\bin永久附加到用户的路径而不包含系统的路径垃圾。

我的目标是将目录附加到路径变量。setx PATH %PATH%;C:\ruby\bin我尝试使用由于系统路径而破坏了我的路径变量的命令来执行此操作。

registry cmd environment-variables

6
推荐指数
2
解决办法
4837
查看次数

是否可以在 Windows 10 上同时安装 SQLPS 和 SqlServer PowerShell 模块?

C:>$PSVersionTable.PSVersion.ToString() 5.1.18362.145

当我使用时Install-Module -Name SqlServer,它报告:

C:>Install-Module -Name SqlServer
PackageManagement\Install-Package : The following commands are already available on this system:'Decode-SqlName,Encode-SqlName,SQLSERVER:,Add-SqlAvailabilityData
base,Add-SqlAvailabilityGroupListenerStaticIp,Add-SqlFirewallRule,Backup-SqlDatabase,ConvertFrom-EncodedSqlName,ConvertTo-EncodedSqlName,Convert-UrnToPath,Disabl
e-SqlAlwaysOn,Enable-SqlAlwaysOn,Get-SqlCredential,Get-SqlDatabase,Get-SqlInstance,Get-SqlSmartAdmin,Invoke-PolicyEvaluation,Invoke-Sqlcmd,Join-SqlAvailabilityGr
Run Code Online (Sandbox Code Playgroud)

是的,这些似乎来自 SQLPS 模块。是否不可能有两 (2) 个模块具有相同的导出名称?

更新:

好的,-AllowClobber 确实避免了错误消息。但现在我似乎可以从 和 获取SqlServer命令SQLPS。

C:>获取命令-Sql

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Decode-SqlName                                     21.1.18121 SqlServer
Alias           Decode-SqlName                                     14.0       SQLPS
Alias           Encode-SqlName                                     21.1.18121 SqlServer
Alias           Encode-SqlName                                     14.0       SQLPS
Cmdlet          Add-SqlAvailabilityDatabase                        21.1.18121 SqlServer
Cmdlet          Add-SqlAvailabilityDatabase                        14.0       SQLPS
Run Code Online (Sandbox Code Playgroud)

但是,Get-Command以不同的方式使用,仅显示来自SqlServer模块的命令。

C:>Get-Command Get-Sqli*

CommandType     Name …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

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

如何删除这些别名

我正在尝试从库更新 PSFTP 模块。我使用了Remove-Module,但这三 (3) 个别名仍然存在。如何在安装当前 PSFTP 模块之前删除它们?

PS C:\src\t\ftp> Get-Command *ftp*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Move-FTPItem                                       1.6.1.2    PSFTP
Alias           Receive-FTPItem                                    1.6.1.2    PSFTP
Alias           Send-FTPItem                                       1.6.1.2    PSFTP
Function        Get-SFTPChildItem                                  2.0.2      Posh-SSH
Function        Get-SFTPContent                                    2.0.2      Posh-SSH
...

PS C:\src\t\ftp> Remove-Item -Path Alias:Move-FTPItem
Remove-Item : Cannot find path 'Alias:\Move-FTPItem' because it does not exist.
At line:1 char:1
+ Remove-Item -Path Alias:Move-FTPItem
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Alias:\Move-FTPItem:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
Run Code Online (Sandbox Code Playgroud)

附加信息

我不确定是如何 …

powershell

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