I don't have any experience of using symlinks on windows, but my advice for 
construction windows paths (assuming you are using ansible 2.0 or later) 
is...

1/ If you need to double quote your path names, then always use double 
backslash for the path separator

So 
win_stat: "path=E:\\folder\\link.exe"

2/ I would also advise using the 'yaml style' way of supplying module 
parameters, rather than using the key=value style, if only because 'yaml 
style' makes you put 1 parameter per line, which often means you don't need 
to use any quotes at all for hard-coded windows paths:

So like this (yaml style parameter)
win_stat:
   path: E:\folder\link.exe

Hope this helps,

Jon

On Wednesday, 16 March 2016 10:01:39 UTC, ishan jain wrote:
>
> 4) I have a file symbolic link E:\folder\link.exe pointing to an exe file 
> and this link is not actively in use by a process. So when i use
>
>  win_stat: path="E:\folder\link.exe"
>
> i get an answer that it does not exist.
>
>  "msg": {
>         "changed": false,
>         "stat": {
>             "exists": false
>         }
>     }
>
>
> But when i use:
>
>  win_stat: path="E:\\folder\\link.exe"
>
> I get a proper result.
> Probably related to the above questions, but *what is the proper syntax 
> to specify a path here ?*
>
> On Wednesday, 16 March 2016 15:26:05 UTC+5:30, ishan jain wrote:
>>
>> I am trying to gather custom facts for a windows 2012 R2 server while 
>> avoiding to write powershell scripts. win_stat is something that can 
>> apparently be very useful to me but i am getting confused about its exact 
>> behavior.
>> I have a file structure like this:
>>
>> E:\
>> E:\link1
>> E:\folder\link2
>> E:\folder\link2\some_dir\link3.jar
>>
>> Link1 and 2 are directory symbolic links and link3 is a file symbolic 
>> link and is currently active in a java process. I am trying to check if 
>> these links exists or not via this kink of script:
>>
>> ---
>> - hosts: windows
>>   tasks:
>>     - name: check symbolic links
>>       win_stat: path=E:\link1
>>       register: result
>>       ignore_errors: yes
>>       
>>     - debug: msg="{{result}}"
>>
>> I expect to check something like result.stats.attributes == ReparsePoint 
>> to see if this indeed is a symlink. But i am getting some varied results 
>> when i execute the script for the above folder structure which are listed 
>> below. I will try to mark my questions with a number.
>>
>> 1) First question, is this a good solution to check for directory n file 
>> symbolic link or is there a better one ?
>>
>> 2) Problem with the reporting of directory symbolic link
>>
>> win_stat: path=E:\link1 
>> or 
>> win_stat: path=E:\link1\  
>> or
>> win_stat: path="E:\link1"
>>
>> These statements, when the symlink is at the root level of a drive, gives 
>> me an error that this link does not exist while it is there:
>>
>>  "msg": {
>>         "changed": false,
>>         "stat": {
>>             "exists": false
>>         }
>>     }
>>
>> When i change it to:
>>
>> win_stat: path="E:\\test"
>>
>> It works perfectly fine with output:
>>
>>  "msg": {
>>         "changed": false,
>>         "stat": {
>>             "attributes": "Directory, ReparsePoint",
>>             "creationtime": 1458045768.6789002,
>>             "exists": true,
>>             "extension": "",
>>             "isdir": true,
>>             "lastaccesstime": 1458045768.6789002,
>>             "lastwritetime": 1458045768.6789002,
>>             "owner": "BUILTIN\\Administrators"
>>         }
>>     }
>>
>>
>> While the similar statements for the directory symlink inside a folder
>>
>> win_stat: path=E:\folder\link2
>> or
>> win_stat: path="E:\folder\link2"
>> or
>> win_stat: path="E:\\folder\\link2"
>> or
>> win_stat: path=E:\\folder\\link2
>> or
>> win_stat: path=E:\folder\\link2 (notice only one \\)
>>
>> They all seems to be working fine. *So what exactly is the syntax here 
>> so that it will work at all levels ?*
>>
>> 3) Problems with file symbolic links that are in use 
>>
>> For the statements:
>>
>> win_stat: path=E:\folder\link2\some_dir\link3.jar
>>
>> I get the following error because the file is actively in use:
>>
>> "msg": {
>>         "changed": false,
>>         "exception": "At 
>> C:\\Users\\Ishan\\AppData\\Local\\Temp\\ansible-tmp-1458122016.24-112690440585191\\win_stat.ps1:231
>>  
>> char:9\r\n+         $fp = [System.IO.File]::Open($path, 
>> [System.IO.Filemode]::Open, [System. ...\r\n+ 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
>>         "failed": true,
>>         "msg": "Exception calling \"Open\" with \"3\" argument(s): \"The 
>> process cannot access the file 'E:\\folder\\link2\\some_dir\\link3.jar' 
>> because it is being used by another process.\""
>>     }
>>
>>
>> *How can i make sure that the file link in use can at least be read so 
>> that i can know more about it ?*
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/2fe78980-1f7e-45d3-8c8e-82f4ad449f02%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to